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

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

Akzeptierte Antwort

Yoshi Minagawa
Yoshi Minagawa am 11 Mai 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 Kommentar
Masa
Masa am 14 Mai 2021
ありがとうございます。とても参考になりました。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu 動的システム モデル finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!