バックグラウンド
MATLAB で次の単純な関数をコンパイルするとします。
function foo(path_to_m_file)
disp([' Running ' path_to_m_file])
run(path_to_m_file);
end
この関数は、 .mfooファイルへのパスを取得し、それを実行しようとします。
ただし、実際fooにコンパイルして実行しようとすると、次のようになります。
./run_foo.sh $path_to_run_time $path_to_m_file
ここpath_to_m_fileで、次のようなステートメントを含む単純な.mファイルです。
a = 2;
次のエラーが表示されます。
Error using ==> run
MATLAB:run:FileNotFound
ただし、それが正しいパスをfoo取得することはわかっています。たとえば、行を次の2行に置き換えてみるとrunfoo
fID = fopen(conf_file, 'rt');
first_line = textscan(fID, '%s', Inf, 'Delimiter', '\n');
fooファイルの対応する行を読み取り.mます。したがって、.mファイルはそこにあり、MATLAB エンジンはそれを「見る」ことができます。eval実際、 で読み取った文字列でも実行できtextscanます。
だから私の質問は:
上記のエラーが表示されるのはなぜですか? ファイルを
foo実行しないのはなぜですか?.m更新:この質問に対する回答と思われるものについては、以下の @strictlyrude27 の回答を参照してください。
上記がうまくいかない場合。元の関数をコンパイルした後に変更された可能性のある.mファイルを実行するために MATLAB でコンパイルされた関数を取得する方法はありますか?
私の2番目の質問の動機:
.mプロジェクト全体を再コンパイルすることなく、プロジェクトの一部であるファイルを「更新」できるようにしたいと考えています。これについてのアイデアは大歓迎です。