状態フィードバックを用いた安定化

24 visualizzazioni (ultimi 30 giorni)
Masa
Masa il 11 Mag 2021
Commentato: Masa il 14 Mag 2021
今、教科書を使ってmatlabを独学しているのですがわからないことがでてきたので質問させていただきたいです。
A=[-1 1 -1; 1 0 3; 1 0.1 -1]; B=[1; 2; 1]; C=[1 -1 0]; D=0;
この離散時間システムを状態フィードバックを用いて安定化させるという問題なのですが
K=place(A,B,[0,0,0])
を使っても
rank(B) より大きい重複度をもつ極を置けません。
というエラーが出てきて安定化出来ません。どう対処すればよいでしょうか
また、初期値に対して、閉ループ系の状態変数の時間応答を示すグラフを作成するにはどのようにすればよいでしょうか。

Risposta accettata

Yoshi Minagawa
Yoshi Minagawa il 11 Mag 2021
通常、極配置法で複数の極を移動させる場合、移動先の極は重複しない値を指定する必要があります.これは以下のドキュメントの注意の箇所にも記載があります.
よって下記のように3つの極を異なる場所として指定することで解決するかと思われます.
K=place(A,B,[-1,-2,-3])
また、初期値に対する閉ループ系の状態変数の時間応答を示すグラフは下記のような方法で作成できます.
%シミュレーションの準備
sys = ss((A-B*K),B,C,D); %状態空間モデルの作成(閉ループ)
t = 0:0.1:10; %時間の作成
x0 = [1 1 -1]; %初期値の作成
u = zeros(length(t),1); %入力データの作成
%動的システムのシミュレーション
[y,tOut,x] = lsim(sys,u,t,x0);
%結果のプロット
plot(tOut,x)
legend('x1','x2','x3')
xlabel('time')
ylabel('state')
以上、ご参考になれば幸いです.
  1 Commento
Masa
Masa il 14 Mag 2021
ありがとうございます。とても参考になりました。

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su 動的システム モデル in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!