1)給計算機新增系統變數path: c:\programfiles\matlab\r2014b\bin\win64,新增完成之後重新啟動計算機。(一定要重新啟動很重要)
2)新建乙個c++工程,新增x64屬性(很重要,應為matlab是64位的)
3)屬性管理器 -> 右鍵 -> 屬性 ->配置屬性 ->vc++目錄 ->包含目錄
新增:c:\programfiles\matlab\r2014b\extern\include
庫目錄新增:c:\program files\matlab\r2014b\extern\lib\win64
c:\programfiles\matlab\r2014b\extern\lib\win64\microsoft
聯結器->輸入:新增:libmx.lib、libmex.lib、libeng.lib
4)特別注意:在matlab中呼叫出來的命令視窗中不知顯示任何資訊,例如:engevalstring(ep,"randn;"),只會在後台執行,不會將結果在命令視窗中顯示。
matlab語法一定要符合規範,特別注意c語言中語句出現空格可以不影響語句的執行,matlab語句中不能夠出現空格,必須要規範。
另外注意matlab中執行的所有資料全部都是矩陣。
5)測試程式如下:
例0:小試牛刀,在c++中呼叫matlab繪圖
例1:使用engputvariable函式向matlab引擎傳送資料
例2:使用enggetvariable函式從matlab引擎中獲取資料:
特別注意:獲取資料的指標按照每一列讀取(不是按照行進行讀取的)
例3:向matlab引擎傳入資料,然後從matlab引擎中獲取3資料的計算結果:
特別注意:傳入的資料在matlab資料矩陣中都是按照列的方式排列的(讀取資料也是按照列的方式,而不是按照行)
重點:
下列**:
double t=; //
定義乙個一維陣列
mxarray *t=mxcreatedoublematrix ( 2, 5,mxreal); //
建立乙個2行
5列的矩陣
memcpy ( (void*) mxgetpr ( t ) ,( void *)t ,sizeof( t )); //
給矩陣賦值
然而,在矩陣中,結果是這樣的:t矩陣
1 35 7
9 24 6
8 10
按照列進行賦值。
同樣,下面的**:
engevalstring (ep ,」d=t.*^2;」); //
執行matlab指令
mxarray *result =enggetvariable( ep ,」d」); //
從引擎獲取矩陣
double *p =mxgetpr ( result); //p
指標指向矩陣的第乙個元素 p
指標的指向順序為:
1 p
9 p+2
25 p+4
49 p+6
81 p+8
4 p+1
16 p+3
36 p+5
64 p+7
100 p+9
若想輸出
t[5]
的計算結果,則為以下**:
cout << *(p+5)<
VS2013呼叫MATLAB內建函式
在用c寫程式時,有時會遇到數值計算問題,如矩陣的計算 優化問題 解微分方程等等。這些數值計算問題如果自己來實現的話,一來太費時間,二來自己的實現方案效率未必高。所以遇到這些數值計算問題時可以先上網搜一下,看看有沒有現成的模組 當然要可靠 另一種解決方法就是依靠matlab了。用過matlab 的人都...
matlab2016a配置vs2013編譯器
前兩天因為編譯matconvnet20版本需要用到cuda7.5,於是在自己電腦上安裝了vs2013,系統是win10.結果安裝完成,編譯一直提醒使用vs的版本不合適,支支援10,11,12,13版本。上網搜查找到乙個靠譜的解決方法 有很重要的一點就是在matlab中查詢編譯器命令是 mex set...
Matlab 2 數值資料
2.浮點型 3.復型 二 數值資料的輸出格式 三 常用的數學函式 無符號整數 無符號8位整數 0 2 8 1 00000000 11111111 無符號16位整數 0 2 16 1 無符號32位整數 0 2 32 1 無符號64位整數 0 2 64 1 帶符號整數 最高位 即最左為符號位,0正1負 ...