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

28 ビュー (過去 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!