❶ 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软件。
如果要调用神经网络工具箱,只有使用第四种方法,即引擎技术,其他方法都不可行。这种混编方式仅仅传递参数,因此不涉及到神经网络工具箱的代码,也就没有了防盗用限制。