从同一目录中调用具有相同名称的MATLAB m文件和mex文件

时间:2016-12-23 09:46:01

标签: matlab function file mex

简短的问题:

我在相同目录中有两个文件。第一个文件是MATLAB .m文件,另一个是MATLAB mex文件:

MyFunction.m

MyFunction.mexw64

由于这两个文件都是通过MyFunction(1,2,3,'Test')调用的,因此我目前无法调用其中任何一个。有没有办法指定我要调用的文件的extesion?也许这样的事情(这不起作用):

MyFunction.m(1,2,3,'Test')

如果没有 easy 解决方案,我将被迫将文件移动到不同的目录......

提前致谢!

1 个答案:

答案 0 :(得分:2)

不,没有。这是因为MATLAB的function precedence order,它指出路径上的任何MEX文件总是优先于同名的M文件。

通常的做法是为这两个文件使用不同的名称,并使用包含以下内容的包装:

function varargout = MyFunction(varargin)

    if exist('MyFunction_MEX', 'file') == 3
        [varargout{1:nargout}] = MyFunction_MEX(varargin{:});

    elseif any(exist('MyFunction_M', 'file') == [2 5 6])
        [varargout{1:nargout}] = MyFunction_M(varargin{:});

    else
        error([mfilename ':function_not_found'],...
              'An M file or MEX file with matching signature could not be found.');
end