Simulinkで離散時間のディスクリプタシステムを実装するにはどうすればよろしいでしょうか?
5 views (last 30 days)
Show older comments
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です.
ご回答いただけますと幸いです.
0 Comments
Answers (2)
Toshinobu Shintai
on 29 Sep 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 ブロックの中に記入する形が望ましいです。
0 Comments
Yugo OGIO
on 29 Sep 2022
2 Comments
Toshinobu Shintai
on 29 Sep 2022
以下のドキュメントを確認してください。
E行列が正則でない場合、状態方程式がどうなるか考えてみると、ヒントになるのではないでしょうか。
See Also
Categories
Find more on 時間領域および周波数領域解析 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!