gpt4 book ai didi

matlab - 错误消息 Mex 文件 Matlab

转载 作者:行者123 更新时间:2023-12-02 04:49:13 26 4
gpt4 key购买 nike

有人遇到过此错误消息吗:

“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 文件,其中我刚刚编写了函数的声明:

函数 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".

最佳答案

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

您需要做的是mexc文件amortiss.c来创建一个mex文件amortiss.mexw32(扩展名根据您的架构而有所不同。使用 mexext 找出您应该寻找的扩展。

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

>> mex -setup

系统将指示您从安装在您的计算机上并被 Matlab 识别的编译器中进行选择。

一旦设置了 mex 编译器,您就可以继续 mex c 文件

>> mex -O -largeArrayDims amortiss.c

然后您将拥有一个 mex 文件 amortiss.mexXXX(其中“XXX”取决于您的架构)。
您可以像任何其他函数一样调用该函数

>> c = amortiss( a, b );

关于matlab - 错误消息 Mex 文件 Matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16747918/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com