这意味着“在调用”input_4“期间未分配一个或多个输出参数?

时间:2014-02-17 12:50:54

标签: c mex

#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。     任何人都可以帮我这意味着什么?     提前谢谢

  

2 个答案:

答案 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;
 }