❶ matlab調用c程序
那你可以用C寫一個mex文件,然後MATLAB就可以調用了。注意門關子程序的聲明;舉例如下,做一個用C寫的加法程序,用matlab來調用:#include"mex.h"
voidadd(double*result,double*input1,double*input2){
*result=*input1+*input2;}
voidmexFunction(intnlhs,mxArray*plhs[],
intnrhs,constmxArray*prhs[]) { double*in1,*in2,*res; if(nrhs!=2)
{
mexErrMsgTxt("Twoinputargumentsrequired."); }
elseif(nlhs1)
{
mexErrMsgTxt("Toomanyoutputarguments."); } plhs[0]=mxCreateDoubleMatrix(1,1,mxREAL);//éê??ê?3?2?êy????
//??ê?è?ê?3?2?êy????μ?ààDí×?ò???±??? res=mxGetPr(plhs[0]); in1=mxGetPr(prhs[0]); in2=mxGetPr(prhs[1]);
add(res,in1,in2);}
❷ 需要把MATLAB中的BP神經網路工具箱與自己的一個軟體項目結合
這個就是C++與matlab混合編程。但是神經網路工具箱比較特別,它反盜用比較嚴厲。採用回傳統的混答編方式,可以調用matlab自己的函數,但無法成功調用神經網路工具箱。這一點在mathwork網站上也做了說明。
以C#為例,一般混編有四種方式:
(1)利用Matlab自身編譯器,目的是將m文件轉換為c或c++的源代碼。
(2)利用COM或.NET組件技術。通過MATLAB中的Deploy tool工具將m文件編譯成dll,然後在系統中調用。
(3)利用Mideva平台。沒嘗試過。
(4)利用MATLAB引擎技術。該方法相當於在.NET中運行MATLAB程序,獲取其結果。優點是操作簡單,過程簡易。缺點是需要安裝Matlab軟體。
如果要調用神經網路工具箱,只有使用第四種方法,即引擎技術,其他方法都不可行。這種混編方式僅僅傳遞參數,因此不涉及到神經網路工具箱的代碼,也就沒有了防盜用限制。