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

15 views (last 30 days)
Masa
Masa on 11 May 2021
Commented: Masa on 14 May 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) より大きい重複度をもつ極を置けません。
というエラーが出てきて安定化出来ません。どう対処すればよいでしょうか
また、初期値に対して、閉ループ系の状態変数の時間応答を示すグラフを作成するにはどのようにすればよいでしょうか。

Accepted Answer

Yoshi Minagawa
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')
以上、ご参考になれば幸いです.
  1 Comment
Masa
Masa on 14 May 2021
ありがとうございます。とても参考になりました。

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!