% Exemplo de resposta impulsional

% dx/dt = -2 * x(t) + 3 * u(t)
% x(0) = 0
% y(t) = x(t)

% y(t) = 3*integral(exp(-2(t-tau))*u(tau))
% para u(t) = degrau unitário em t = 0
% y(t) = 3*(1 - exp(-2*t))/2

% solução analítica
t=0:0.1:2.5;
n=length(t);
y(1:n)=3*(1-exp(-2*t))/2;

plot(t,y);
xlabel('t'); ylabel('y');
legend('analítica','Location','SouthEast');
hold on
pause

% espaço de estados ss(a,b,c,d)
sis = ss(-2,3,1,0);
yss = step(sis,t);

plot(t,yss,'hm');
legend('analítica','espaço de estados','Location','SouthEast');
pause

% resposta impulsional
h(1)=0;
h(2:n) = y(2:n)-y(1:n-1);
u(1:n)=1;

yimp = cumsum(h(1:n).*u(n:-1:1));
plot(t,yimp,'or')
legend('analítica','espaço de estados','impulsional','Location','SouthEast');
pause

% ou usando a função convolução

yimp2 = conv(h,u);
plot(t,yimp2(1:n),'xk')
legend('analítica','espaço de estados','impulsional','convolução','Location','SouthEast');
