MATLABを使って​、Simulinkの​モデルを実行する方法

14 vues (au cours des 30 derniers jours)
Hirokazu Ishibashi
Hirokazu Ishibashi le 23 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
Atsushi Ueno le 23 Juin 2021
なぜゲインの値をワークスペースで定義したくないのか、疑問です。
sim('model',G1,G2,G3,G4);という形で実行したかったという事は、1つの結果を出力するシミュレーションを4回繰り返すのではなく「4つの結果をまとめて1回のシミュレーションで出力したい」のかなと思いました。もしこの想定通りであれば、プログラム内でG1,G2,G3,G4をワークスペース内に定義しても良いのでしょうか?それとも何かワークスペースを使いたくない理由があるのでしょうか?

Connectez-vous pour commenter.

Réponse acceptée

Atsushi Ueno
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
Hirokazu Ishibashi
Hirokazu Ishibashi le 24 Juin 2021
お忙しい中、ご対応していただきありがとうございます。
やはり、double型の件に関しては、まだ解決できないのでご指導をよろしくお願いします。
Hirokazu Ishibashi
Hirokazu Ishibashi le 25 Juin 2021
setVariableを使って、モデルを実行することが出来ました。
ご指導していただき、ありがとうございます。
追記の件に関しましても、理解しました。
助かりました。また、機会があればよろしくお願いします。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur 一般分野への適用 dans Help Center et File Exchange

Produits


Version

R2020a

Community Treasure Hunt

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

Start Hunting!