Analoge Filter optimieren mittels NGSPICE

Gast #6828567
Lesenswert?

Hallo,
ich habe einen größeren Filter mit 8 Parametern zum drehen.
Die Idee kam jetzt auf, Gütefaktoren zu definieren und dann den 
optimalen Wertekombination auszuwählen.
Hat jemand schon mal ein Batch-Programm geschrieben, das quasi alle 
Parameter in ngspice oder ähnliches durchrechnet und dann die Werte nach 
Gütefunktion sortiert ausgibt?
Für Input bin ich sehr dankbar!
Michael
#6829140
Lesenswert?

Moin,

Ich hab' nix wirklich konstruktives beizutragen. Aber u.a. fuer das 
Problem hier (bis heute ungeloest, aber tatsaechlich auch eher nicht so 
dringend):
Beitrag "Impedanzanpassung mit LC Gliedern"
hatte ich auch schon mal sowas in Erwaegung gezogen.
Aber weiter als bis zur Kenntnisname dieses Links:
http://ngspice.sourceforge.net/octavespice.html
bin ich nicht gekommen.

Gruss
WK
Gast #6829276
Lesenswert?

Zeig doch mal deinen Filter her?  Was willst du da optimieren?

Filtertherie ist uralt, und es gibt zu fast allem spezielle Programm,
oder Toolboxen (Matlab).

Spice kann auch Parameter steppen, das hat in meinen Fällen immer
ausgereicht (mit einem Step-Parameter kannst du auch viele andere
Parameter über eine Tabelle setzen).

Ansonsten, was hindert dich, einfach ein Skript zu schreiben, das
eine Netzliste generiert?
Gast #6829281
Lesenswert?

Michael H. schrieb:
> Hat jemand schon mal ein Batch-Programm geschrieben, das quasi alle
> Parameter in ngspice oder ähnliches durchrechnet und dann die Werte nach
> Gütefunktion sortiert ausgibt?

Rechne dir mal aus, wie groß ein Parameterraum mit 8 Parametern wird. Da 
alles durchzurechnen, kann länger dauern.
Üblicherweise wird man wohl eher einen Optimierungsalgorithmus 
verwenden, der sich per Suchstrategie durch das Wertegebirge der 
Gütefunktion bewegt und die optimalen Parameterwerte bestimmt.
Man muss allerdings bei den Startwerten drauf achten, dass man nicht in 
einem lokalen Maximum hängen bleibt.
Gast #6829288
Lesenswert?

Hi, habe ich persönlich so noch nicht mit ngspice gemacht. Im rahmen 
eines Projektes haben wir mal was mit ADS und Matlab gebaut, aber eher 
eine Approximation wegen komplexer verkopplungen.
Ich wurde schätzen das sich das ganz gut mit Python und Spice lösen 
lasst.
Es gibt diverse Möglichkeiten Spice in Python einzubinden dann kannst du 
relativ einfach die gewonnen Daten weiter verarbeiten.
Beispiel PySpice:
https://pyspice.fabrice-salvaire.fr/releases/v1.4/examples/filter/low-pass-rc-filter.html

Mit minimalen Programmierkenntnissen denke ich ist das schnell zu 
realisieren. Einfach eine Schleife um deine Filtersimulation mit den 
Parametersweeps und dann mal laufen lassen. Für einen Optimierer musst 
du dann hakt eine Kostenfunktion definieren.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren