?? 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
修改動態(tài)連接庫:link->修改一下
每次調用時必須先關閉Matlab Command Window
3.將需要調用的matlab文件放到work目錄下
(是否有其他辦法,但是目前只有這種辦法)
/*不是必須的,黃軒工程專用
附錄(openCV用法):
LIB和BIN文件夾中已包含了CIP函數(shù)庫2.1的內(nèi)容。
拷貝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() //析構函數(shù)
{
engClose(ep); //關閉引擎
}
engEvalString(ep, "[SNR,PSNR,Q]=measure('"+orgfile+"','"+profile+"')");//執(zhí)行命令
注意:如果orgfile字符串中有'會有匹配錯誤,如F:\others'work\....會出錯
編程注意:
1.#include"engine.h"
2. Engine *ep; //定義引擎
//要開啟引擎
mxArray *T=NULL;
mxDestroyArray(T);//調用完后要銷毀存儲變量
engEvalString(ep,"close");//關閉
3.mxSetName();函數(shù)不可用
每次調用時必須先關閉Matlab Command Window
4.調試時復數(shù)要分成2次讀出來。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -