質問: simulinkのデータ保存 simulinkで,入力を変えて10回シミュレーションしたときの入出力データを保存したいのですが,入力と出力をそれぞれu{1},y{1}のように配列で保存することはできますか. 理由として,それらのデータをもとにmatlabでシステム同定を行なう際に,繰り返しを使って一気に処理をしたいからです. もし,他にもいい方法がありましたら教えていただけると幸いです. よろしくお願いいたします.
回答: 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 に格納していくことで、入出力データが保存できると思います。