How does freqresp work with systems with internal delays?
9 views (last 30 days)
Show older comments
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.
0 Comments
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.
Example:
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);
subplot(211)
semilogx(w,db(abs(squeeze(sysresp))),w,db(abs(squeeze(SYSresp.ResponseData))),'o')
subplot(212);
semilogx(w,180/pi*(angle(squeeze(sysresp))),w,180/pi*(angle(squeeze(SYSresp.ResponseData))),'o')
More Answers (0)
See Also
Categories
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!