Matlab mexFunction():它被调用的次数和次数是多少?

时间:2014-01-21 13:26:26

标签: matlab mex

关于Matlab和C函数的问题(我不是Matlab的专家):

我有一个有效的matlab代码(从互联网上下载) 函数'foo':

[output] = foo(input)

现在,这个函数'foo'在'C'文件(foo.c)中定义,然后将其编译为Matlab的库(foo.mexa64)。 看看foo.c,我可以看到有两个功能:

  1. void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
  2. void foo(double* out, double* in);
  3. 据我所知,mexFunction()为输入和输出分配指针,并用Matlab代码中的适当数据填充它们。

    我的问题是:如果Matlab多次调用foo,每次调用mexFunction()还是第一次调用它?

2 个答案:

答案 0 :(得分:2)

每次调用foo时都会调用它; MEX功能的输入通常是不同的,因此,需要通过MEX功能重新计算所需的输出。

答案 1 :(得分:1)

mexFunction被称为MATLAB - foo被调用的时间。

这就是mex界面的工作原理:

每次调用函数时,你给MATLAB一个mex文件,MATLAB只调用这个库中的mexFunction。 基本上,MATLAB不关心库中的任何其他内容。

如果您只想调用foo的C版本,您可能需要查看loadlibrary的文档及其中引用的函数。