MATLAB Answers

0

about why in pole placement gives me error?

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 件のコメント

サインイン to comment.

製品


リリース

R2017b

2 件の回答

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 件のコメント

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 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
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?

サインイン to comment.


回答者: 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
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 2018 年 12 月 29 日
it works. thanks

サインイン to comment.



Translated by