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

6 ビュー (過去 30 日間)
Yugo OGIO
Yugo OGIO 2022 年 9 月 28 日
コメント済み: Yugo OGIO 2022 年 9 月 29 日
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です.
ご回答いただけますと幸いです.

回答 (2 件)

Toshinobu Shintai
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 ブロックの中に記入する形が望ましいです。

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

サインインしてコメントする。

カテゴリ

Help Center および File Exchangeモデル コンポーネントのスケジュール についてさらに検索

タグ

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!