错误消息Mex文件Matlab

时间:2013-05-25 08:47:03

标签: matlab mex

在此错误消息之前是否有任何人:

未定义的函数或方法'函数名'用于输入“double”类型的参数。

编译mex文件时,我始终会收到此错误消息。我已经检查了很好的路径,它似乎是正确的。

这是我的代码,mex文件是amortiss.c

#include "mex.h"

/* The computational functions */
void arrayquotient(double input1, double input2, double output1)
{

   output1=input1/input2;

}


/* The gateway function */
void mexFunction( int nlhs, mxArray *plhs[],
                  int nrhs, const mxArray *prhs[])
{
/* variable declarations here */
    double input1;      /* input scalar 1 */
    double input2;       /* input scalar 2*/
    double output1;      /* output scalar 1 */   

/* code here */
    /* get the value of the scalar input1  */
   input1 = mxGetScalar(prhs[0]);

/* get the value of the scalar input2 */
   input2 = mxGetScalar(prhs[1]);

/* get the value of the scalar input3 */
   input3 = mxGetScalar(prhs[2]);

/* create the output scalar1 */
    plhs[0] = mxCreateDoubleScalar(input1/input2);

/* get the value of the scalar output1 */
   output1 = mxGetScalar(plhs[0]);

/* call the computational routines */
arrayquotient(input1,input2,output1);
}

我添加了路径(命令添加路径)以确保mex文件amortiss.c存在。然后我创建了一个名为arrayquotient.m的.m文件,其中我刚写了我的函数声明:

function c = arrayquotient(a,b)

但是,在编译时,会出现另一条错误消息:

Error in ==> arrayquotient at 1
function c=arrayquotient(a,b)

??? Output argument "c" (and maybe others) not assigned during call to
"C:\Users\hp\Documents\MATLAB\codes_Rihab\arrayquotient.m>arrayquotient".

1 个答案:

答案 0 :(得分:1)

函数amortiss.c是一个c文件,不能由Matlab按原样执行 您创建的文件arrayquotient.m是一个空函数,不会为其输出c赋值。

您需要做的是 mex c文件amortiss.c以创建一个mex文件amortiss.mexw32(扩展名根据您的体系结构而有所不同。使用{{1找出你应该寻找的扩展名。)

在matlab中,设置你的mex编译器:

mexext

您将被指示从编译器中选择安装您的机器并由Matlab识别。

设置mex编译器后,您可以继续使用c-file

>> mex -setup

然后你会有一个mex文件>> mex -O -largeArrayDims amortiss.c ('XXX'取决于你的架构)。
您可以像任何其他功能一样使用该功能

amortiss.mexXXX