I'm supposed to plot (x1 vs x2) for a system. (Dynamics and Controls)
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
PVR
el 12 de Nov. de 2014
Comentada: Star Strider
el 13 de Nov. de 2014
I have a system in state space model x'=Ax where A = [0 1; -14 -4]. The system quation is x(t) = e^At*x(0) where given x(0) is [-0.2; 0.2] Now I'm supposed to solve for x(t) which gives a matrix [x1(t);x2(t)] and plot the graph of the elements x1(t) vs x2(t) which is also known as Phase portrait. I believe its a simple code but I'm going wrong somewhere. Can you help me where and what's wrong? Any help is appreciated. Thank you!
A=[0 1;-14 -4];
t=linspace(0,10,300);
x=zeros(2,300);
matA = zeros(2,2,300);
x0 = [-0.2;0.2];
for k=1:300, matA(:,k) = expm(A*t(k)); x(:,k) = matA(:,k)*x0;end;
plot(x(:,1),x(:,2))
0 comentarios
Respuesta aceptada
Star Strider
el 13 de Nov. de 2014
You’re almost there. You did everything correctly, but you need a ‘C’ output matrix (part of the ‘ABCD’ matrices in a state space system). I added one I considered appropriate to your problem, and since this creates ‘x’ as a (2x300) array, I changed the plot references to reflect that:
A=[0 1;-14 -4];
t=linspace(0,10,300);
x=zeros(2,300);
matA = zeros(2,2,300);
x0 = [-0.2;0.2];
C = [1 0; 0 1];
for k=1:300,
matA(:,:,k) = expm(A*t(k));
x(:,k) = C*matA(:,:,k)*x0;
end
figure(1)
plot(x(1,:),x(2,:))
grid
The plot looks as a phase space plot should!
4 comentarios
Star Strider
el 13 de Nov. de 2014
My pleasure!
Have fun in your controls course, and take as many others as you can!
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!