State space without using the control toolbox - Error using + Matrix dimensions must agree.
Afficher commentaires plus anciens
I am trying to calculate a continous plant for a unit step input.
Eg dX/dt= AX * Bu y = CX
I get the following error: Error using + Matrix dimensions must agree.
Can anyone please assist me??
My code is below:
%%Time specifications
stopTime = 10;
Fs = 1;
dt = 1/Fs;
t = (0:dt:stopTime)';
N = size(t,1);
%%State space model
A = [0,1;-45,-876];
B = [0,0;1,1]; %Rev 3
C = [59 99];
%%Pre-allocation
u = zeros(2,N);
x = zeros(2,N); %Rev 1
y = zeros(2,N);
%%Initial conditions
u(:,1) = [ 1 ; 1 ];
x(:,1) = [ 0 ; 0 ]; % Rev 1
y(:,1) = [ 0 ; 0 ];
%%Simulation - main loop
for k = 2:N
x(:,k) = x(:,k-1) + dt.*(A*x(:,k-1) + B*u(:,k-1); % Rev 2
y(:,k) = C*x(:,k);
end
%%Plot results
figure;
ax(1) = subplot(2,1,1);
plot(t,x);
ax(2) = subplot(2,1,2);
plot(t,y);
linkaxes(ax,'x');
Réponses (2)
Azzi Abdelmalek
le 28 Mai 2015
0 votes
The matrix A is 2x2 then x should be 2x1 not 3x1
1 commentaire
George Green
le 29 Mai 2015
Modifié(e) : George Green
le 29 Mai 2015
Nobel Mondal
le 29 Mai 2015
In this line,
x(:,k) = x(:,k-1) + dt*(A*x(k-1) + B*u(k-1)); % Error
The term A*x(k-1) would give you a 2x2 matrix. You should be using x(:,k-1) instead.
x(:,k) = x(:,k-1) + dt*(A*x(:,k-1) + B*u(k-1));
1 commentaire
George Green
le 29 Mai 2015
Catégories
En savoir plus sur Simulink dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!