about why in pole placement gives me error?
89 ビュー (過去 30 日間)
古いコメントを表示
Hi guys
Does every body knows why in the system :
s=tf('s');
G=(s-2.44)/((s+5)*(s+6)*(s+7));
[A,B,C,D]=tf2ss([1 2.44],[1 18 107 210]);
k_max=1001;
for j=1:k_max
p(j,:)=[-j-1 -3*j -j-2];
K(j,:)=place(A,B,p(j,:));
end
with differeing the p value it gives me this error?
Error using place (line 78)
The "place" command cannot place poles with multiplicity greater than rank(B).
Error in test2 (line 33)
K(j,:)=place(A,B,p(j,:));
0 件のコメント
採用された回答
Aquatris
2018 年 12 月 27 日
It is just the error says. Place command cannot place poles with multiplicity greater than rank(B). In your case, rank(B) is 1. However when j=1, you want to place your poles at [-2 -3 -3]. You see the multiplicity of pole at -3 is 2. So place command cannot be used. If you start j from 2 instead of 1, there won't be an issue.
7 件のコメント
Aquatris
2018 年 12 月 28 日
I dont know why you think it does not work. You do realize place is for state feedback not output feedback so you need an observer right?
oussama sadki
2022 年 9 月 5 日
hello Aquatris, why then rank(B) and each one poles multiplicity should be equal so that feedback gain could be computed, what relationship is there?
その他の回答 (1 件)
azam ghamari
2018 年 12 月 28 日
2 件のコメント
Aquatris
2018 年 12 月 28 日
This error is not because of place function. Just check the size of the matrix place() function return with given A and B matrice and you will realize the error.
Since this is a 2 input 4 state system, place() will return a 2x4 matrix. With the line "K(j,:) = place(...)" you are trying to assign 2x4 matrix to a 1x4 matrix, hence the error dimension mismatch. A quick fix is to change the line to;
K(j,:,:)=place(A,B,p(j,:))
参考
カテゴリ
Help Center および File Exchange で Stochastic Differential Equation (SDE) Models についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!