sim関数を用いたm​atlabからの変数​の渡し方が分からない​。

13 ビュー (過去 30 日間)
稔彦 廣瀬
稔彦 廣瀬 2021 年 10 月 6 日
コメント済み: 稔彦 廣瀬 2021 年 10 月 7 日
sim関数によって、matlabから変数を渡そうとしているのですが、下記のコードに対して
% aは数値行列
sim('APF_LQ_LIN_2008highspeed','gene',a);
以下のようなエラーが発生します。
block_diagram does not have a parameter named 'gene'
以下のようにBlock Parametersを用いてPath_Planというmatlabブロックにaの値を渡したいのですが、公式ドキュメントを読んでも適切な方法が分かりません。適切な方法を教えていただければ幸いです。

採用された回答

Hiroshi Miyagawa
Hiroshi Miyagawa 2021 年 10 月 7 日
'gene' を設定しているブロックはConstantブロックでしょうか?
であるならば、以下で動くと思います。
gene = a;
sim('APF_LQ_LIN_2008highspeed')
1行目によって、geneという変数がWorkspace上に生成されますので、simコマンド実行のさいに、SimulinkがgeneをSimulinkに読み込みます。
Constantブロックに設定している値を変更するには以下のようにします。
set_param('APF_LQ_LIN_2008highspeed/Constant','Value',num2str(a)) % aの値を直接書き込む
または、
set_param('APF_LQ_LIN_2008highspeed/Constant','Value','a')) % aという文字列を書き込む
その後、simコマンドでモデルを実行します。
以上、回答になりましたでしょうか?
  1 件のコメント
稔彦 廣瀬
稔彦 廣瀬 2021 年 10 月 7 日
ご指摘の通りに動かした結果、意図通りに動作しました。ありがとうございます。

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

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeイベント関数 についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!