matlab调用C程序
Matlab是矩陣語言,如果運算可以用矩陣實現,其運算速度非常快。但若運算中涉及到大量循環,Matlab的速度令人難以忍受的。當必須使用for循環且找不到對應的矩陣運算來等效時,可以把耗時長的函數用c語言實現,并編譯成mex函數可以加快執行速度。Mex文件其實是一種動態鏈接庫,舊版本Matlab可以直接調用.dll,新版本要調用.mexw32或.mexw64文件。
Matlab本身是不帶c語言的編譯器的,所以要求你的機器上已經安裝有VC,BC或Watcom C中的一種。如果你在安裝Matlab時已經設置過編譯器,那么現在你應該就可以使用mex命令來編譯c語言的程序了。如果當時沒有選,就在Matlab里鍵入mex -setup,下面只要根據提示一步步設置就可以了。
測試程序如下(程序存為hello.c):
//hello.c #include "mex.h" void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { int i; i=mxGetScalar(prhs[0]); if(i==1) mexPrintf("hello,world!/n"); else mexPrintf("大家好!/n"); }將當前的工作文件夾設為程序存儲的位置,在命令窗口中輸入
mex hello.c正常的話會顯示:
使用 'Microsoft Visual C++ 2010 (C)' 編譯。 MEX 已成功完成。這時會生成hello.mexw64,該文件實現所需功能。
此時輸入hello(0)將會打印hello,world!
輸入hello(1)將會打印大家好!
整個程序由一個接口子過程 mexFunction構成。
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
前面提到過,Matlab的mex函數有一定的接口規范,就是指這
nlhs:輸出參數數目
plhs:指向輸出參數的指針
nrhs:輸入參數數目
參考:http://www.cnblogs.com/tjulxh/archive/2012/04/23/2467087.html
總結
以上是生活随笔為你收集整理的matlab调用C程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 何小鹏称推迟盈利目标 要拿下全智能汽车
- 下一篇: matlab 7.9.0 帮助翻译--s