MATLAB Answers

about why in pole placement gives me error?

254 ビュー (過去 30 日間)
azam ghamari
azam ghamari 2018 年 12 月 26 日
コメント済み: azam ghamari 2018 年 12 月 29 日
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 件のコメント

Sign in to comment.

採用された回答

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.

  6 件のコメント

表示 3 件の古いコメント
Aquatris
Aquatris 2018 年 12 月 28 日
As I mentioned, it is exactly the same. You call place() function with the state space A and B matrices. What exactly are you asking?
azam ghamari
azam ghamari 2018 年 12 月 28 日
No it doesn't work with more than 1 input witj place order in matlab.
Is there any direct order in matlab we can do that or we shall writ ean algorithm?
Thanks
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?

Sign in to comment.

その他の回答 (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

Sign in to comment.

製品


リリース

R2017b

Translated by