2011-02-01 27 views
4

定義されているディレクトリから関数を実行したいと考えています。 のは、これが私のフォルダ構造であるとしましょう:MATLABで関数を実行する場所を制御する方法は?

./matlab 
./matlab/functions1 
./matlab/functions2 

と私はMATLABパスにすべてのディレクトリを持っているので、私はこれらのディレクトリにある関数を呼び出すことができています。

私の関数funcは、matlab/functions1にあります。 My機能は、コマンド

csvwrite('data.csv', data(:)); 

が含まれています、私は./matlabから "FUNC" と呼ぶならば、 'data.csv' の./matlabで作成されます。 ./matlab/functions2から呼び出すと、そのディレクトリに作成されます。しかし、関数が定義されているディレクトリ(./matlab/functions1)に、現在のディレクトリが何であっても、ディレクトリに常にdata.csvを書き込む機能が必要です。それをどうすれば実現できますか?

答えて

5

mfilename 'inside'から呼び出される関数は、関数のパスと名前を返します。提案@zellusものに加えて

fullPath = mfilename('fullpath'); 
pathString = fileparts(fullPath); 
dataPath = [ pathString filesep 'data.csv']; 
csvwrite(dataPath, data(:)); 
4

、あなたは関係なく、同じ瞬間に実行されている任意のm個のファイルの、特定の機能に関する情報を取得するためにfunctionsを使用することができます。 functionsに関数ハンドルを指定して、目的の関数を設定します。

funInfo = functions(@func); 
fullPath = funInfo.file; 
+0

クラスファイルにも同様の機能がありますか? – Carel

関連する問題