Simulinkのデータ保存

4 ビュー (過去 30 日間)
Aoyama Yukihito
Aoyama Yukihito 2020 年 7 月 11 日
コメント済み: Aoyama Yukihito 2020 年 7 月 22 日
Simulinkで,入力を変えて10回シミュレーションしたときの入出力データを保存したいのですが,入力と出力をそれぞれu{1},y{1}のように配列で保存することはできますか.
理由として,それらのデータをもとにMATLABでシステム同定を行なう際に,繰り返しを使って一気に処理をしたいからです.
もし,他にもいい方法がありましたら教えていただけると幸いです.
よろしくお願いいたします.

回答 (1 件)

Yoko
Yoko 2020 年 7 月 18 日
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 に格納していくことで、入出力データが保存できると思います。
  1 件のコメント
Aoyama Yukihito
Aoyama Yukihito 2020 年 7 月 22 日
返信が遅くなり申し訳ございません。
ご回答ありがとうございます。
試しにやってみます.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeSources についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!