Simulinkで離散時間のディスクリプタシステムを実装するにはどうすればよろしいでしょうか?
6 ビュー (過去 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!