【发布时间】:2014-01-06 23:29:22
【问题描述】:
我在 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;
}
请告诉我为什么它不起作用??? 谢谢
【问题讨论】:
-
错误信息是什么?
-
你的代码有这行'mexCallMATLAB(1,&c, 2, &b, &a, "addition");'。 mexCallMATLAB 应该有一个输入指针数组,而不是 2 个单独的输入指针。
-
是的,并且您必须先获取指向
mxArray(mxGetPr/mxGetData) 的数据的指针,然后才能为其赋值。由于您正在处理标量,因此您可以像下面那样使用mxCreateDoubleScalar。