Simulinkで離散時間のディスクリプタシステムを実装するにはどうすればよろしいでしょうか?
5 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(2 个)
Toshinobu Shintai
2022-9-29
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 个评论
Yugo OGIO
2022-9-29
2 个评论
Toshinobu Shintai
2022-9-29
以下のドキュメントを確認してください。
E行列が正則でない場合、状態方程式がどうなるか考えてみると、ヒントになるのではないでしょうか。
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 時間領域および周波数領域解析 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!