
MATLABを使って、Simulinkのモデルを実行する方法
14 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hirokazu Ishibashi
le 23 Juin 2021
Commenté : Hirokazu Ishibashi
le 25 Juin 2021
MATLABを使って、Simulinkのモデルを実行したいです。具体的には、Simulinkのモデル内のゲインの値をワークスペースで定義するのではなく、MATLABのプログラム内でランダムな値に定義してモデルを実行したいと考えています。
sim('model',G1,G2,G3,G4);----①
Simulinkのモデル"model"内にあるゲインG1,G2,G3,G4の値について、任意の値をMATLABのプログラム内で設定してsimを使ってモデルを実行したいです。
上のanswerを参考に説明すると、for G=1:8の部分をGの値をランダムな値にして実行したいです。
①を使って実行すると、以下のようなエラーが表示されます。
"OPTIONS" パラメーターは、SIMSET によって作成された構造体でなければなりません
エラーの表示をなくしたいです。また、正しく実行できるようにしたいです。
ご対応をよろしくお願いします。
1 commentaire
Atsushi Ueno
le 23 Juin 2021
なぜゲインの値をワークスペースで定義したくないのか、疑問です。
sim('model',G1,G2,G3,G4);という形で実行したかったという事は、1つの結果を出力するシミュレーションを4回繰り返すのではなく「4つの結果をまとめて1回のシミュレーションで出力したい」のかなと思いました。もしこの想定通りであれば、プログラム内でG1,G2,G3,G4をワークスペース内に定義しても良いのでしょうか?それとも何かワークスペースを使いたくない理由があるのでしょうか?

Réponse acceptée
Atsushi Ueno
le 23 Juin 2021
Modifié(e) : Atsushi Ueno
le 24 Juin 2021
%G1=2; G2=4; G3=6; G4=8; % 値は適当
%sim('mysample',G1,G2,G3,G4);
%"OPTIONS" パラメーターは、SIMSET によって作成された構造体でなければなりません
sim関数に単独のスカラ値を受け取る構文はありません。シミュレーションの入出力は既定のデータ型(オブジェクト)経由でやり取りする必要があります。下記事例のようにするとエラーが出なくなります。詳細は下記ドキュメントを参照願います。
%in = Simulink.SimulationInput('mysample'); % inにシミュレーション対象モデル名を設定
%in = in.setVariable('G', [2 4 6 8]); % 値は適当
%out = sim(in);
%plot(out.tout, out.simout) % 処理結果の出力
(追記) はじめは「何かワークスペースを使いたくない理由があるのかな?」と勘違いしてSimulationInputオブジェクトを使う例を回答しましたが、その後のやり取りでワークスペースを使いたくない理由が無い事が判ったので、一旦上記回答は忘れましょう。
質問文のリンク先Q&A(103578)の回答と同じ方法で動かしてみました。
これで良ければ、コメントのエラー「SimulationOutput から double に変換できません」は回避できます。
figure
for ind = 1:10
x = rand(1,4);
Kp11 = x(1); % mysample.mdlのPI制御器のPゲインをKp11*Kp33としました
Ki11 = x(2); % mysample.mdlのPI制御器のIゲインをKi11*Ki33としました
Kp33 = x(3);
Ki33 = x(4);
sim('mysample'); %SIMコマンドによるモデルの実行
hold on
plot(tout,simout) %処理結果の出力
drawnow
end
hold off
4 commentaires
Plus de réponses (0)
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!