about why in pole placement gives me error?
98 次查看(过去 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!