clear hold off periodico=0; %per selezionare uno dei due esempi T0=10; dt=0.01; t=-T0:dt:T0; x=zeros(1,length(t)); h=zeros(1,length(t)); %definisci x e h %esempio non periodico if periodico==0 ti1=(t>=-1 & t<=2); x(ti1)=1; ti2=(t>=2); h(ti2)=exp(-(t(ti2)-2)); else %esempio con x periodico P=2; for k=-round(T0/P)-1:round(T0/P)-1 ta=(t>=-1/2+k*P & t< 1/2+k*P); tb=(t>=1/2+k*P & t< 3/2+k*P); x(ta)=1; x(tb)=-1; end ti1=(t>=0 & t<=1); h(ti1)=1-t(ti1); end %e visualizza plot(t,x,'k') hold on plot(t,h,'r') title('x(t) nero, h(t) rosso'); xlabel('t'); input('per visualizzare la risposta premere un tasto') %determina la risposta y=conv(x,h)*dt; t1=-2*T0:dt:2*T0; %e visualizza if periodico to0=abs(t1)<=(round(T0/P)-1)*P+P/2; set(gca,'Xlim',[-(round(T0/P)-1)*P-P/2, (round(T0/P)-1)*P+P/2]); else to0=(abs(t1)=1 & t1<=4); yt(to1)=1-exp(-(t1(to1)-1)); to2=(t1>4); yt(to2)=exp(-(t1(to2)-4))-exp(-(t1(to2)-1)); else for k=-round(T0/P):round(T0/P) ta1=(t1>=-1/2+k*P & t1< 1/2+k*P); tb1=(t1>=1/2+k*P & t1< 3/2+k*P); ta0=(t1>=-1/2 & t1< 1/2); tb0=(t1>= 1/2 & t1< 3/2); yt(ta1)=(t1(ta0))-(t1(ta0)).^2+1/4; yt(tb1)=7/4-3*t1(tb0)+(t1(tb0)).^2; end ti1=(t>=0 & t<=1); h(ti1)=1-t(ti1); end %e visualizza plot(t1(to0),yt(to0),'g') title('x(t) nero, h(t) rosso, y(t) blu, yt(t), verde');