Simulinkのデータ保存
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Simulinkで,入力を変えて10回シミュレーションしたときの入出力データを保存したいのですが,入力と出力をそれぞれu{1},y{1}のように配列で保存することはできますか.
理由として,それらのデータをもとにMATLABでシステム同定を行なう際に,繰り返しを使って一気に処理をしたいからです.
もし,他にもいい方法がありましたら教えていただけると幸いです.
よろしくお願いいたします.
0 Kommentare
Antworten (1)
Yoko
am 18 Jul. 2020
Simulink のシミュレーション結果は、プログラムを書くことで y{1} のように、セル配列で保存できます。
例えば、下図のようなモデルに対し、データを取得する例を紹介します。他にも方法はあるかと思いますが、一例として参考にしてもらえればと思います。
入出力に Outport を追加しておき、sim コマンドからシミュレーションを実行しておくと、入出力データが simOut に格納されます。
>> model = 'simple_system';
>> simOut = sim(model)
simOut =
Simulink.SimulationOutput:
tout: [53x1 double]
yout: [1x1 Simulink.SimulationData.Dataset]
SimulationMetadata: [1x1 Simulink.SimulationMetadata]
ErrorMessage: [0x0 char]
simOut の yout というフィールドに、データが格納されています。
>> simOut.yout
ans =
2 要素をもつ Simulink.SimulationData.Dataset 'yout'
名前 BlockPath
__ _________________
1 [1x1 Signal] '' simple_system/u
2 [1x1 Signal] '' simple_system/y
この情報を、シミュレーション実行時にセル配列で保存することで、入出力データが格納できます
% 入力データ情報
tmp1 = simOut.yout.getElement(1);
u{1} = tmp1.Values;
% 出力データ情報
tmp2 = simOut.yout.getElement(2);
y{1} = tmp2.Values;
これを for 文で回して、ループ回数と連動して、u と y に格納していくことで、入出力データが保存できると思います。
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!