Behavior of isPassive and hinfnorm.

조회 수: 3 (최근 30일)
Siva
Siva 2022년 6월 3일
댓글: Paul 2022년 6월 6일
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)
pf = logical
0
R = Inf
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)
ans = Inf
I am wondering what I am not thinking about correctly.
Thank you.

채택된 답변

Jon
Jon 2022년 6월 3일
편집: Jon 2022년 6월 3일
I'm thinking that you may have some numerical issues with poles very close to the jw axis. Your transfer function uses quite high order polynomials. Your numerator is a 9th order polynomial and your denominator is a 10th order polynomial. For such high order polynomials very small changes in the coefficient values may result in large changes in the pole and zero location. They are therefore generally to be avoided in favor of other representations.
In particular I see using MATLAB's pole command
p = pole(HzPw)
p =
1.0e+02 *
-9.0685 + 0.0000i
-0.9015 + 3.3574i
-0.9015 - 3.3574i
-0.3718 + 0.2699i
-0.3718 - 0.2699i
-0.0566 + 0.1218i
-0.0566 - 0.1218i
-0.0031 + 0.0036i
-0.0031 - 0.0036i
0.0036 + 0.0000i
So you in fact have an unstable pole in the right half plane at 0.0036.
I'm not an expert in the relation between stability and passivity, but my intuition is that an unstable system is not passive.
  댓글 수: 12
Siva
Siva 2022년 6월 6일
Just ran into this, related to the discussion in this thread.
Paul
Paul 2022년 6월 6일
This link might also be of interest, though I disagree with the "guarantee" in the very last sentence on that page, which is clearly incorrect as shown above.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Paul
Paul 2022년 6월 3일
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');
Error using load
Unable to read file 'https://www.mathworks.com/matlabcentral/answers/uploaded_files/1020880/HzPw.mat'. If it is a Version 7 or earlier MAT-file, consider saving your data afresh in Version 7.3
MAT-files to access it from a remote location.
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)
I'm asking because this doc page states "As a result, passive systems are intrinsically stable."
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
Paul
Paul 2022년 6월 3일
load('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1021010/HzPw.mat');
Error using load
Unable to read file 'https://www.mathworks.com/matlabcentral/answers/uploaded_files/1021010/HzPw.mat'. If it is a Version 7 or earlier MAT-file, consider saving your data afresh in Version 7.3
MAT-files to access it from a remote location.
Hmm, same problem. I'm probably not using load() correctly for a remote file.
Siva
Siva 2022년 6월 4일
@Paul From this thread, this seems to work:
load(websave('HzPw', 'https://www.mathworks.com/matlabcentral/answers/uploaded_files/1020880/HzPw.mat'));
pole(HzPw)
ans =
1.0e+02 * -9.0685 + 0.0000i -0.9015 + 3.3574i -0.9015 - 3.3574i -0.3718 + 0.2699i -0.3718 - 0.2699i -0.0566 + 0.1218i -0.0566 - 0.1218i -0.0031 + 0.0036i -0.0031 - 0.0036i 0.0036 + 0.0000i

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Classical Control Design에 대해 자세히 알아보기

제품


릴리스

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by