How does freqresp work with systems with internal delays?

9 views (last 30 days)
With non-delayed systems, freqresp relies on an Hessenberg form of matrix A to accelerate the inverse operation, as described in the freqresp documentation. When systems include internal delays, as described for instance in the setdelaymodel documentation, more operations are required, and the inversion concerns a matrix that involves itself matrix inversions. Could you please provide an explanation on how freqresp deals with systems with internal delays, and tell whether and where Hessenberg forms are used? Thank you.

Accepted Answer

Paul on 21 Dec 2022
Hi Philippe,
As best I can tell, the functional process is as follows. Referring to diagram under the "Description" of setDelayModel ...
1. Compute the frequency response of H in the usual way with H represented as an ordinary ss model. Here, the conversion to Hessenberg form would be used as normal. Call this result H(jw)
2. Compute the frequency response of the diagonal block of delays. Call this result D(jw).
3. Close the feedback loop of H(jw) and D(jw) in the usual way for all points in the frequency vector.
Unfortunately, steps 2 and 3 are hidden in mex file with no help or documenation, so the details of the implementation are unknown.
sys = feedback(tf(1,[1 1]),tf(1,1,'InputDelay',0.1)); % system with internal delay
[sysresp,w] = freqresp(sys); % its frequency response
% "by hand" computations
sysd = getDelayModel(sys);
H = frd(freqresp(ss(sysd.A,sysd.B,sysd.C,sysd.D),w),w);
D = frd(exp(-1j*0.1*w),w);
SYSresp = feedback(H,D,2,2,1);
SYSresp = SYSresp(1,1);
  1 Comment
Philippe De Rua
Philippe De Rua on 22 Dec 2022
Thank you Paul, this is insightful and makes perfect sense. Thank you also for the example, very clear.

Sign in to comment.

More Answers (0)


Find more on General Applications in Help Center and File Exchange




Community Treasure Hunt

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

Start Hunting!

Translated by