2016-12-23 5 views
0

Короткий вопрос:Вызов MATLAB м-файл и MEX-файл с таким же именем из одной директории

У меня есть два файла в же каталога. Первый файл является MATLAB .m-файл, другой является MATLAB MEX-файл:

MyFunction.m

MyFunction.mexw64

Поскольку оба файла будут вызываться через MyFunction(1,2,3,'Test'), я в настоящее время не могу назвать любой из них. Есть ли способ указать расширение файла, который я хочу вызвать? Может быть, что-то вроде этого (который не работает):

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

Если нет легко решения, я был бы вынужден переместить файлы в разные каталоги ...

Заранее спасибо !

ответ

2

Нет, нет. Это из-за MATLAB's 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 

 Смежные вопросы

  • Нет связанных вопросов^_^