简短的问题:
我在相同目录中有两个文件。第一个文件是MATLAB .m文件,另一个是MATLAB mex文件:
MyFunction.m
MyFunction.mexw64
由于这两个文件都是通过MyFunction(1,2,3,'Test')
调用的,因此我目前无法调用其中任何一个。有没有办法指定我要调用的文件的extesion?也许这样的事情(这不起作用):
MyFunction.m(1,2,3,'Test')
如果没有 easy 解决方案,我将被迫将文件移动到不同的目录......
提前致谢!
答案 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