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