2016-12-23 10 views
0

短い質問:同じディレクトリから同じ名前のMATLAB M-ファイルとMEX-ファイルを呼び出す

私は同じディレクトリ内に2つのファイルを持っています。最初のファイルは、MATLABの.mファイルで、もう一つは、MATLAB MEXファイルです:

MyFunction.m

MyFunction.mexw64

両方のファイルがMyFunction(1,2,3,'Test')経由で呼び出されることになるので、私は現在呼び出すことはできませんそれらのいずれか。呼び出したいファイルのextesionを指定する方法はありますか?このようなたぶん何か(動作しない):事前に何の簡単ソリューションは、私は別のディレクトリにファイルを移動することを余儀なくされるだろうが存在しない場合

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

...

感謝!

答えて

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 
関連する問題