how to simulate an impusles response of a transfer function?

조회 수: 150 (최근 30일)
Zidhan  Ismail
Zidhan Ismail 2018년 11월 25일
댓글: yousaf muzafar 2022년 8월 29일
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

답변 (4개)

Aquatris
Aquatris 2018년 11월 25일
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 2019년 10월 14일
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 2020년 10월 8일
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 2022년 4월 23일
hi,
try this two lines
>> sys = tf (15,[1 8 15])
>> impulse(sys)
best regards,

카테고리

Help CenterFile Exchange에서 Scopes and Data Logging에 대해 자세히 알아보기

제품


릴리스

R2016b

Community Treasure Hunt

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

Start Hunting!

Translated by