Actually the issue was that the Matrix B was incorrect. It is supposed to be a 3x1 matrix with values in the order below: B= [0;0;1] This resolved the issue.
Error using place (line 78) The "place" command cannot place poles with multiplicity greater than rank(B). what is this error?
조회 수: 180 (최근 30일)
이전 댓글 표시
I used to have no issues with this back when I used Matlab 2017b but now I can't get the pole placement function to work. here is what I got:
>> syms k1 k2 k3 s
>> A
A =
0 1.0000e+00 0
0 0 1.0000e+00
-5.0160e-04 -1.2880e-01 -8.5400e-01
>> B
B =
1
0
0
>> Ac
Ac =
[ -K1, 1 - K2, -K3]
[ 0, 0, 1]
[ -1156610853421589/2305843009213693952, -161/1250, -427/500]
>> clpoles=[-1/2 -1/15 -1/15];
>> Dc=collect(det(s*eye(3)-Ac));
>> K=place(A,B,clpoles)
*Error using place (line 78)
The "place" command cannot place poles with multiplicity greater than rank(B).*
채택된 답변
추가 답변 (1개)
Siddharth Jawahar
2023년 5월 19일
Hi Mani,
This is not a bug, this is a limitation as spelled out in the error message. You cannot specify pole locations with multiplicity greater than rank(B)=1 in this example. Since closed-loop poles (-1/15,-1/15) has multiplicity 2, your target location violates this requirement. In general it's not a good idea to place poles at the same location because such a configuration is very sensitive to perturbations.
참고 항목
카테고리
Help Center 및 File Exchange에서 Model Predictive Control Toolbox에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!