これは、MATLAB の意図的な動作です。
ファイルの最新の状態は、関数・スクリプトでの実行中には認識されず、関数・スクリプトの実行が終了した時点で認識されます。そのため、スクリプトの実行中に作成された新しいファイル(new_script.m) の存在を認識することができず、エラーが発生します。
ファイルの最新の状態を必要とする場合には、 REHASH コマンドを挿入し、最新の状態を認識させる必要があります。
(test.m の内容)
% 別のスクリプトの作成
at_fid = fopen(['new_script.m'], 'w');
fprintf(at_fid, ['mesh(peaks)']);
fclose(at_fid);
rehash % ファイルの状態のアップデート
new_script % 作成されたスクリプトの実行
コマンドウィンドウ上(もしくはデバッグモード)で一行ずつ実行した場合は、実行毎に内部で REHASH コマンドが実行されるため、ファイルの存在が認識され、エラーは発生しません。
なお、FPRINTF 関数を用いて MATLAB 関数/スクリプトファイルを動的に作成することは、MLint の機能を用いてコーディングのチェックを行うことができないこと、また、MATLAB 言語がインタプリタ言語よりも、他の C++ などのコンパイル言語に近い扱いとなることより、現状では推奨されていません。