状態フィードバックを用いた安定化
22 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
今、教科書を使って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 Kommentare
Akzeptierte Antwort
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')
以上、ご参考になれば幸いです.
Weitere Antworten (0)
Siehe auch
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!