Simulinkモデ​ル内でのWorksp​aceの変数をTra​sfer Fcnの係数(num,den)に反映させたい

조회 수: 2 (최근 30일)
Hidenori Sakaniwa
Hidenori Sakaniwa 2025년 3월 31일
답변: Yorihisa Yamamoto 2025년 4월 1일
Simulinkモデル内のMATLAB Functionで計算したnum=[num_param1, num_param2]、den=[1, den_param1, den_param2]がWorkspace上にあります。このWorkspace上にあるnum,denを、同Simulinkモデル内にあるTrasfer Fcnの係数(num,den)として入力して、Trasfer Fcnを使いたいです。
やったこととしては、下記ですが、全て失敗となり上手く行っていません。MATLAB Function内で計算したnum,denを、Trasfer Fcnの係数としてnum,denを反映させる方法を教えてください。よろしくお願いいたします。
・ num,denをData store Memoryでの共有メモリでの反映→Simulink.Signalのオブジェクトではありませんのエラー
・ num,denをSimulink.Signal、Simulink.Parameterによるオブジェクト化→Simulink.Signal、Simulink.Parameterはコード生成でサポートされていませんのエラー
・ num,denをMATLAB Function内でassignin関数を使って、WorkSpaceへのデータを更新→assigninはコード生成でサポートされていませんのエラー
・ num,denをGlobal変数化(MATLAB Functionの中でglobal numで定義)→ global 宣言は、[シンボル] ペインで登録された Data Store Memory ブロックに関連付けられません。でエラー
・ num,denをMATLAB Function内で一旦to Fileでファイルに書き出して、from Fileブロックで読んでもWorkspace上のnum,denへの更新はされない

답변 (1개)

Yorihisa Yamamoto
Yorihisa Yamamoto 2025년 4월 1일
残念ながら、Trasfer Fcnブロックの分子・分母係数をシミュレーションの途中で動的に変更することはできません。同パラメータはシミュレーション開始前の初期化の段階で参照・確定した値が使用されます。
分子・分母係数を動的に変更したい場合、下記のアプローチがあります。
  • Simulink提供のTransfer Fcn Direct Form II Time Varyingブロック(離散時間伝達関数)を使用する。
  • Control System Toolbox提供のVarying Transfer Functionブロック(連続時間伝達関数)やDiscrete Varying Transfer Functionブロック(離散時間伝達関数)を使用する。
  • Simulink提供のIntegratorブロックやUnit Delay, Delayブロックを用いて伝達関数を直接モデリングする。分子・分母の各係数を入力としてモデリングすることで変更可能な形にできます。
  • (信号処理で使用される適応フィルタの場合)DSP System Toolbox提供のAdaptive Filtersライブラリ内ブロックを使用します。離散時間のLMS, RLS, カルマンフィルタ等が提供されています。
以上です。ご参考になれれば幸いです。

카테고리

Help CenterFile Exchange에서 信号の生成에 대해 자세히 알아보기

제품


릴리스

R2022b

Community Treasure Hunt

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

Start Hunting!