about why in pole placement gives me error?

조회 수: 95 (최근 30일)
azam ghamari
azam ghamari 2018년 12월 26일
댓글: oussama sadki 2022년 9월 5일
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,:));

채택된 답변

Aquatris
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
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
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
azam ghamari 2018년 12월 28일
no, i used it for state feedbackany way when we have somethink like this:
P=p(j,:)=[-j-1 -3*j -j-2];
and B is for example 4x2;
it doesn't work and give me the result.
It gives me this error:
Subscripted assignment dimension mismatch.
Error in test2 (line 31)
K(j,:)=place(A,B,p(j,:));
A=[0.5 0 0.025 0;0 -0.01 0 0.017;0 0 -0.025 0;0 0 0 -0.0178];
B=[0.48 0;0 0.35;0 0.077;0.055 0];
C=[0.5 0 1 0];
D=0;
sys=ss(A,B,C,D);
G=tf(sys)
k_max=1001;
for j=1:k_max
p(j,:)=[-10*rand(1) -20*rand(1) -15*rand(1) -rand(1)];
K(j,:)=place(A,B,p(j,:));
end
  댓글 수: 2
Aquatris
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,:))
azam ghamari
azam ghamari 2018년 12월 29일
it works. thanks

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Stochastic Differential Equation (SDE) Models에 대해 자세히 알아보기

제품


릴리스

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by