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?
187 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
mani zarouri
el 1 de Nov. de 2018
Comentada: mani zarouri
el 19 de Mayo de 2023
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 comentario
Respuesta aceptada
Más respuestas (1)
Siddharth Jawahar
el 19 de Mayo de 2023
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.
Ver también
Categorías
Más información sobre Model Predictive Control Toolbox en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!