状態フィードバックを用いた安定化
15 views (last 30 days)
Show older comments
今、教科書を使って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) より大きい重複度をもつ極を置けません。
というエラーが出てきて安定化出来ません。どう対処すればよいでしょうか
また、初期値に対して、閉ループ系の状態変数の時間応答を示すグラフを作成するにはどのようにすればよいでしょうか。
0 Comments
Accepted Answer
Yoshi Minagawa
on 11 May 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')
以上、ご参考になれば幸いです.
More Answers (0)
See Also
Categories
Find more on Time-Domain Analysis 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!