将MATLAB的变量数据导入到VC中的方法!

欢迎大家加入图像识别技术交流群:271891601,另外,特别欢迎成都从事图像识别工作的朋友交流,我的QQ号2487872782
-----------------------------------------------
最开始,我想在VC中直接调用MATLAB-Workspace中的变量,即通过混合编程的方式来实现将MATLAB的变量数据导入到VC中,如果以后还需要这种方法,可以参考以下资料:
http://www.tuicool.com/articles/eQBrQva
http://blog.sina.com.cn/s/blog_67d069a90100q37c.html
这种方法要求先在VC中添加“include”文件,并加一些库文件~
详细的配置可以参考这个word文档 链接:http://pan.baidu.com/s/1gfdeVLp 密码:5tg5
第一个链接中的例程我是实现了的,然而运用到自己的程序中就完全不行了,而且这种混合编程,MATLAB只会出来一个控制台,workspace、windows之类的窗口完全没有,操作起来很不方便,所以以后不得实在没得办法,不要用混合编程。
当然,让我坚定不用跨平台、跨语言的方法还是我在网上看到以下这段文字:
不要做A语言代码修改为B语言代码的无用功。
也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。
只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。
即可很方便地让A、B两种语言之间协调工作。
比如:
A将请求数据写到文件a.txt,写完后改名为aa.txt
B发现aa.txt存在时,读取其内容,调用相应功能,将结果写到文件b.txt,写完后删除aa.txt,改名为bb.txt
A发现bb.txt存在时,读取其内容,读完后删除bb.txt
以上A可以替换为任何一种开发语言或开发环境,B可以替换为任何一种与A不同的开发语言或开发环境。
除非A或B不支持判断文件是否存在、文件读写和文件更名。
但是谁又能举出不支持判断文件是否存在、文件读写和文件更名的开发语言或开发环境呢?
“跨语言、跨机,跨操作系统,跨硬件平台,跨国,跨*.*的”苦海无边,
回头是“使用共享纯文本文件进行信息交流”的岸!
所以可见,一般来说,最好的方法还是把MATLAB的变量输出到txt文件中,然后再让VC去调这个txt文件,下面具体说下我这次的做法。具体的代码如下:
clear all;
a=[1,2,3;4,5,6;7,8,9];
fid=fopen('C:\Users\Administrator\Documents\MATLAB\write_data.txt','w+');
fprintf(fid,'%g ',a);
fclose(fid);


上面的代码中我要说明下w和w+的区别,如下:
w+是打开文件以文本格式写入。
”w“是打开文件用户写入,一般缺省时以二进制格式写入。
wt是w最明显的区别是对于\n 前者没有效果,不会换行,而后者会。没有换行,没有空格,肯定不是我们想要的,所以我们要写为w+

运行上面的程序后,我们发现生成的write_data.txt中的结果为:
1 4 7 2 5 8 3 6 9 
我们发现,MATLAB是按列向量输出矩阵数据的,这显然不是我们需要的行向量,我们需要的是1 2 3 4 5 6 7 8 9
怎么办呢?
其实很简单,把a转置一下不就行了,修改程序如下:
clear all;
a=[1,2,3;4,5,6;7,8,9];
a=a';
fid=fopen('C:\Users\Administrator\Documents\MATLAB\write_data.txt','w+');
fprintf(fid,'%g ',a);
fclose(fid);


上面这段程序的输出结果就是 1 2 3 4 5 6 7 8 9 

接下来,就是把这个包含变量数据的write_data.txt引入到VC中,方法如下:
1 修改write_data.txt的后缀名为write_data.h
2 将write_data.h放入VC的某个include路径下
3 在cpp文件包含头文件的地方写上<write_data.h>这句语句
4 修改write_data.h的内容为 int[9] a={1 2 3 4 5 6 7 8 9 };或char[9] a={1 2 3 4 5 6 7 8 9 };等...反正要定义成什么类型和变量名取什么完全看自己的需要!
5 在程序中引用数组a即可
-----------------------------------------------
欢迎大家加入图像识别技术交流群:271891601,另外,特别欢迎成都从事图像识别工作的朋友交流,我的QQ号2487872782

你可能感兴趣的:(C++,matlab,opencv)