how to simulate an impusles response of a transfer function?

146 vues (au cours des 30 derniers jours)
Zidhan  Ismail
Zidhan Ismail le 25 Nov 2018
Commenté : yousaf muzafar le 29 Août 2022
how to simulate an impulse response of transfer function?
which is T(s)= 15/(s^2+8s+15)
simulink should be used to find the impulse response

Réponses (4)

Aquatris
Aquatris le 25 Nov 2018
An impulse signal is a signal that has a certain magnitude that is applied for a small time. So you can use transfer function block to model your T(s) and use sum of 2 step functions to create impulse signal input. Use scope or toWorkspace block to obtain the response.
Impulse magnitude = x
Impulse time = t
Step function 1: step time 1, initial value 0, final value x
Step function 2: step time 1+t, initial value x, final value 0

Aryan Ritwajeet Jha
Aryan Ritwajeet Jha le 14 Oct 2019
If you are looking for a time domain response, then MATLAB has some easy to use functions:
%construction of transfer function
numerator=15;
denominator=[1,8,15];%(s^2+8*s+15)
transferFunction=tf(numerator,denominator);
impulseplot(transferFunction);
If you are looking for a Fourier Spectrum of the impulse response of a transfer function:
%construction of transfer function
numerator=15;
denominator=[1,8,15];%(s^2+8*s+15)
transferFunction=tf(numerator,denominator);
%construction of impulse signal
dt=1e-3;
t = -1:dt:1;
impulse= t==0;
%computing fourier spectrum of impulse response
impulseResponse=fftshift(fft(lsim(transferFunction,impulse,t)));
len=length(impulseResponse); %to take the frequency axis of the harmonics.
q=-(len-1)/2:(len-1)/2; %divide the frequency components
fimpulseResponse=sqrt(impulseResponse.*conj(impulseResponse));
plot(q,[fimpulseResponse]);
title(['Fourier Spectrum Plot']);
axis([-10 10 0 1]);
xlabel('Frequency');
ylabel('Amplitude');

Ahmad Alkadri
Ahmad Alkadri le 8 Oct 2020
Just run a stepplot, but multiply the numerator of your transfer function by s to turn the step function into a dirac delta function (recall that that the integral of the step function is the dirac delta).
This corresponds to adding another entry of '0' in your numerator. So instead of
% unit step response
sys = tf([15],[1,8,15])
stepplot(sys)
You can write:
% unit impulse response
sys = tf([15,0],[1,8,15])
stepplot(sys)

babou babi
babou babi le 23 Avr 2022
hi,
try this two lines
>> sys = tf (15,[1 8 15])
>> impulse(sys)
best regards,

Produits


Version

R2016b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by