# plotting an exponential will a matrix over time

9 views (last 30 days)
IP KWAN SO on 13 Apr 2019
Edited: David Wilson on 18 Apr 2019
Hi guys, i want to plot Y respect to time in 40 seconds. AF is a 4x4 matrix,
t= [0:2:40];
iden= eye(4);
AF= [ 0 1 0 0; 0.00010714 0.00275 10.049 0.98385; 0 0 0 1; -7.6531e-05 -0.0019643 -0.17761 -0.70275];
meme=iden*AF;
figure(1)
Y = exp(AF.*meme);
plot(t,Y);
It results in vector must be in the same length, i do not know how to fix it.
Vineeth Nair on 18 Apr 2019
The matrix dimensions must agree before multiplication can happen. Hence the above expression Y= exp(AF.*t) is incorrect.

David Wilson on 18 Apr 2019
Edited: David Wilson on 18 Apr 2019
OK, your question is a bit vauge, and there are missing bits, i.e. the start point for y.
I'm assuming you are trying to solve a control problem. As mentioned above, you need to carefully look at dimensions, and I think you want the matrix exponental function, expm, (don't forget the "m").
I started my simulation below at some random point.
t= [0:2:40]; % time vector
AF= [ 0 1 0 0;
0.00010714 0.00275 10.049 0.98385;
0 0 0 1;
-7.6531e-05 -0.0019643 -0.17761 -0.70275];
Y = randn(1,4); % start position (who knows??)
for i=2:length(t)
Y(i,:) = expm(AF*t(i))*Y(i-1,:)';
end
plot(t,Y);
Of course if you have the control toolbox, there are many better ways to do this, e.g.
>> help lti/initial
or,
G = ss(AF, zeros(4,1), eye(4,4), 0)
Y0 = randn(1,4); % another random start poit
[Y,t] = initial(G,Y0,t) % simulate the free response