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

Calling MATLAB m-file and mex-file with same name from same directory

小问题:

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

MyFunction.m

MyFunction.mexw64

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

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

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

提前致谢!

不,没有。这是因为 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