Error in acker function, poles do not much size A?

조회 수: 32 (최근 30일)
Bradley Johnson
Bradley Johnson 2021년 4월 27일
답변: Paul 2021년 4월 27일
I am trying to use the ACKER function in my code but i keep getting an error and not sure why. The syntax seems to be correct so I am not sure what is wrong with it. I seems to start with the function on line 26 but refers to the error being in line 31?
clc;
close all;
s = tf("s");
Mg = 5.7; Ms = 6.7; Jm = 10.91e-3;
r = 31.75e-3;
b = 0.268;
Km = 0.8379; Kb = 0.838; Ra = 1.36; La = 3.5e-3;
JT = Jm + (r^2)*(Mg+Ms);
Gload = 1/((JT*s+b));
Garm = Km/(La*s+Ra);
G = feedback(Gload*Garm, Kb);
G_dcmotor = minreal(G/s);
%requirements
Mp = 2/100;
Ts = 100e-3;
zeta = -log(Mp)/sqrt(pi^2+(log(Mp))^2);
wn = 4/(zeta*Ts);
wd = wn * sqrt(1-zeta^2);
poles = (-zeta*wn+1i*wd-zeta*wn-1i*wd-100*zeta*wn);
% Required Gain Matrix
[num,den] = tfdata(G_dcmotor);
[A,B,C,D] = tf2ss(num{1},den{1});
Gain = acker(A,B,poles); % this is where it says the error is.
%New State Matrix
A_new = A-B*Gain; % error refers back to this line and says pole do not match size (A)?
B_new = B;
C_new = C;
D_new = 0;
sys = ss(A_new, B_new, C-new, D_new);
dc_gain = dcgain(sys);
N = 1/(dc_gain); % Scaling Factor
sys_mod = ss(A_new, N*B_new, C_new, D_new);
step(sys_mod);
stepinfo(sys_mod);

답변 (1개)

Paul
Paul 2021년 4월 27일
poles should have three elements based on the size of A, but it only has one:
>> poles
poles =
-4.0800e+03

카테고리

Help CenterFile Exchange에서 MATLAB에 대해 자세히 알아보기

태그

제품


릴리스

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by