📄 vc调用matlab.txt
字号:
目前在7.1.0和7.0.0版本上运行正确。还有其他的版本等待尝试,有的不成功
过程:
将m文件放到 \\MATLAB6p5\work\ 目录下即可。
1.
本程序加入了matlab和openCV的库,所以
在Visual Studio的Tools->Options->Directories中设置include files和library files为库文件夹所在的路径:
例如D:\MATLAB6P5\EXTERN\INCLUDE
D:\MATLAB6P5\EXTERN\LIB\WIN32\MICROSOFT\MSVC60
F:\RECENTWORK\OPENCV\LIB
D:\program\Matlab\EXTERN\INCLUDE
D:\program\Matlab\EXTERN\LIB\WIN32\MICROSOFT\MSVC60
最好直接复制
2.
将libmx.lib libmex.lib libeng.lib libmat.lib 四个库文件添加到
vc的库文件夹下:D:\program\visual C++\VC98\Lib
修改动态连接库:link->修改一下
每次调用时必须先关闭Matlab Command Window
3.将需要调用的matlab文件放到work目录下
(是否有其他办法,但是目前只有这种办法)
/*不是必须的,黄轩工程专用
附录(openCV用法):
LIB和BIN文件夹中已包含了CIP函数库2.1的内容。
拷贝LIB文件夹(.h,.lib)到工程中,将BIN文件夹中的dll文件拷贝到exe文件所在目录
在Visual Studio的Tools->Options->Directories中设置include files和library files为库文件夹所在的路径。
在Project->Settings->Link中的Object/Library modules加入:
cv.lib highgui.lib cxcore.lib tiff.lib satimg.lib
在程序文件开头加入 #include "satimg.h"
*/
vc调用matlab例子:
matlab文件格式
function [PSNR,Q,SVD,SSIM] = Evalue(orgfile,profile) %orifile='lena.bmp' 含单引号
matlab读写
I=imread('lena.bmp')
imwrite(I,profile);
c语言编写格式
头文件中包括
#include "engine.h"
Engine *ep; //定义Matlab引擎变量
添加lib文件
libmx.lib libmex.lib libeng.lib libmat.lib
OnInitDialog()
{
if (!(ep=engOpen("\0"))) //打开Matlab引擎
{
fprintf(stderr, "\n Matlab引擎启动失败!\n");
MessageBox("Matlab引擎启动失败!","Matlab引擎 ",
MB_OK |MB_ICONERROR);
exit(-1);
}
engSetVisible(ep,1); //隐藏引擎
}
CImageEvaluationDlg::~CImageEvaluationDlg() //析构函数
{
engClose(ep); //关闭引擎
}
engEvalString(ep, "[SNR,PSNR,Q]=measure('"+orgfile+"','"+profile+"')");//执行命令
注意:如果orgfile字符串中有'会有匹配错误,如F:\others'work\....会出错
编程注意:
1.#include"engine.h"
2. Engine *ep; //定义引擎
//要开启引擎
mxArray *T=NULL;
mxDestroyArray(T);//调用完后要销毁存储变量
engEvalString(ep,"close");//关闭
3.mxSetName();函数不可用
每次调用时必须先关闭Matlab Command Window
4.调试时复数要分成2次读出来。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -