Behavior of isPassive and hinfnorm.
Mostra commenti meno recenti
For the transfer function HzPw attached, I am not getting the behavior I expect from the function isPassive and hinfnorm. Any suggestions on what I am interpreting incorrectly would be much appreciated.
load HzPw.mat;
nopt = nyquistoptions;
nopt.XLim = [-5e-3 2e-2];
nyquistplot(HzPw, nopt);
The Nyquist plot of this transfer function is entirely in the right half plane. So, I expect this transfer function to be passive. However,
[pf,R] = isPassive(HzPw)
Then, I look at a scattering function corresponding to this transfer function, and the Bode plot of this scattering function.
Hscat = (1-HzPw)/(1+HzPw);
bode(Hscat);
I expect the
norm of this to be 1. Indeed, by my thinking, the transfer function is passive, and so the scattering function
norm should be ≤ 1. However,
hinfnorm(Hscat)
I am wondering what I am not thinking about correctly.
Thank you.
Risposta accettata
Più risposte (1)
Hi Siva,
I'm not able to load the .mat file, so can't really look at the problem.
load('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1020880/HzPw.mat');
Can you save in v7.3 format and upload, or, if simple enough, just show what it is otherwise, like displaying the A,B,C,D or zpkdata, or the tfdata?
If not, can you post the output of the following commands:
pole(HzPw)
zero(HzPw)
pole(Hscat)
So maybe HzPw is not BIBO stable, but has a Nyquist plot all in the RHP, like this
h = zpk(2,1,1)
nyquist(h)
Similary, the H-infinity norm, IIRC, is not defined for unstable systems, so if Hscat is not BIBO stable, then hinfnorm will return inf as stated on hinfnorm
7 Commenti
Jon
il 3 Giu 2022
The OP's transfer function has a pole in the right half plane, please see my answer above
Paul
il 3 Giu 2022
Yes, I saw your Answer after I clicked Submit.
I guess it's safe to assume that HzPw doesn't have a zero that exactly cancels that pole, though isPassive doesn't seem to care about that.
I assume Hscat also has pole in the RHP?
Jon
il 3 Giu 2022
Yes, in fact a double one
>> Hscat = (1-HzPw)/(1+HzPw);
>> pole(Hscat)
ans =
1.0e+02 *
-9.0685 + 0.0000i
-9.0684 + 0.0000i
-0.9015 + 3.3574i
-0.9015 - 3.3574i
-0.9015 + 3.3573i
-0.9015 - 3.3573i
-0.3718 + 0.2699i
-0.3718 - 0.2699i
-0.3720 + 0.2695i
-0.3720 - 0.2695i
-0.0566 + 0.1218i
-0.0566 - 0.1218i
-0.0576 + 0.1213i
-0.0576 - 0.1213i
-0.0031 + 0.0036i
-0.0031 - 0.0036i
-0.0031 + 0.0036i
-0.0031 - 0.0036i
0.0036 + 0.0000i
0.0036 + 0.0000i
Jon
il 3 Giu 2022
And here is the transfer function given for HzPw
HzPw =
From input "w" to output "zP":
0.2415 s^9 + 283.4 s^8 + 8.506e04 s^7 + 3.184e07 s^6 + 1.805e09 s^5 + 4.735e10 s^4 + 1.238e10 s^3
+ 9.535e07 s^2 - 3.645e09 s - 1.714e04
--------------------------------------------------------------------------------------------------
s^10 + 1173 s^9 + 3.809e05 s^8 + 1.375e08 s^7 + 1.036e10 s^6 + 3.57e11 s^5 + 4.286e12 s^4
+ 4.277e13 s^3 + 1.068e13 s^2 - 3.252e11 s - 3.334e12
Continuous-time transfer function.
Siva
il 3 Giu 2022
load('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1021010/HzPw.mat');
Hmm, same problem. I'm probably not using load() correctly for a remote file.
Categorie
Scopri di più su Tuning, Analysis, and Validation in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



