Simulinkで離​散時間のディスクリプ​タシステムを実装する​にはどうすればよろし​いでしょうか?

9 visualizzazioni (ultimi 30 giorni)
Yugo OGIO
Yugo OGIO il 28 Set 2022
Commentato: Yugo OGIO il 29 Set 2022
Simulinkで離散時間のディスクリプタシステムが実装できなくて困っています.
LTI Systemの中にMATLABの関数であるdssを記述することで実装できるのかなと思っていたのですが,dssのパラメータを変えると時折以下のようなエラーが出て困っています.
  • '(Simulinkモデル名)/(ブロック名)' でのエラー: マスクの初期化コマンドを評価できませんでした。
  • 原因:
  • "初期状態" パラメーターは、状態と同じ入力を持つベクトルに設定されなければなりません。
エラーが出るdssのパラメータは,例えば以下のようなもので,初期状態は [0;0] に設定しています.
dss([0 -1;0 1], [1 -1;0 0], [1 1], [0], [0 0;0 0], 0.1)
ただし,MATLABのコマンドラインでdssを実行すると,エラーを吐かれることなく実行することができます.
私の動作環境は,R2022aです.
ご回答いただけますと幸いです.

Risposte (2)

Toshinobu Shintai
Toshinobu Shintai il 29 Set 2022
Eに当たる行列が0であるため、エラーとなっているようです。Eの部分を単位行列にすると問題なく実行できました。
sys = dss([0 -1;0 1], [1 -1;0 0], [1 1], [0], [1 0;0 1], 0.1);
一般的に、Simulinkのブロックのパラメーター記入欄の中にコマンドを入れることはお勧めしておりません。機能としてはできてしまうのですが、その際の実行結果を確認することが難しいため、問題の特定に苦労してしまいます。
まずMATLABスクリプトで上記コマンドを実行し、得られた"sys"というワークスペース変数を LTI System ブロックの中に記入する形が望ましいです。

Yugo OGIO
Yugo OGIO il 29 Set 2022
回答してくださりありがとうございます.
早速,MATLABのワークスペースに変数を定義して,Simulinkのブロックに読み込ませる形にいたしました.
ただ,エラーの件ですが,Eの行列を零行列でなくとも,非正則な行列にすると同じエラーが吐かれてしまいます.
Eを非正則な行列にしてしまうと,何か不具合が生じるのでしょうか?
  2 Commenti
Toshinobu Shintai
Toshinobu Shintai il 29 Set 2022
以下のドキュメントを確認してください。
E行列が正則でない場合、状態方程式がどうなるか考えてみると、ヒントになるのではないでしょうか。
Yugo OGIO
Yugo OGIO il 29 Set 2022
ありがとうございます.
確認してみます.

Accedi per commentare.

Categorie

Scopri di più su モデル コンポーネントのスケジュール in Help Center e File Exchange

Prodotti


Release

R2022a

Community Treasure Hunt

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

Start Hunting!