私は現在、Matlab Simulinkプロジェクトに取り組んでいます。私はMatlab/Simulink(数週間)を使用することに全く新しいです。Matlabのwhileループによる遅延の作成
私はSimulinkを開いてシミュレーションを開始できるMatlab ".m"ファイルを実装して実行します。目的は、1時間の "ピース"にカットされたロードセルで24時間のテストを行い、1時間ごとにExcelファイルの異なるシートにデータを保存することです。だから私のシミュレーションは1時間実行され、停止して再び開始されます。 Matlabと "for"ループを通して私は24回測定を行います。 測定ステップの間に、simulinkがその測定を終了してファイルを保存するのを待って、Simulinkウィンドウが閉じることができるようにする必要があります。close_system('Thesis_SerDatTransm_Simulink')
。
だから私は、私が得る対策は449よりも大きいサイズ(私は449個の値を測定する)の配列に収まる場合は、whileループを持つと確認することで遅延を実装してみました:今
for k=0:1:24
% Load Simulink
load_system('Thesis_SerDatTransm_Simulink.slx')
% Open Simulink
open_system('Thesis_SerDatTransm_Simulink.slx')
% Start Simulation
set_param('Thesis_SerDatTransm_Simulink', 'SimulationCommand', 'Start');
% Save Data
my_cell = sprintf('A%d',k);
xlswrite('file.xlsx',y,my_cell)
% Wait for Simulation
while 1
test=size(y)>=449;
if (test)
close_system('Thesis_SerDatTransm_Simulink')
break
end
end
end
問題そのプログラムはwhileループで動かない。 Simulinkは開始されますが、シミュレーションやデータ収集は行われません。 だから、Whileループで何か問題があるかどうかチェックできるかどうかは疑問でした。なぜなら、残りのプログラムはループなしでうまく動作するからです(しかし、シミュレーション中はSimulinkウィンドウを閉じることができないというエラーメッセージが表示されます)。 matlabでwaitfor
と遅延を作成し、別のfunction
を作成する方法があることは知っていますが、私はこれをどのように行うのかまだ分かりませんでした。
おかげであなたは、MATLAB pauseコマンドを使用する必要があります書かれたよう
よろしく
hohmchri
あなたの質問には '449'の値が書かれていますが、あなたのコードは' 499'の値をテストしています...どちらが正しいですか? – gariepy
システムを一度ロードして閉じるだけで済みます。また、すでにload_systemを使用している場合、open_systemを使用する必要はないと思います。 close_system関数が実際にForループの外側にある可能性があるので、ここで達成しようとしていることは必要ないと思います。 –
@gariepy、はい、私の悪いです。タイプミスがあります。私はチェックしたい値の正しい数である449に変更しました。私は明日も試験をやり直すつもりです。私はそれがうまくいくことを望む。ありがとうございました! – hohmchri