我在MATLAB中编写了一个代码来添加两个数字。代码如下:
function [z] = addition(x,y)
z=x+y;
end
我在C中编写了另一个代码来调用这个添加函数。代码如下:
#include "mex.h"
void mexFunction (int nlhs, mxArray* plhs[],
int nrhs, const mxArray* prhs[])
{
mxArray *a,*b,*c;
a=mxCreateDoubleMatrix(1, 1, mxREAL);
b=mxCreateDoubleMatrix(1, 1, mxREAL);
a=1;
b=1;
mexCallMATLAB(1,&c, 2, &b, &a, "addition");
mexCallMATLAB(0,NULL,1, &c, "disp");
mxDestroyArray(a);
mxDestroyArray(b);
return;
}
请告诉我为什么它不工作??? 感谢
答案 0 :(得分:2)
代码有几个问题:
a
和b
分配值的方式不正确。mexCallMATLAB
的方式也不正确这是我的实施:
#include "mex.h"
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
mxArray *in[2], *out[1];
in[0] = mxCreateDoubleScalar(5);
in[1] = mxCreateDoubleScalar(4);
mexCallMATLAB(1, out, 2, in, "addition");
mexCallMATLAB(0, NULL, 1, out, "disp");
mxDestroyArray(in[0]);
mxDestroyArray(in[1]);
mxDestroyArray(out[0]);
}
这基本上等同于在MATLAB中调用disp(addition(5,4))