MATLAB: Please me to remove error in program

...

% initial value
x0=[0.4 0.4 0.4];
v0=[1 0 -1];
c=1.2;
omega0=2;
a1=x0;
a2=v0+omega0*x0;
t=[0:0.1:3.5];
T_step=3.5/0.1+1;
for i=1:T_step
x1(i)=(a1(1)+a2(1)*t(i))*exp(-omega0*t(i));
x2(i)=(a1(2)+a2(2)*t(i))*exp(-omega0*t(i));
x3(i)=(a1(3)+a2(3)*t(i))*exp(-omega0*t(i));
Horizontal(i)=0;
end
plot(t,x1,t,x2,t,x3,t,Horizontal,'--k')
grid on
title('Critically damped case')
xlabel('Time(s)')
ylabel('displacement')
legend('x_0=0.4,v_0=1','x_0=0.4,v_0=0','x_0=0.4,v_0=-1')

Best Answer

You have to initialize x1,x2,x3 and Horizontal which are inside the loops. It is not an error but a warning from matlab which warns you to initialize. If you don't initialize data, your code execution time will be long for huge data.
% initial value
x0=[0.4 0.4 0.4];
v0=[1 0 -1];
c=1.2;
omega0=2;
a1=x0;
a2=v0+omega0*x0;
t=[0:0.1:3.5];
T_step=3.5/0.1+1;
x1 = zeros(1,T_step) ;
x2 = zeros(1,T_step) ;
x3 = zeros(1,T_step) ;
Horizontal = zeros(1,T_step) ;
for i=1:T_step
x1(i)=(a1(1)+a2(1)*t(i))*exp(-omega0*t(i));
x2(i)=(a1(2)+a2(2)*t(i))*exp(-omega0*t(i));
x3(i)=(a1(3)+a2(3)*t(i))*exp(-omega0*t(i));
Horizontal(i)=0;
end
plot(t,x1,t,x2,t,x3,t,Horizontal,'--k')
grid on
title('Critically damped case')
xlabel('Time(s)')
ylabel('displacement')
legend('x_0=0.4,v_0=1','x_0=0.4,v_0=0','x_0=0.4,v_0=-1')