how to simulate an impusles response of a transfer function?

231 views (last 30 days)
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

Answers (4)

Aquatris
Aquatris on 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 on 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 on 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 on 23 Apr 2022
hi,
try this two lines
>> sys = tf (15,[1 8 15])
>> impulse(sys)
best regards,

Categories

Find more on Event Functions in Help Center and File Exchange

Products


Release

R2016b

Community Treasure Hunt

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

Start Hunting!