function y=risposta_impulsiva(num,den,T); % RISPOSTA_IMPULSIVA : traccia la risposta impulsiva di un modello ingresso-uscita % ****************************************************************************** % ## SYNTAX ## % % RISPOSTA_IMPULSIVA(NUM,DEN): % Traccia la risposta impulsiva di un sistema la cui funzione di trasferimento e' % NUM % W(s) = ----- % DEN % La scala dei tempi e' scelta automaticamente. % Il valore analitico di questo segnale viene visualizzato nel command window. % % RISPOSTA_IMPULSIVA(NUM,DEN,T): % Usa il vettore dei tempi T. % % W=RISPOSTA_IMPULSIVA(NUM,DEN): % W=RISPOSTA_IMPULSIVA(NUM,DEN,T): % Non traccia il diagramma ma costruisce il vettore W contenente i valori dell'uscita. % % Si veda anche EVOLUZIONE_LIBERA, LSIM % % Alessandro Giua, Novembre 2002 ni=nargin; no=nargout; if ((ni <2) & (ni>3)), disp('Errore: controllare il numero degli argomenti') return end if (length(den) < length(num)), disp('Errore: il sistema non e'' proprio') return end if (den(1)==0), disp('Errore: il coefficiente di grado maggiore in DEN deve essere non nullo') return end n = length(den)-1; m = length(num)-1; % Definisco i polinomi % Sden = [s^n ... s 1] % Snum = [s^m ... s 1] syms s t for i=1:n+1, Sden(i) = [s^(n+1-i)]; end for i=1:m+1, Snum(i) = [s^(m+1-i)]; end % Calcolo la funzioen di trasferimento W = (Snum*num')/(Sden*den'); w = ilaplace(W) % Calcolo la risposta libera numericamente if (no==0 & ni==3), impulse(num,den,T); else if (no==0 & ni==2), impulse(num,den); else if (no==1 & ni==3), y=impulse(num,den,T); else if (no==1 & ni==2), y=impulse(num,den); end end end end return