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?
174 次查看(过去 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!