Delayed step/ impulse response

123 ビュー (過去 30 日間)
Daniel Stankowski
Daniel Stankowski 2020 年 1 月 14 日
回答済み: Paul 2020 年 9 月 20 日
Hi everyone,
I would like to plot an impulse and step response of some arbitrary system sys1.
Normally I would use just a command impulse(sys1,t) or step(sys1,t) however the signals in my case are delayed.
1) The impulse is represented as: diract(t-5)
2) step is represeneted as: 1(t)-2*1(t)(t-tsw)
I know some people use an exponential function for it, but I am unsure why and how,
I would greatly appreciate any help

回答 (2 件)

Raj
Raj 2020 年 1 月 14 日
You have your system model and input signals equation. You can just generate your input signals and get the system response for those signals using lsim command.
  2 件のコメント
Daniel Stankowski
Daniel Stankowski 2020 年 1 月 16 日
Thanks for help but impulse as well as step does not work well with lsim.
I have solved the problem by using pure delay element.
So to plot impulse represented as diract(t-20) i did the folowing
impulse(exp(-20*s)*Tf,t)
where Tf is a closed loop transfer function of mine.
Thanks anyway!
Bill Tubbs
Bill Tubbs 2020 年 9 月 20 日
It seems a shame that this wouldn't be possible as an option in stepDataOptions, similar to specifying the step amplitude. Something like this perhaps:
opt = stepDataOptions('StepTime',10,'StepAmplitude',2);
step(sys,opt)

サインインしてコメントする。


Paul
Paul 2020 年 9 月 20 日
Use the time invariance and lineraity properties of an LTI system. One approach is to generate the the nominal impulse or step response and then use apppropriate time shifing and superposition of the nominal outputs.
sys1 = tf(1,[1 1]);
tsw = 4.3;
t = 0:.01:10; % Important to define tnom such that tsw is one element of t. verify this
sum(t == tsw);
% nominal impulse response
ynom = impulse(sys1,t);
% delayed impulse response
yimp = 0*ynom;
yimp(t >=tsw) = ynom(1:sum(t >= tsw));
% nominal step response
ynom = step(sys1,t);
% first term
y1 = ynom;
% delayed and scaled second term
y2 = 0*ynom;
y2(t >=tsw) = 2*ynom(1:sum(t >= tsw));
% total output
ystep = y1 + y2;
plot(t,[yimp ystep]),grid

製品


リリース

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by