some observations about vectorfit #1003
Replies: 6 comments
-
Thanks a lot for your feedback. Your general approach to slowly add more poles sounds very reasonable. Passivity is usually only important if the model is used in transient circuit simulations. Otherwise just ignore the warning. When the data is from an electromagnetic simulation, does it contain the whole NxN response matrix of the N port or do you fit only one of those responses? (Or is there only one port?).
It does not add extra poles, but it can change their types from real to complex conjugate (and vice versa). The number of poles calculated with
Right, we should probably rephrase that hint. |
Beta Was this translation helpful? Give feedback.
-
By the way, this sounds like you would appreciate some sort of automated fitting process. There is a very interesting technique by one of the godfathers of vector fitting: https://doi.org/10.1109/TEMC.2006.870814
I've already been working on an implementation, but eventually got stuck and put it aside. |
Beta Was this translation helpful? Give feedback.
-
Hi! Sorry about my slow reply I got distracted by a shiny object ;-) I understand your explanation about the pole fitting and the link to the other issue was very helpful ! yes this is a full 2-port simulation and I am fitting the full 2-port s-parameters. Electromagnetic simulations are well known to 1 have passivity problems and yes, unless you are doing time domain calculation passivity is not a problem. In fact, I have gotten away with a lot of time domain simulation without the data being passive :-) I have seen the article you linked, but I have not read through it careful. Thanks for linking it. Also I highly recommend the book by Grivet-Talocia and Gustavsen, "Passive Macromodeling". I find that the quality of most technical books to be quite poor but it is a very good book. it has a tremendous amount of information in it, lots of good examples and is generally quite well written. I can complain of course, but overall I'm very happy with it. I am currently working on an algorithm to minimize the frequency points needed for a fitting (there is a very generic description in the book). I would expect that when I am done I will also have something that will help with robust fitting of datasets in an automated fashion. If I'm successful I will be happy to contribute that to scikit-rf :-D This may be of interest, https://doi.org/10.1109/TEMC.2007.913225
|
Beta Was this translation helpful? Give feedback.
-
Something helpful if you don't want to see (some of) the warnings. import warnings
|
Beta Was this translation helpful? Give feedback.
-
New contributions are always welcome! For sure these kind of extensions to the original vector fitting algorithm would be of interest to some users. It's probably best to implement new methods in the The "passive macromodeling" book sounds very interesting, but it has a huge price tag. Good to know that you can recommend it. Maybe I'll finally spend the money. |
Beta Was this translation helpful? Give feedback.
-
For your information: I have a first version of automatic vector fitting (adding and skimming) running, see PR #1033. It's still not finished, but should be ready very soon. |
Beta Was this translation helpful? Give feedback.
-
I've been using vectorfit A LOT lately. So thought I would pass on some of what I'm seeing .
One thing i've noticed is that there's a lot of inconsistency in the warnings.
Here is an example using a quality dataset (generated by 3D electromagnetic simulation) with 51 data points.
I walked up the number of poles, starting at 12
n=12
ok. well that's not too much of an issue... BTW, the fit looks really good at n=12.
interestingly,
n=13
n=14
no complaints! That probably means that n=12 simply wasn't enough poles.
n=15
well that doesn't seem good.
You've probably already guessed that I'm going to tell you that even though it gave me that warning the fit looks excellent.
n=16
n=17
no complaints !
n=18
sure enough the fit still looks excellent
From 18 on it continues to give that warning. That's not too surprising given the number of data points. There's simply too many poles, which I know because the rms_error hits a minimum at n=13.
However notice that the warning says
That might not be the right advice ;-)
A system with a condition number of 27929627341518.535 probably shouldn't work at all. Not sure why that's occurring, but since VF seems to add poles above what was requested, I'm wondering if it's simply getting in its own way.
Here's what VF actually generated for poles
13 -> 15
14 -> 17
15 -> 18
16 -> 20
17 -> 20
18 -> 22
19 -> 23
20 -> 24
21 -> 25
and the last two which end up at more than npoints/2, the extra poles all being real.
22 -> 26
23 -> 28
24 -> 29
Beta Was this translation helpful? Give feedback.
All reactions