ubuntu c c 中呼叫matlab函式

2021-08-04 07:50:15 字數 2195 閱讀 5125

ubuntu12.04下的matlab安裝請參照:

1.編寫mysin.m

[cpp]view plain

copy

function z = mysin(x)   

z = sin(x);   

end  

2.編譯libmysin.so

在matlab中開啟mysin.m檔案所在的路徑,然後在matlab命令列中輸入如下命令:

[cpp]view plain

copy

mcc -w cpplib:libmysin -t link:lib mysin -c  

其中libmysin指的是生成的動態鏈結庫的名字,mysin是matlab檔名。

3.編寫cpp檔案呼叫mysin,檔名為mainsin.cpp,和mysin.m在同一路徑下

[cpp]view plain

copy

#include "mclmcrrt.h"

#include "mclmcr.h"

#include "mclcppclass.h"

#include "matrix.h"

#include 

#include "libmysin.h"

int main(void)     

// 為變數分配記憶體空間,可以查幫助mwarray   

mwarray mwa(1, 1, mxdouble_class); // 1,1表示矩陣的大小(所有maltab只有一種變數,就是矩陣,為了和cpp變數接軌,設定成1*1的矩陣,mxdouble_class表示變數的精度)   

mwarray mwb(1, 1, mxdouble_class);       

mwa.setdata(&a, 1);        

// using mysin,呼叫我們自己寫的函式   

mysin(1, mwb, mwa);     

// get data

b = mwb.get(1, 1);     

printf("sin %f is %f\n",a, b);     

// 後面是一些終止呼叫的程式   

// terminate the lib   

libmysinterminate();     

// terminate mcr   

return 0;     

}    

4.編寫makefile

[cpp]view plain

copy

libpath = -l/home/zk/matlab_test/mysin -l/usr/local/matlab/r2013b/runtime/glnxa64 -lmwmclmcrrt -lmysin  

includepath = -i/usr/local/matlab/r2013b/extern/include/  

ld_library_path = /home/zk/matlab_test/mysin:/usr/local/matlab/r2013b/runtime/glnxa64:$ld_library_path  

export ld_library_path  

mainsin.o:mainsin.cpp  

g++ -c mainsin.cpp $(includepath)  

clean:  

rm -f *.o  

libpath 中:

[cpp]view plain

copy

/home/zk/matlab_test/mysi  

是我mysin.m檔案所在的路徑,編譯的libmysin.so動態庫所在的位置

[cpp]view plain

copy

/usr/local/matlab/r2013b/runtime/glnxa64  

是我電腦中matlab安裝的路徑,matlab動態庫所在的位置

includepath也是matlab安裝的路徑,matlab標頭檔案所在的位置。

5.在終端執行make命令就可以看到結果啦

[cpp]view plain

copy

Windows下呼叫caffe的matlab介面

在我的這篇部落格windows caffe配置已經說了怎麼編譯了,這裡就略過了。編譯成功後,會得到如下圖所示檔案 matlab介面就在matcaffe資料夾裡。進入如下圖所示目錄,如果生成了caffe mexw64檔案,則說明matlab介面編譯成功了。1.先在系統環境變數 path 裡新增 d c...

模型化開發過程中要基本掌握的Matl

基於模型設計其實是一種設計方法,當然建模的軟體以及 生成工具也不是只有matlab simulink這一種,比如還有labview 以及etas公司的ascet等等。當然前者由於需要特定板卡支援,而且系統移植性不好,在基於模型的設計中用的較少,更多的被用於測試領域 後者一般用於汽車行業,其實更多的用...

微弱訊號檢測中四種降噪濾波方法的matlab實現

用matlab實現4種濾波降噪處理演算法,訊號為正弦訊號疊加上白雜訊,引數可自主定製。matlab clear all clc fs 300 time 128 t 0 1 fs time f1 1 t1 1 f1 y1 sin 2 pi f1 t figure plot t,y1 axis 0 4 ...