#include "mex.h"
#include "string.h"
void mexFunction( int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
{
double out, out_1, out_2;
out_1 = mxGetScalar(prhs[0]);
out_2 = mxGetScalar(prhs[1]);
out= out_1+out_2;
mexPrintf("%f\n ", out);
return;
}
我写了这个函数来对两个数字求和。它奏效了。
mex input_4.c INPUT_4(1,2) 3.000000
但它在命令窗口中将此输出值分配给变量时表示错误。例如
B = INPUT_4(1,2); 3.000000在调用“input_4”期间未分配一个或多个输出参数。 为什么不将b的值赋值给b。 任何人都可以帮我这意味着什么? 提前谢谢
答案 0 :(得分:0)
我认为这是因为你的函数返回类型是void
。它没有返回任何东西。您看到的输出是由printf
打印的,您的函数没有返回它。
尝试返回您计算的值。
答案 1 :(得分:0)
您目前没有分配MATLAB将识别的任何输出。您需要将输出分配给plhs
。我就是这样做的:
void mexFunction( int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
{
double out, out_1, out_2;
out_1 = mxGetScalar(prhs[0]);
out_2 = mxGetScalar(prhs[1]);
out= out_1+out_2;
if (nlhs == 1)
plhs[0] = mxCreateDoubleScalar(out);
else if (nlhs > 1)
mexErrMsgIdAndTxt("mexFile:tooManyOutputs", "Too many outputs!");
else
mexPrintf("%f\n ", out);
return;
}