VS2013呼叫MATLAB 2014計算引擎

2021-08-14 17:41:24 字數 2051 閱讀 6113

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負 ...