关于Matlab和C函数的问题(我不是Matlab的专家):
我有一个有效的matlab代码(从互联网上下载) 函数'foo':
[output] = foo(input)
现在,这个函数'foo'在'C'文件(foo.c)中定义,然后将其编译为Matlab的库(foo.mexa64)。 看看foo.c,我可以看到有两个功能:
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
void foo(double* out, double* in);
据我所知,mexFunction()
为输入和输出分配指针,并用Matlab代码中的适当数据填充它们。
我的问题是:如果Matlab多次调用foo
,每次调用mexFunction()
还是第一次调用它?
答案 0 :(得分:2)
每次调用foo
时都会调用它; MEX功能的输入通常是不同的,因此,需要通过MEX功能重新计算所需的输出。
答案 1 :(得分:1)
mexFunction
被称为MATLAB - foo
被调用的时间。
这就是mex界面的工作原理:
每次调用函数时,你给MATLAB一个mex文件,MATLAB只调用这个库中的mexFunction
。
基本上,MATLAB不关心库中的任何其他内容。
如果您只想调用foo
的C版本,您可能需要查看loadlibrary
的文档及其中引用的函数。