State space without using the control toolbox - Error using + Matrix dimensions must agree.
1 view (last 30 days)
Show older comments
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');
0 Comments
Answers (2)
Nobel Mondal
on 29 May 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));
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!