以下のWebサイトを利用して、Matlabをバックグラウンドで実行することができました。
http://www.stat.osu.edu/computer-support/programming/background-jobs
私はループを実行しています:
for ((i = 1; i <= 5; i++)); do
echo $i>i.txt;
matlab -nodesktop -nodisplay <script.m &> dummy.out &
done
スクリプトには一部があります:
fid=fopen( 'a:\folder\i.txt');'];
iter=str2double(fgets(fid))
myfunction(iter,a,b,c)
myfunction.mの関数行は
myfunction(num,a,b,c)
この関数は、「num」の値に応じて変化する名前のファイルを保存します
つまり、出力は次のようになります。1番目のコマンドの場合はmyfile1.mat、2番目のコマンドの場合はmyfile2など。
ループなしでコマンドを実行しているとき
echo 1>i.txt;
matlab -nodesktop -nodisplay <script.m &> dummy.out &
echo 2>i.txt;
matlab -nodesktop -nodisplay <script.m &> dummy.out &
etc...
問題はなく、出力は良好です。
ループを実行しているとき、取得するファイルはmyfile5.matだけです。
入力がmyfunction(i1、a、b、c)、myfunction(i2、a、b、c)になるようにコードを変更しましたが、結果は同じままです。
保存部分は関数の最後にあるので(長時間実行されます)、すべての関数の「num」は5です(ループは計算よりもはるかに速く終了します)。
何か案は?tnx