Curve Fitter für komplexe Werte

OP Persönliche Seite #2687440
Lesenswert?

Hallo!

Nach einigen Stunden mit Google muß ich doch mal fragen:
Hat irgendjemand ne Lösung für einen Fitter bei dem man als Input ein 
komplexes Frequenzspektrum (= Liste von R+jX bzw. real+phase) reingibt 
und am Ausgang ein Filternetzwerk n-ter Dimension auf minimalen Fehler 
und Welligkeit rausbekommt?
Curve Fitter gibts ja einige für Realwerte, aber eben anscheinend nicht 
für Netzwerke aus RCL. Die meisten neigen auch eher zum Schwingen als 
zum Glätten.

Benötigt wird sowas für die Modellierung realer Bauelemente in 
Ersatzschaltungen inkl. parasitärer Elemente. Am Ende kann man dann in 
SPICE weiterarbeiten. Daher wäre was kompatibles zu gängigen Strukturen 
ideal, wie z.B. die universale C-Komponente von LTspice. Mit der man 
z.B. auch direkt die Werte für Quarze verwenden kann. Prinzipiell könnte 
es aber auch ne andere Struktur sein, Ladder oder Transmission line. Die 
ideale Struktur ist sowieso Bauelementtyp abhängig.

Von HP gabs mal einen Impedanzmesser, der das Bauelement in eine 
Ersatzschaltung aus 6 idealen Bauelementen umwandelte.

Wie funktioniert sowas in einem Programm? Gibts was fertiges kostenloses 
oder billig?
Gast #2687732
Lesenswert?

Für nicht so komplizierte Schaltungen, bis etwa 6 einfache Bauteile kann 
die Übertragungsfunktion noch analytisch berechnet werden - sogar rein 
auf Papier.

Zum Fit von Komplexen werten sollte sich im Prinzip auch Software finden 
- man kann sich aber auch mit einem reellen Fit für Realteil und 
Imaginärteil getrennt behelfen - man muss halt nur die Daten und 
Funktionen entsprechend aufteilen.

So kompliziert ist das auch nicht so eine Funktion zu schreiben - 
eigentlich müsste ich sogar noch einen entsprechenden Code haben. Schon 
etwas älter, aber so viel hat sich C++ in den letzten 15 Jahren nicht 
verändert. Damals machte es wegen der Rechenzeit auch noch Sinn die 
Funktion mit vom Compiler übersetzen zu lassen.
OP Persönliche Seite #2687764
Lesenswert?

Aha. Das übersteigt meine mathematischen Fähigkeiten bei weitem. Ich 
finds nur erstaunlich, daß ich dazu nichts halbwegs fertiges oder 
wenigstens durchdachtes fand.
Das Problem ist doch sehr häufig. Sind die meisten Leute mit 3 
Ersatzwerten zufrieden? Vielleicht realisieren gar nicht, wie falsch 
ihre Sim dann sein kann, sobald sie breitbandiger wird!

Kannst du deinen Code irgendwie in ein lauffähiges Programm packen? 
Tabelle rein, ein paar Werte raus.

Ich glaube das einzige was ich hinkriegen würde, wäre einfach z.B. die 
ganze E-Reihe auf gut Glück durchzuprobieren. Was bei 6 Freiheitsgraden 
schon ne Menge Rechenzeit wäre. Vielleicht in einigen Minuten fertig. 
Ich weiß nicht.
Gast #2687805
Lesenswert?

Hallo Abdul,

ich kann dir leider keine konkrete Lösung auf das Problem geben, möchte 
aber aus Neugier mich einmischen:

Ein Filter wird doch über seine Eingangs- und Ausgangsgröße beschrieben. 
Wegen C und L wendet man Laplace an und bekommt eine analytische 
Gleichung, die sich durch umformen in eine Übertragungsfunktion 
beschreiben lässt.

Die Koeffizienten der Übertragungsfunktion sind unbekannt, kann man 
allerdings auf Basis von Messungen und einfacher Mathematik mittels der 
kleinsten Fehlerquadrate ausrechnen lassen.

Die Übertragungsfunktion wiederum kann entweder aus dem Netzwerk/System 
hergeleitet werden (bei elektrischen Systemen durch die Kirchhoffschen 
Gesetze) oder abgeschätzt werden, wie z.B. aus Testreihen.

Ich nehme an, dass du "lediglich" das BODE Diagramm besitzt und nun 
wissen möchtest, wie du die Funktion dazu beschreiben kannst?


Gruß
OP Persönliche Seite #2687820
Lesenswert?

So in der Art. Meßprogramm mit besserer Soundkarte und man ist bis 
100KHz dabei. WIMA mißt übrigens nach eigener Aussage auch nur bei 
100KHz. Will man mehr, muß man es extra erbetteln. Hatte das mal gemacht 
und bekam dann bessere Kurven als die rudimentären Ansätze in den 
Datenblättern.

So ein HP Bolide im Tausch gegen das Eigenheim, kanns vermutlich 
automatisch.
#2687836
Lesenswert?

>Hat irgendjemand ne Lösung für einen Fitter bei dem man als Input ein
>komplexes Frequenzspektrum (= Liste von R+jX bzw. real+phase) reingibt
>und am Ausgang ein Filternetzwerk n-ter Dimension auf minimalen Fehler
>und Welligkeit rausbekommt?

Wie soll denn die Kurve aussehen?
#2687895
Lesenswert?

Dein Beispiel willst du kompensieren, dass ein konstanter realer Wert 
herauskommt?

Oder möchtest du ein Sammelsurium an Bauteilen, das dir diese Kurve 
möglichst genau nachzeichnet?

Naja, beides ist eigentlich dasselbe Problem. Schau einfach, welche 
Kurvenprimitive zusammengesetzt deiner Wunschfunktion am besten 
nachkommen.
Das kann man mit irgendeinem Spice auch halbautomatisch durchprobieren 
lassen.

mfg mf
Gast #2687984
Lesenswert?

Ich verwende auch heute noch häufig den alten HP 4194 Analyzer. Der 
berechnet  Werte für 5 verschiedene Ersatzschaltbilder (mit Software 
Update noch mehr) und diese decken sich perfekt wenn man die Werte in 
ein Spice-Software klopft. Zum ausmessen von Ausgangselkos und 
Simulation von conducted EMI ideal. Man kann sich den Table auch 
ausgeben lassen.
Beim RLC Model eines Elkos ist es ja noch leicht auf die Werte zu 
kommen. Bei den komplexeren Modelen ist es aber nicht nachzuvollziehen. 
Ich hatte HP mal gefragt und die ANtworteten nur, dass es sich um einen 
"speziellen mathematischen Algorithmus" handelt. Wer hätte des 
gedacht...

Die Impedanz des Models kann man ja mittels Laplace ausdrücken. Dann 
mittels eines Polynomfits (je nach Ordnung des ESB) die Koeffizienten 
berechnen. Und dann mittels Koeffizientenvergleich die Bauteilparameter 
auflösen....Nur so eine Idee. Die Phase müsste auch noch einbeziehen.

Auch in die "System Identification Toolbox" von Matlab reinsehen. Die 
macht ähnliches für Regelstrecken. Die einfache lineare Pole/Nullstellen 
Näherung aus einem gemessen Bodediagramm (Vanable) funktioniert 
brauchbar. Kann man eventuel auch auf Impedanzen Anwenden.
http://www.mathworks.de/products/sysid/description3.html


MFG Fralla
#2688001
Lesenswert?

Fralla schrieb:
> Ich hatte HP mal gefragt und die ANtworteten nur, dass es sich um einen
> "speziellen mathematischen Algorithmus" handelt. Wer hätte des
> gedacht...

Wenigstens scheinen die Jungs Humor zu besitzen :)

Fralla schrieb:
> Die Impedanz des Models kann man ja mittels Laplace ausdrücken. Dann
> mittels eines Polynomfits (je nach Ordnung des ESB) die Koeffizienten
> berechnen. Und dann mittels Koeffizientenvergleich die Bauteilparameter
> auflösen....Nur so eine Idee. Die Phase müsste auch noch einbeziehen.

Da sagst du was... Der Koeffizientenvergleich lässt sich ja einmal 
getrennt nach Real- und Imaginärteil ausführen. Somit wäre die Phase 
auch mit einbezogen. Es steckt also ein Polynomfit dahinter. 
Entsprechend werden Bauteile mit "unsinnigen" Werten eben rausgeworfen.
* R oder L gegen ∞ oder C gegen 0 == Open circuit an dieser Stelle
* R oder L gegen 0 oder C gegen ∞ == Short circuit

Nun wäre eine Art kanonische Form eines Filternetzwerks gut, die sich 
schnell in eine Ersatzschaltung überführen lässt. Genau so wie in der 
Regelungstechnik(Fralla brauch ich das ja nicht zu erzählen...).

mfg mf
#2688045
Lesenswert?

Abdul K. schrieb:
> ob die freien Softwareversionen das auch können

Scilab? http://www.scilab.org/
Und ja, irgendein Curve fitting wird schon vorhanden sein.
Im Extremfall könnte man ja die Wertetabelle als Gleichungssystem 
angeben und lösen lassen.

Eine ganz andere Methode wäre noch Excel. Da kann man sich ja auch 
"schöne" Kurven in den Graphen reinlegen lassen. Die Parameter kann man 
dann ebenfalls irgendwo rausholen.

mfg mf
OP Persönliche Seite #2688058
Lesenswert?

Hast du dabei auch bedacht:
1. es sind 3D Kurven, keine 2D
2. Es ist nicht irgendeine schöne mathematische Funktion gesucht, 
sondern genau die Übertragungsfunktion obigen Bildes!

Damit kannst du die allermeisten Programme sofort kippen!

Ich habe den ganzen Abend rumgesucht, aber es ist nichts zu finden. Am 
Ende bleibt wirklich die E12 hoch 6 Variante. Vielleicht ist die Idee 
gar nicht so schlecht.
Gast #2688091
Lesenswert?

Abdul K. schrieb:
> Benötigt wird sowas für die Modellierung realer Bauelemente in
> Ersatzschaltungen inkl. parasitärer Elemente.

Ein Curve-Fitting Programm, dass aus dem komplexen Spektrum die 
Bauteilwerte im Ersatzschaltbild liefert, muß erstmal mit dem 
Ersatzschaltbild "gefüttert" werden, d.h. es reicht nicht irgendein 
Polynomfit, sondern das Basissystem der für den Fit verwendeten 
Funktionen muß dem Ersatzschaltbild entsprechen. Man kann z.B. die Lage 
von Pol- und Nullstellen bestimmen und daraus die Werte in alternativen 
Ersatzschaltbildern durch Koeffizentenvergleich ableiten.
Gast #2688227
Lesenswert?

In Matlab gibt es auch 3D Curve Fitter. Doch dieser ist für 2D 
Einagbedaten und fittet die Fläche darüber. Eine Liste mit Real und 
Imgaginärteil ist doch etwas anderes.

> http://www.mathworks.de/products/sysid/description3.html
>Die dort erwähnten Methoden klingen wie Folterpraktiken.
>Wäre nun interessant, ob die freien Softwareversionen das auch können.
>Sciworks oder wie das hieß. Noch nie benutzt.
Ich glaube nicht, das Funktionen wie diese Toolbox im freien Scilab 
vorhanden sind, kostet schließlich 1k€ und setzt die Control System 
Toolbox vorraus (wieder 1k€), wenn man es wirklich kauft. (Für privat 
ist downloaden schon ok;)) Allerdings kann nur einen Brauchteil des 
Funktionsumfanges verwenden, also Pole/Nullstellen lienarer System 
identifizieren, bzw die Zustandsraumkoeffizienten. Mit dem Rest weis ich 
nichts anzufangen...

>>Fralla schrieb:
>> Die Impedanz des Models kann man ja mittels Laplace ausdrücken. Dann
>> mittels eines Polynomfits (je nach Ordnung des ESB) die Koeffizienten
>> berechnen. Und dann mittels Koeffizientenvergleich die Bauteilparameter
>> auflösen....Nur so eine Idee. Die Phase müsste auch noch einbeziehen.
>Mini Float schrieb:
>Da sagst du was... Der Koeffizientenvergleich lässt sich ja einmal
>getrennt nach Real- und Imaginärteil ausführen. Somit wäre die Phase
>auch mit einbezogen. Es steckt also ein Polynomfit dahinter.
Und da sagts du was... Den Koeffizientenvergleich mit Real und 
Imaginärteil machen. Die Impedanzfunktion in Laplace Form wird ja Zähler 
und Nennerpolynome haben, Fitter für Polynome im Zähler und Nenner gibt 
es ja.

MFG Fralla
#2688260
Lesenswert?

Google ... aeh, ja ...

Man koennte einen Fitter schreiben, der die gewuenschte Funktion 
aufgrund minimaler quadratischer Fehlerquadrate fittet. Das Problem 
dabei ist dass nicht der gesammte Parameterraum zur Verfuegung steht. 
Denn Aufgrund der Energieerhaltung ist eine Uebertragunsfunktion 
analytisch. Siehe Kramers-Kronig. Nun koennte man, um zusaetzliche 
Freiheitsgrade zu gewinnen, einfach die Ordnung erhoehen. Ja, koennte 
man. Dann stellt sich aber die Frage, wie genau sind die Daten. Wie 
genau ist das komplexwertige Spektrum? Und wie genau muessen nachher die 
Bauteilwerte sein. Wenn ein Kondensator 2 pF auf 0.2% genau sein muss, 
hat man nichts gewonnen. Dh man benoetigt auch noch eine Fehlerrechnung.

Ich wuerd mal betragmaessig fitten und mir die Phase anzeigen lassen. 
Dann etwas an den Bauteilen wackeln und schauen, ob das mit der Phase 
etwa machbar waere.
OP Persönliche Seite #2688957
Lesenswert?

Mein Kenntnisstand hört beim Gaußschen Algorithmus für lineare 
Gleichungssysteme auf. Das habe ich mal als Schüler implementiert und 
das ging. Allerdings eben für ideale Systeme. Hier sind aber immer 
Fehler in den Werten. Sozusagen ist immer ein kleiner Fehlervektor bis 
zum idealen Punkt. Daher wird der klassische Gauß hier versagen. Wie 
sollte er eine Lösung finden? Vielleicht kann man ihn modifizieren??

Eigentlich ist es eine 2D-Kurve, denn es sind jeweils gekoppelte Real- 
und Imaginärwerte. Wenn denn der Fitter mit komplexen Eingangswerten 
umgehen kann. Vermutlich findet man auch mit 'entkoppelten' Werten in 
einem 3D-Fitter eine Lösung. Es wird einfach nur erheblich länger dauern 
und schwingungsanfälliger. Das in meinen bescheidenen Worten - über die 
ein Mathematiker schmunzeln wird.

Mich erinnert das Problem stark an die Positionsauflösung bei GPS.


Tja, und der Test ;-) Kai hat ihn bestanden. Wollte doch mal gucken, wer 
die Daten richtig interpretiert.
Mir gehts aber nicht um Lautsprecher. Sollte nur ein realer Datensatz 
sein. Im Umfeld Lautsprecher habe ich schon geforstet und nichts 
befriedigendes gefunden.


Nachdem ich die Nacht mit Google verbrachte, kamen ein paar Hinweise 
zusammen. Werde das später posten. Erstmal selber probieren hier...


Hat vielleicht jeman alte Ausgaben der Byte? Das hier wäre nämlich 
interessant:
"Fitting Curves to Data: the Simplex Algorithm is the Answer".
M.S. Caceci and W.P. Cacheris.
Byte Magazine 9(5), 340-362 (1984).

aus:
http://www.chemitech.com/marco/freestuf.htm

Ich habs leider nicht so mit Pascal ;-)
Gast #2688999
Lesenswert?

Man hat hier 2 Aufgaben: einmal aus dem Ersatzschaltbild die 
Übertragungsfunktion bzw. Impedanz zu berechnen. Das ist für so eine 
relativ einfache Schaltung wie oben sogar noch per Hand möglich. Sonst 
müsste man ggf. ein CAS Tool wie Mathematica (teuer) oder Maxima (frei) 
zur Hilfe nehmen. Damit hat man dann die Funktion die man an die Daten 
anpassen kann.
Diesen Teil muss man ja auch nur für jede Ersatzschaltung einmal machen.

Die Anpassung ist dann der 2. Schritt. Dafür gibt es frei verfügbaren 
Sourcecode, oder man nutzt ein fertiges Programm zur 
Messdatenbearbeitung (Excel, Gnuplot, XMgr,...), die aber meist nur den 
Fit für reelle Daten bieten. Da kann man sich helfen indem man die 
Funktion in 2 Teilebereiche aufteilt, einmal für den Realteil und einmal 
für den Immaginärteil. Das macht die Funktion etwas komplizierter, aber 
die meisten Programme bieten so etwas wie eine stückweise Definition. 
Man kann z.B. für "negative" Frequenzen den Imaginärteil nehmen, und für 
positive Frequenzen den Realteil.
Gast #2690747
Lesenswert?

Abdul K. schrieb:
> So in der Art. Meßprogramm mit besserer Soundkarte und man ist bis
>
> 100KHz dabei. WIMA mißt übrigens nach eigener Aussage auch nur bei
>
> 100KHz.

was aber auch daran liegt, wie das gute Stück hernach eingebaut und 
angesteuert wird, bzw was sonst noch so in der Nähe liegt.

Bei 100kHz fängt die EMV so langsam an, relevant zu werden und die 
parasitären Kapazitäten der Leiterbahnen und Bedrahtungen werden 
relevant.

Ich gebe Dir aber zu, dass man , wenn man das berechnen und simulieren 
wollte, genaue Nettoinfos braucht. Allerdings kann ich es von meinem 
Wissen sagen, dass gerade Kondensatoren da immer stärkere 
Exemplarsteuungen aufweisen,
Gast #2690857
Lesenswert?

Hallo,

ich mische mich auch mal mit in das Gespräch. Ich habe mich selbst schon 
mit dieser Thematik (Parameter eines Ersatzschaltbildes aus der Messung 
bestimmt) beschäftigt, kann davon hier aber aus verschiedenen Gründen 
nicht ausführlich berichten. Dennoch möchte ich einige Hinweise geben.

Meine ermittelten Parameter haben in der anschließenden Simulation sogar 
besser mit der Messung überein gestimmt, als die vom guten alten HP4194A 
ermittelten, was zu Teil auch auf Rundungsfehler zurückzuführen ist. 
Dennoch ist mir dieser Brocken Technik sehr ans Herz gewachsen.

Zunächst sei der Hinweis auf's "Agilent Impedance Measurement Handbook" 
gegeben. Dort steht im Prinzip der gesamte Lösungsweg für die "einfachen 
Ersatzschaltbilder" und auch die Funktionsweise des HP 4194A drin. Nicht 
verzweifeln wenn man es nicht auf Anhieb findet, es ist nicht in 
Klartext an einer einzigen Stelle beschrieben, stattdessen auf vielen 
Seiten und auch in den Abbildungen zu finden.
Eine weitere Beschreibung findet sich in "RCL Analysis with the MSA" von 
Sam Wetterlin.
Weiterhin seien die Quellen "Equivalent Circuit Extraction from Measured 
S-Parameters of Electronic Packages" und "The Complete Electrical 
Equivalent Circuit of a Double Heterojunction Laser Diode Using 
Scattering Parameters" genannt.
Die Methode kleinster Fehlerquadrate ist natürlich auch ein möglicher 
Ansatz.

Passen die Ersatzparameter/Simulationen mit diesen nicht mit der Messung 
überein, dann stimmt entweder das Ersatzschaltbild nicht, man hat sich 
an irgendeiner Stelle verrechnet oder aber falsche Randbedingungen für 
die Lösung zugrunde gelegt.

Man darf nicht erwarten, dass aus einer schmalbandige Messung ein 
breitbandiges Ersatzschaltbild zu extrahieren sei, dass wäre utopisch 
und vermessen. Man kann aber wohl erwarten, dass man aus der 
schmalbandigen Messung Ersatzparameter extrahieren kann, die das 
Verhalten der schmalbandigen Messung sehr gut beschreiben.

Viel Spaß beim Lösen der Aufgabe, dass verlängerte Wochenende lässt ja 
genug Zeit dafür.

branadic
Gast #2690862
Lesenswert?

Abdul K. schrieb:
> Mein Kenntnisstand hört beim Gaußschen Algorithmus für lineare
> Gleichungssysteme auf. Das habe ich mal als Schüler implementiert und
> das ging. Allerdings eben für ideale Systeme. Hier sind aber immer
> Fehler in den Werten. Sozusagen ist immer ein kleiner Fehlervektor bis
> zum idealen Punkt. Daher wird der klassische Gauß hier versagen.

Der Gauß Algorithmus bestimmt dir deine Koeffizienten immer so, dass der 
quadratische Fehler minimal wird. Anders ausgedrückt heißt das, dass er 
die Projektion der Meßwerte auf den von deinem Gleichungssystem 
aufgespannten Teilraum liefert. Du mußt "nur" dein Gleichungssystem 
passend zu deinem Problem vorgeben. Da kann es dir passieren, dass deine 
gesuchten Größen nicht einfach als Koeffizienten in deinem linearen 
Gleichungssystemauftauchen und dann brauchst du zusätzlich einen 
passenden Suchalgorithmus, der mit deinen nichtlinearen Parametern 
"spielt".
OP Persönliche Seite #2691388
Lesenswert?

Naja, es hat Jahre gedauert bis ich LTspice halbwegs beherrschte. Was 
ich nun schon von mir behaupten kann.
Ich möchte daher nicht noch eine weitere Baustelle öffnen und mich 
weitere Jahre mit solchen Fitting-Algorithmen beschäftigen, um dann 
irgendwann ein Programm passabler Funktionalität realisiert zu haben.
Außer jemand hätte Interesse gegen Bares seine Bauelemente von mir 
fitten zu lassen. Was ich nun kann. Muß aber noch viele Experimente 
machen.

Man erkennt oftmals erstaunliche Wissenslücken bei sich und in benutzten 
Tools wie LTspice.

Vielen Dank für eure Beiträge!
Gast #2691396
Lesenswert?

Hi, Abdul,

ich habe mich bisher zurück gehalten zwecks Minimierung des Risikos der 
Blamage.

Du willst in SPICE einen Zweipol nachbilden, der eine hohe Zahl an Polen 
und Nullstellen aufweist?

Warum misst Du nicht die Übertragungsfunktion von Spannungswerten zu 
Strom, indem Du:
1. Den zu testenden Zweipol mit Rauschen anregst,
2. Die komplexe FFT des Rauschens misst,
3. Die Stromantwort des Zweipols misst und ebenfalls die FFT berechnest,

durch Faltung der beiden FFT's die komplexe Übertragungsfunktion des 
Zweipol erhältst, und die in SPICE einbindest?

Schau Dir mal den AD5933 an - der macht den messtechnischen Teil von 
dem, was Du suchst - wenn ich Deine Suche richtig verstanden habe.

Ciao
Wolfgang Horn
OP Persönliche Seite #2691413
Lesenswert?

Hallo Wolfgang. Genau! Du hast es komplett erfasst. Die FFT ist eine 
komplexwertige.

Bei meiner 50 Stunden Recherche habe ich auch den AD5933 abgeklopft, 
aber nichts verwertbares gefunden. Wenn überhaupt, dann werden die für 
den auch nur RLC auswerten. Der Baustein ist prinzipiell schon 
interessant für ein Einzelgerät.

Jetzt habe ich zwar offensichtlich eine Lösung, aber Krach mit der Frau 
;-) Als sie fragte, warum ich immer beim Suchen im Net so rummeckerte, 
sagte ich: Ich möchte eine Punktewolke auf eine mathematische Funktion 
abbilden und finde einfach nix gescheites.


Wer will, kann man eine Z Mag Phase Tabelle posten und ich versuche mich 
dran. Brauche noch die Bauelementart als Info.


Das Ganze werde ich mal an einem Ultraschallwandler härtetesten.
#2691426
Lesenswert?

Hier mal ein "Hand-fit".
Achtung, das Vorzeichen der Phase in der Datei von Abdul K. ist falsch. 
Man muss das Vorzeichen vertauschen. Das war bestimmt ein Test um zu 
sehen ob wir's "blicken". :-)

Mit diesen guten Startwerten könnte man es mit dem Optimizer von der 
LTspice Yahoo group probieren.
http://tech.groups.yahoo.com/group/LTspice/files/%20Tut/Optimization/
In "Examples from Helmut" gibt es Beispiele und eine Anleitung.


Die home page von Friedrich Schmid, dem Author dieses Optimizers.
http://members.aon.at/fschmid7/page_3_1.html
NEW: Perl based optimizer ( flexible polyhedron , differential evolution 
) for Spice ( with Perl/TK GUI )
Angehängte Dateien:
OP Persönliche Seite #2691449
Lesenswert?

Fralla schrieb:
> Ich verwende auch heute noch häufig den alten HP 4194 Analyzer. Der
> berechnet  Werte für 5 verschiedene Ersatzschaltbilder (mit Software
> Update noch mehr) und diese decken sich perfekt wenn man die Werte in
> ein Spice-Software klopft. Zum ausmessen von Ausgangselkos und
> Simulation von conducted EMI ideal. Man kann sich den Table auch
> ausgeben lassen.
> Beim RLC Model eines Elkos ist es ja noch leicht auf die Werte zu
> kommen. Bei den komplexeren Modelen ist es aber nicht nachzuvollziehen.
> Ich hatte HP mal gefragt und die ANtworteten nur, dass es sich um einen
> "speziellen mathematischen Algorithmus" handelt. Wer hätte des
> gedacht...
>

Mich würde interessieren, aus welcher Zeit der 4194 stammt? So um 1991 
rum?
Gast #2691677
Lesenswert?

Abdul K. (ehydra) schrieb:

> Wenn ich bettel, kann ich nichts wünschen. Irgendwas CSV. Space oder
> Tab.:
> freq mag phase
> zu
> freq Re Im

> Mich wundert nur, das es das nicht fertig gibt. bin<>hex gibts ja auch.

Mach doch einfach eine nette kleine Programmierübung draus. ;)

C oder C#

oder biste ein Pascal'ler (Delphianer)?
OP Persönliche Seite #2691701
Lesenswert?

@Helmut:
Kann es sein, daß du die Datei ps2sp.pl nicht korrekt eingeordnet hast? 
Ich konnte sie erstmal nicht finden und mußte dann auf seiner HP suchen 
gehen. Dort ist sie in den Examples.

http://members.aon.at/fschmid7/loadflow_examples.zip

Ehrlich gesagt, ich verstehe von dem was da veranstaltet wird kein 
Stück.

Automatisches Löschen des NET-files MUSS man deaktivieren? Ich habe das 
immer an. Gibts dafür ein Control, damit ich das in das Schematic 
schreiben kann? Damits nur für diese Projekt aktiv ist.
Gast #2691944
Lesenswert?

Hi, Abdul,

> Hallo Wolfgang. Genau! Du hast es komplett erfasst. Die FFT ist eine
> komplexwertige.
Ich habe noch Restzweifel, ob da nicht doch ein Rest von Missverständnis 
ist.

Und zwar meine ich so: Du kannst das Verhalten eines Vierpols mit einem 
Vektor aus komplexen FFT-Koeffizienten beschreiben.

Die Halbleiterhersteller tun das schon seit Jahr und Tag, indem sie in 
die Vierpolmatrix ihrer Transistoren S22 als komplexen Vektor eintragen 
- häufig in Polarkoordinaten.

Ich habe hier eine Uraltversion von HP VEE. Mit der lassen sich solche 
komplexen Vierpolvektoren durchrechnen. Dasselbe geht gewiss auch mit 
Labview, MathLab und Konsorten.

> Das Ganze werde ich mal an einem Ultraschallwandler härtetesten.
Ach du liebes Lieschen! Wenn es Dir nur darum ging und besagter Wandler 
ein Piezo ist, dann nimm das Standard-Ersatzschaltbild des 
Schwingquarzes, auch der Piezoresonatoren - oder gleich die 
Berechnungsformeln.
Aus physikalischen Gründen kann sich der Piezowandler gar nicht anders 
verhalten, allenfalls etwas mehr Dämpfung als ein Quarz, der im Vakuum 
schwingt...

Ciao
Wolfgang Horn
Gast #2691962
Lesenswert?

Abdul K. schrieb:
> Weiß ich. Ich brauch ein Programm um ganze Files zu konvertieren.

Kannst du damit was anfangen?
1
#perl
2
use strict;
3
use warnings;
4

5
my $re;
6
my $im;
7

8
while(<>)
9
{
10
  /([\d\.-]+)[[:blank:]]([\d\.-]+)[[:blank:]]([\d\.-]+)/;
11
  $re=abs($2)*cos($3);
12
  $im=abs($2)*sin($3);
13
  printf("%.2f %.2f %.2f\n",$1,$re,$im);
14
}
1
perl conv.pl <eingabe.txt >ausgabe.txt

?
#2692037
Lesenswert?

>Hat irgendjemand ne Lösung für einen Fitter bei dem man als Input ein
>komplexes Frequenzspektrum (= Liste von R+jX bzw. real+phase) reingibt
>und am Ausgang ein Filternetzwerk n-ter Dimension auf minimalen Fehler
>und Welligkeit rausbekommt?

In der Physik gibt es ein ähnliches Problem. Da will man oft wissen was 
in ein Spektrum gehört, also Gaußpeaks, Lorentzlinien, 
Poissonverteilungen und noch anderes Gedöns. Da macht man 
Least-Squares-Fits mit unterschiedlichen Annahmen und vergleicht deren 
Güte mit dem Chi-Quadrat- und F-Test.

Hier ist ein gutes Buch darüber: ISBN 0-07-005135-6

In deinem Fall würde ich sagen, daß aus der konkreten Situation fast 
immer schon mit physikalischer Intuition auf ein passendes 
Ersatzschaltbild geschlossen werden kann. Also dürfte eigentlich ein 
Programm ausreichen, daß ausgehend von einem bekannten Erstazschaltbild, 
solange die Bauteilewerte verändert bis es passt. Das kann man aber fast 
immer auch von Hand in einem Simulator machen, wenn man geschickt 
separiert und dafür etwaige Resonanzen und das Verhalten bei tiefen und 
hohen Frequenzen ausnutzt.
#2692126
Lesenswert?

> Das kann man aber fast
immer auch von Hand in einem Simulator machen, wenn man geschickt
separiert und dafür etwaige Resonanzen und das Verhalten bei tiefen und
hohen Frequenzen ausnutzt.

Leider hat der von mir erwähnte Perl-Optimizer diese Aufgabe nicht 
geschafft. Dafür kann man aber mit intelligenter Handoptimierung bei 
dieser Schaltung sehr gut zu einer Lösung kommen. Siehe Kommentare im 
Schaltplan.

Es gibt übrigens eine strenge mathematische Beziehung zwischen Betrag 
und Phase bei Minimum-Phase-System (=kein Allpass-Faktor). Daher reicht 
es bei dieser Schaltung allein die Betragsfunkion anzunähern.
http://www.dcsc.tudelft.nl/~wb2207/transp/sr10-8.pdf, Seite 4
Angehängte Dateien:
OP Persönliche Seite #2692228
Lesenswert?

Das stimmt natürlich alles.

Der Ultraschallwandler ist für mich einfach nur ein Testobjekt. Zumal 
hier schon öfters nach diesbezüglichem Ersatzschaltbildwerten gefragt 
wurde. Lautsprecher interessieren mich nicht sonderlich und lassen einen 
nur in dem ganzen Esoterikkram die Richtung verlieren.

Vielleicht kann man auch die ganzen S-Parameter Tools verwenden. Ich 
habe nur keine Ahnung, warum die immer eine Systemimpedanz (z.B. 50 Ohm) 
verlangen und in unserem Fall hier das nirgends auftaucht. Warum brauche 
ich bei solchen Meßwerten keine Systemimpedanz? Man sieht, von 
Vierpoltheorie verstehe ich nichts: 1 Tor, 2 Tor, skalar oder 
vektoriell, hm.

Dann gibts noch scheinbar ein ultimatives Fitting-Tool: LEVMW
Aber nirgends ein Beispiel wie man es verwendet.

Ich werde erstmal Perl ausprobieren. Ein Fitter direkt in LTspice wäre 
sehr zielorientiert. Obs der beste Lösungsansatz ist, muß ich testen.
OP Persönliche Seite #2692238
Lesenswert?

Helmut S. schrieb:
>> Das kann man aber fast
>> immer auch von Hand in einem Simulator machen, wenn man geschickt
>> separiert und dafür etwaige Resonanzen und das Verhalten bei tiefen und
>> hohen Frequenzen ausnutzt.
>
> Leider hat der von mir erwähnte Perl-Optimizer diese Aufgabe nicht
> geschafft. Dafür kann man aber mit intelligenter Handoptimierung bei
> dieser Schaltung sehr gut zu einer Lösung kommen. Siehe Kommentare im
> Schaltplan.
>

Schade. Werds trotzdem testen.
Welche Beispiele schaffte er denn? Das ist ja Jahre her. Hast du da noch 
was im Kopf?

Mich dünkt speziell bei diesem Beispiel, was ich eigentlich eher 
willkürlich wählte bei der Suche nach realen Daten, daß es zufällig ein 
eher schwieriges Beispiel ist. Ich weiß nur noch nicht warum.

Jedenfalls sind deine handoptimierten Werte schon sehr gut. Lob!


> Es gibt übrigens eine strenge mathematische Beziehung zwischen Betrag
> und Phase bei Minimum-Phase-System (=kein Allpass-Faktor). Daher reicht
> es bei dieser Schaltung allein die Betragsfunkion anzunähern.
> http://www.dcsc.tudelft.nl/~wb2207/transp/sr10-8.pdf, Seite 4

Da schreibst du was was ich seit Tagen auch vermute. Schön wenn man dann 
eine Referenz zum Weiterlesen findet. Danke.
Ich vermute momentan, daß man mit der zusätzlichen Phaseninformation 
schlicht schneller zu einem Optimum rein algorithmisch gelangt.
Aber bei welchen Strukturen brauch man dann unbedingt die Phase?? Das 
irritiert mich. Dabei dachte ich 20 Jahre, jetzt kann ich komplex 
rechnen. Pustekuchen, doch nicht ganz verstanden.

Werde das Paper lesen. Vielleicht geht mir ein Licht auf.
#2692261
Lesenswert?

>Schade. Werds trotzdem testen.
Welche Beispiele schaffte er denn? Das ist ja Jahre her. Hast du da noch
was im Kopf?

In der Yahoo group sind zwei Beispiele von mir. Am besten lässt du die 
mal "rennen".
Du brauchst übrigens neben Schaltplan.asc und Schaltplan.net die zwei 
Perl-Skripte optimizer.pl und simend.pl und eine Initialisierungsdatei 
Schalplan_init.txt.
OP Persönliche Seite #2692284
Lesenswert?

In deinen Beispielen ist ein Bandpaß dabei. Das ist ja kurios. Warum 
geht der und obiger nicht?

Das obige Paper versteh ich nicht so ganz. Bislang dachte ich, wenn kein 
aktives Bauelement in der Schaltung ist, dann ist sie immer stabil? 
Ist das falsch?

Habe noch etwas mit der Phase gespielt. Tatsächlich, man kann sie auch 
problemlos in meinem Beispiel weglassen. Sie baut sich sozusagen rein 
aus der Amplitude wieder korrekt auf.

Da sind wir ja wieder bei dem Test mit der inversen Phase ;-)
#2692450
Lesenswert?

Abdul,
Ich hatte vergessen, dass der Optimizer wohl nur 1e-6 aber nicht 1u 
versteht. Jetzt rennt der Optimizer zusammen mit LTspice wie gewünscht, 
sogar mit 5 Variablen. Im zip-file sind alle Dateien die man braucht um 
das zu testen. Lies bitte auch die "instrcutions.txt".

Ehre wem Ehre gebührt:
Die home page von Friedrich Schmid, dem Author dieses Optimizers.
http://members.aon.at/fschmid7/page_3_1.html
NEW: Perl based optimizer ( flexible polyhedron , differential evolution
) for Spice ( with Perl/TK GUI )
Angehängte Dateien:
#2692522
Lesenswert?

1.
Navigiere in der CMD-shell zum Verzeichnis mit dem Schaltplan und den 
Perl-Sktipts.

2.
.....> _path.bat

Das_path.bat dient dazu, dass du nicht den langen Pfad zu Tinyperl 
eintippen musst und dass scad3.exe ohne langen Pfadnamen im 
Schaltplan_init.txt angegebenen werden kann.

3. Jetzt gehts los.

.....> tinyperl optimizer.pl Z_speaker1opt_init.txt


Am Ende der Optimierung öffnet das Skript einen zusätzlichen Schaltplan 
mit den optimierten Werten.
Gast #2692523
Lesenswert?

Abdul K. schrieb:
> Hm. Ich habe soweit alles zusammen und tinyperl installiert. Mal ne
> blöde Frage: Ich dachte PATH-Einstellungen gibt es mindestens seit WinME
> nicht mehr??
Doch doch, unter XP gibt es sie auch noch. :-)

> DOS-Box mit perl optimizer.pl oder sowas?
So wird das in der Regel gemacht...

Kannst du mit meinem Converterscript von oben etwas anfangen?
OP Persönliche Seite #2692562
Lesenswert?

perlbastel schrieb:
> Abdul K. schrieb:
>> Hm. Ich habe soweit alles zusammen und tinyperl installiert. Mal ne
>> blöde Frage: Ich dachte PATH-Einstellungen gibt es mindestens seit WinME
>> nicht mehr??
> Doch doch, unter XP gibt es sie auch noch. :-)
>

Dann habe ich das wohl verwechselt mit einer anderen Sache die nicht 
mehr ausgewertet wird.


>> DOS-Box mit perl optimizer.pl oder sowas?
> So wird das in der Regel gemacht...
>
> Kannst du mit meinem Converterscript von oben etwas anfangen?

Sieht sehr kryptisch aus. Sollen wohl Hausaufgaben für mich werten??

Ich muß erstmal den Perl-Optimizer zum Laufen kriegen.

@Helmut:
Ich habe Path passend geändert und auch in auto-exec.bat eingetragen. 
Er sagt aber:
C:\...\test>tinyperl optimizer.pl Z_speaker1opt_init.txt
Befehl oder Dateiname nicht gefunden.

Er kann offensichtlich mit tinyperl gar nichts anfangen. Muß man das 
irgendwie aktivieren?
#2692583
Lesenswert?

Du musst natürlich tinyperl in einer CMD-shell aufrufen. Nicht im 
Windows-Explorer draufklicken.

Wenn du den Pfad für tinyperl gesetzt hast (_path.bat ausführen), dann 
tippe mal im CMD-Fenster das Folgende. Achtung das ">" ist der Prompt 
der cmd-shell, also nicht ">" eintippen.

> tinyperl -help

Und findet es tinyperl?
OP Persönliche Seite #2692597
Lesenswert?

Ich habe jetzt den ganzen Kram von Perl in meinen Arbeitsordner gepackt 
und dort kann ich es starten.
Dann kommt aber:
optimizer with flexible polyhedron alg. combined with thermal 
fluctuations
from the book : numerical recipes in C - second edition - Cambridge 
University P
ress

starting optimization .....
reading initfile .....
reading circuitfile .....


inital simplex points:

Befehl oder Dateiname nicht gefunden.
Can't open source file : z_speaker1opt.log


--------
Wo soll das File denn sein?
OP Persönliche Seite #2692604
Lesenswert?

Eine Stunde später.... toll

"net" hatten wir ja schon. Offensichtlich brauch er auch "log". Jetzt 
läuft irgendwas. Aber wo kann ich zwischenzeitlich den aktuellen 
Arbeitszustand sehen? Bzw. beenden triggern und den letzten 
Optimierungsergebnis sehen?

Nochmal die Frage:
Kann man diese Optionen pro Projekt im Schaltplan definieren?

Tut mir leid wenn ich dich nerve. Entweder ich bin zu blöde oder es ist 
einfach schlecht dokumentiert.
#2692634
Lesenswert?

Das Beispiel Speaker_optimization.zip braucht keine 30sec auf einem 
alten Laptop(1,5GHz). Es macht ca. 40 Simulationen bis es sagt "fertig".

Mach auch mal
Control Panel -> SPICE-> Reset to default.
Manche glauben da drin müsste man etwas verstellen. Da muss man aber gar 
nichts verstellen, außer falls man mal den Alternate solver braucht. All 
diese Einstellungen die man da machen könnte, schreibt man besser gleich 
in den Schaltplan, z. B. .options gmin=1e-10 falls nötig.

Bist du schon an einem anderen Beispiel?
OP Persönliche Seite #2692639
Lesenswert?

Naja, meinen Kenntnisstand bezüglich LTspice kennst du doch. Ich bin der 
der immer meckert ;-)

Ich bin immer noch am Warten. Wenn der Optimizer weitere Verbreitung 
finden soll, dann muß der schon bedienbarer werden.

Was ist nun, wenn ich abbreche? Ja ja, ich bin doch blöde. Kein Backup 
vorm Start gemacht.

Woher weißt du wieviele Sims er gemacht hat? Popt da regelmäßig LTspice 
auf? Ich sehe nix. Ich würde behaupten, es wurde nie gestartet.
#2692643
Lesenswert?

Du kannst ihn jeder Zeit abbrechen. Da geht nichts kaputt. Der Optimizer 
packt nicht den Schaltplan an. Der manipuliert nur den .net file. Dann 
ruft er LTspice im batch mode mit dem .net file auf. Aus dem log-file 
liest er dann das Ergebnis. Das wiederholt sich dann immer wieder.

Der .net file wird bei jeder Simulation des Schaltplans neu gemacht.
Alternativ: View -> SPICE netlist
Das erzeugt auch den .net file.

Die letzte/neueste Version des Optimizers von Friedrich hat ein GUI. 
Kannst ja mal den probieren.
OP Persönliche Seite #2692653
Lesenswert?

Nach Abbruch ist kein log im Arbeitsordner. Das ASC-file ist auch nicht 
verändert. net ist auch unverändert.

Ich vermute es kommt nie dazu das LTspice gestartet wird. Vermutlich 
findet er es nicht und ne Fehlermeldung, naja wozu auch. Brauch kein 
Mensch.

Dann habe ich in optimizer.pl reingeschaut und gleich in den ersten 
Zeilen steht:
$simendfile="tinyperl simend.pl";

Ein simend.pl gibts aber gar nicht. Es gibt nur ein "simend-ltspice.pl"

Es ist aber genau der Ordner den du mir zum Donwloaden oben anbotest.

Soll ich das ändern?


Sagt mal, bin ich der einzige der das ausprobiert? Geht es bei 
irgendwem?
OP Persönliche Seite #2692664
Lesenswert?

Ah. Eine Beschreibung des GUI findet sich in einem der zip's.

Zurück zur optimizer.pl :
Gerade gecheckt. Es ist wirklich deine Datei.
Und nach der ominösen Zeile kommt:
$ascfile="myfile.asc";

Da muß doch der richtige Projektname stehen, oder?


GUI fällt wohl vorerst flach, da steht:
The optimizer now comes now with a simple perl/TK based gui:
============================================================

The gui only works with a full Perl/TK installation. (get it free for 
windows at www.activestate.com)

The gui simplifies and organizes the use of the optimizer


Also nix mit tinyperl.
Gast #2692684
Lesenswert?

Hallo,

 bei mir gehts.

Ich habe tinyperl installiert und die Pathvariable in 
"Systemsteuerung->System->Erweiterte 
Systemeinstellung->Erweitert->Umgebungsvariablen->Systemvariablen->Path- 
>Bearbeiten"  um den Path zu tinyperl und Ltspice erweitert.

Schaut dann etwa so aus:

"
......;C:\Program Files (x86)\LTC\LTspiceIV;C:\Program Files 
(x86)\tinyperl;C:\Program Files (x86)\tinyperl\optimizer
"

Dann habe ich das File von Helmut S.
"
Datum: 27.05.2012 21:24
Angehängte Dateien:

    Speaker_optimization.zip (10,6 KB, 9 Downloads)
"
in meine Ramdisk entpackt. Darin habe ich das File 
"Z_speaker1opt_init.txt" in "myfile_init.txt" umbenannt.

Dann habe ich ein neues cmd.exe-Fenster geöffnet (ist wichtig damit die 
neue Pathvariable wirkt) bin mittels cd in das Verzeichnis gewechselt, 
in dem die Files von "Speaker_optimization.zip" liegen und habe den 
Befehl
"tinyperl optimizer.pl" eingegeben.

MfG
egonotto
Gast #2692695
Lesenswert?

Helmut S. (helmuts) schrieb:

> Hab es gerade unter WIN-7 probiert. Läuft auch dort!

Zur Not kann Abdul ja mal ein anderes Perl ausprobieren

"Erdbeeren-Perl" ab XP
http://strawberryperl.com/

oder hier das (läuft auch ab Win98)
http://www.chip.de/downloads/ActivePerl-for-Windows_12995284.html
Editor (ab W2k)
http://www.chip.de/downloads/Komodo-Edit_29950542.html

Habe selber aber gerade keines installiert.
Gast #2693224
Lesenswert?

Abdul K. schrieb:
>> Kannst du mit meinem Converterscript von oben etwas anfangen?
> Sieht sehr kryptisch aus. Sollen wohl Hausaufgaben für mich werten??

Ach was kryptisch und Hausaufgaben, simples Perl und 
"Windowskommandozeilensprache".

Das Skript mit Endung .pl speichern, eine DOS-Box öffnen, in den Ordner 
vom Skript navigieren und mittels oben hinterlegtem Aufruf starten. Das 
Wort "perl" musst du u.U. durch "tinyperl" ersetzen. "<eingabe.txt" sagt 
Windows dem Skript zeilenweise die Datei eingabe.txt in die Nase zu 
schieben und ">ausgabe.txt" die Ausgabe des Skriptes zeilenweise in 
ausgabe.txt zu speichern. So einfach ist das. :-)
OP Persönliche Seite #2693237
Lesenswert?

Das meinte ich auch nicht. Eher das hier:
  /([\d\.-]+):blank:([\d\.-]+):blank:([\d\.-]+)/;

Ehrlich, jetzt weiß ich warum ich irgendwo las, Perl wäre nicht gerade 
leserlich. Erwartet hätte ich eher sowas:

set zeile = read file bluberbla with delimiter="CRLF"
set vector wörter to line with delimiter=" "

oder so. AppleScript fand ich mal sehr schön. Zumal man damit direkt in 
dein DOM-Modell der benutzten Programme eingreifen kann.
Gast #2693269
Lesenswert?

Abdul K. schrieb:
> Das meinte ich auch nicht. Eher das hier:
>
1
   /([\d\.-]+)[[:blank:]]([\d\.-]+)[[:blank:]]([\d\.-]+)/;
OK, zugegeben die Zeile hat was...
Das ist ein Regular Expression, in Fachkreisen auch Regex. Das Ding wird 
Stück für Stück mit einer Zeile Text verglichen. Es handelt sich hier um 
ein relativ einfaches Regex, da gibt es deutlich Schlimmere.
1
/ -->leitet den Regex ein
2
[] -->die in den eckigen Klammern stehenden Zeichen sollen vorkommen:
3
\d -->digit 0-9
4
\. -->ganz normaler Punkt (Der Punkt hat normalerweise eine andere Bedeutung und wird deshalb mittels \ escaped.)
5
- -->ganz normales Minuszeichen
6
+ -->Die Zeichen innerhalb der eckigen Klammern können mehrfach vorkommen (>=1 mal).
7
() -->Alles was zum Ausdruck in den runden Klammern passt in Variable $n ($1,$2,...) speichern
8
[[:blank:]] -->frisst das Leerzeichen zwischen zwei Werten, da sollte eigentlich noch ein + hinter (hab ich vergessen)
9
und wieder das gleiche noch zwei mal

Erwartet hätte ich eher sowas:
> set zeile = read file bluberbla with delimiter="CRLF"
> set vector wörter to line with delimiter=" "
Bloss nicht, das riecht wie Basic grusel. Viel zu geschätzig.
Gast #2693326
Lesenswert?

Abdul K. (ehydra) schrieb:

> Danke. Ich bin nur Gelegenheitsprogrammierer und brauche was, wo ich
> nicht nach 6 Monaten alles wieder lernen muß.

Kann ich voll nachvollziehen. Nach der Code Erklärung durch perlbastel 
ist klar: Alles weiterhin unklar.

Wie man sich sowas freiwillig antun kann ist mir schleierhaft. Da soll 
sich noch mal einer über ein goto bei BASIC aufregen.
Gast #2693340
Lesenswert?

Abdul K. schrieb:
> Danke. Ich bin nur Gelegenheitsprogrammierer
Du wirst es nicht glauben: Ich auch.

> und brauche was, wo ich
> nicht nach 6 Monaten alles wieder lernen muß.
Och, mit Perl-Reference-Cards aus dem Internet geht es ganz gut. 
Irgendwann hat man das Zeug intus, für C brauche ich schon keinen K&R 
(Buch) mehr. Sooo kompliziert ist das alles nicht.

Proxxon schrieb:
> Wie man sich sowas freiwillig antun kann ist mir schleierhaft. Da soll
> sich noch mal einer über ein goto bei BASIC aufregen.
Also ich find das genial und Basic gruselig, aber jedem das Seine. :-)

Genug OT...
OP Persönliche Seite #2693345
Lesenswert?

Ja, das ist ne geile Sache wenn man es jeden Tag verwendet. Sehr 
effektiv.
Ich kenne den Effekt auch von LTspice. Mal ein Jahr nicht benutzt und 
man geht einige Tage sozusagen virtuell am Stock.

Ich handhabe das Problem mittlerweile generell so, daß ich alle meine 
Tools regelmäßig a bisserl benutze. Sozusagen die berühmte 
Bewegungsfahrt bei der BW ;-) Dann ist die Restartphase deutlich kürzer.

Ich schaue mir auch abundzu meine alten Platinenentwicklungen an und 
sogar alte Ordner. Mit dem Hobbythek-Brief zum TMS1000 Türgong hatte 
mich meine Mutter ca. 1978 vollends infiziert. Sie ist schuld und ich 
habs im Ordner, lustigerweise.


Für den Optimzier gibts zwei super Anwendungen:
- Temperaturausgleichnetzwerke (in Minuten)
- SMPS Regelkonstanten testen (wohl über Nacht)
Gast #2693383
Lesenswert?

perlbastel (Gast) schrieb:

> Also ich find das genial und Basic gruselig, aber jedem das Seine. :-)

Das ist normal, wenn man tief in einer Materie drinsteckt, wie das bei 
dir wohl der Fall ist. Ich finde es nur abartig ein goto in anderen 
Programmiersprachen für "unnachvollziehbares wildes springen" zu 
verunglimpfen, während solche Kauderwelchausdrücke dann normale 
Programmierkunst sein sollen. Dagegen ist selbst C geradezu 
selbsterklärend (wenn man es nicht in pervertierter Form verwendet, was 
bei C auch möglich ist). ;)

Abdul K. (ehydra) schrieb

> Ich kenne den Effekt auch von LTspice. Mal ein Jahr nicht benutzt und
> man geht einige Tage sozusagen virtuell am Stock.

Den "Effekt" kenne ich von vielen Programmen die (zu) wenig intuitiv 
sind.

> Ich handhabe das Problem mittlerweile generell so, daß ich alle meine
> Tools regelmäßig a bisserl benutze. Sozusagen die berühmte
> Bewegungsfahrt bei der BW ;-) Dann ist die Restartphase deutlich kürzer.

Ich schreibe mir vieles in persönlichen Liesmich Dateien auf. Das 
Wichtigste ist möglichst schnell alles (wieder) zu finden. Informationen 
sind ja prinzipiell seit dem es das WWW gibt genug vorhanden. Nur muss 
man sich die jedesmal (wenn man eine zeitlang mal ein Tool nicht mehr 
angepackt hat) wieder zeitaufwendig zusammensuchen. Also besser Notizen 
machen. Mir sind gut kommentierte Beispiele zum Einstieg immer lieb und 
wichtig.
OP Persönliche Seite #2693427
Lesenswert?

Da ist doch Ironie drinnen, oder? Bloß nicht den großen Matrizen-Meister 
kritisieren wegen dem GUI. Du fällst so wie ich in Ungnade! Anstatt, daß 
er sich auf den Kernel konzentriert und das GUI von einem anderen Profi 
machen läßt. Client-Server Architektur wäre dann auch gleich 
miterledigt.
So kommt es dann eben zu Kuriositäten wie WMF-Export von Bildchen.


Bei mir landet möglichst alles in ASCII-Dateien, notfalls RTF. Nach dem 
Suchen kommt nämlich das Wiederfinden. Momentan mit locate32. 
Organisieren tue ich nach Thema nur halbherzig.

M$ interessiert sich ja nur für das was man sich multimediamäßig 
reinzog. Das wird dann in unsichtbaren Ordnern zwischengespeichert, die 
im normalen Dateibrowser unerreichbar sind (Es fehlen Pfad-Teile im 
Dateipfad).
#2698151
Lesenswert?

kay schrieb:
> Eine Frage an Helmut: Warum hast du bei der Kostenfunktion noch
> zusätzlich durch f dividiert?
>
> mfg

Diese Gewichtung mache ich, damit bei der Integration die Werte bei 
hohen Frequenzen nicht total überbewertet werden. Stell mal die 
Frequenzachse auf linear, dann siehst du, dass der wichtige untere 
Bereich zu "kurz" käme, wenn man keine Gewichtungsfunktion hätte.
Meine Gewichtungsfunktion hier ist Faktor 1/freq.
OP Persönliche Seite #2707548
Lesenswert?

1. Das mit der nicht notwendigen Phase habe ich probiert. Der Fitter 
kann es tatsächlich ohne diese Info. Das ermöglicht rein skalare 
Messungen, also eine simple einkanalige Soundkarte tuts!
Ich denke als Kriterium reicht: Lineare Schaltung ohne verstärkende 
Elemente. Oder ist jemand anderer Meinung?

2. Leider ist der Fitter nicht fähig, selbst passende Startwerte zu 
finden. Sobald man etwas weiter von den idealen Ergebniswerten startet, 
findet er nicht den Weg.



und dann das Problem :
3. So, der Realitycheck mit einer DCF77 Ferritantenne. Problem dabei: 
Ich kann mir nicht erklären, wieso LTspice beim Einlesen der realen 
Daten alles kleiner -40dB auf diese -40dB begrenzt. Höhere Werte sehen 
richtig aus. Dazu habe ich dann mal einige Testzeilen in den 
PWL-Abschnitt des SUBs reingeknallt.
Das verstehe ich nicht!

Anbei alle notwendigen Daten. In den FFT-Daten der Ferritantenne ist 
noch ein Auflösungsfehler der zu einem nicht vorhandenen Peak führt, 
wird gerade untersucht. Ist aber kein Fehler von LTspice und hier 
erstmal ohne Belang.
Angehängte Dateien:
OP Persönliche Seite #2707754
Lesenswert?

Gibt es bei der PWL-Struktur auch ein Format bei dem ich nicht die 
Frequenz in jeder Zeile angeben muß? Mir ist aufgefallen, daß man z.B. 
mit geschweiften Klammern berechenbare Ausdrücke während des Einlesens, 
benutzen kann. Leider gibt mir SpectrumLab keine Einzelfrequenzen zu den 
FFT bins mit aus. Die muß ich dann reinfummeln und auch noch 
sequenzieren.
OP Persönliche Seite #2708004
Lesenswert?

Morgendlich nochmal das mit der Frequenz. Ich habe die Struktur auf das 
hier reduziert:
* 2012-06-07 23:43:34.9 46.8750 0.0000
*F [Hz]  Imp [Ohm]  Phase [ø]
.subckt captured 1 2
.param f=46.8750
R1 1 10  0.0000001
V1 10 11 0
B1 11 2 V=I(V1)  DB FREQ=
+{0*f} -75.2 0
+{1*f} -97.6 0
+{2*f} -90.7 0
+{3*f} -82.9 0
+{4*f} -83.9 0
+{5*f} -85.9 0
+{6*f} -85.5 0
+{7*f} -80.2 0

Nur die Hochzählerei kriege ich nicht raus. Habe mir die bekannten 
PWL-Varianten alle angeschaut, aber alle wollen die Frequenz und die 
Phase in der Liste explizit drinnenhaben. Gibts da keinen Trick die zu 
entfernen, also nur einmal zu definieren? Und dann die Frequenz 
automatisch hochsteppen lassen!

Da muß ich mich ja doch mit Perl schon jetzt rumquälen. Früher hatte ich 
mal einen Texteditor (auf dem Mac), der automatisch Zeilennummern 
einsetzen konnte für ganze Listen. Gibts da einen der auf Windoof läuft?


Warum hat die Liste eigentlich jeweils ein + am Zeilenanfang. Scheint 
mir ein Trick zu sein, um im Time-Domain die Frequency-Domain 
abzubilden. Oder sehe ich das falsch?
#2708047
Lesenswert?

> Warum hat die Liste eigentlich jeweils ein + am Zeilenanfang. Scheint
mir ein Trick zu sein, um im Time-Domain die Frequency-Domain
abzubilden. Oder sehe ich das falsch?

Das + am Anfang der Zeile haben die Väter von SPICE vor 40 Jahren 
definiert.
Das bedeutet nichts anderes als eine Fortsetzung der vorherigen Zeile.
Zum Glück gibt es das. Sonst müsste man elend lange Zeilen machen.
Das + geht übrigens mit jeder Art von SPICE-Zeilen.


B1 11 2 V=I(V1)  DB FREQ=
+{0*f} -75.2 0
+{1*f} -97.6 0

Das macht SPICE beim Einlesen daraus.

B1 11 2 V=I(V1)  DB FREQ= {0*f} -75.2 0 {1*f} -97.6 0
#2708102
Lesenswert?

> Aber auch in deinem Vorschlag bleibt f jeweils für jeden Bin drinnen.
> Da kann wohl nur Mike was dran ändern.

So groß ist der Aufwand für den Anwender nicht.
Mike macht da bestimmt keine Extralösung, wenn brauchbare Standards 
(SPICE-Syntax) existieren und bereits implementiert sind.
#2708227
Lesenswert?

Zum HP4194 gibts von Agilent noch diverse Applikationsschriften:
http://www.home.agilent.com/agilent/facet.jspx?k=HP4194&neighborhood=ETM&kt=1&cc=DE&lc=ger&homesearch=Search&searchbtn=Suche

zum Beispiel http://cp.literature.agilent.com/litweb/pdf/5950-2882.pdf
"Impedance Characterization of Resonators using the 4194A Impedance / 
Gain-Phase Analyzer (AN 339-1)" von 1985, darin sind auf Seite 4 die 
fünf Ersatzschaltungen zu sehen.

im HP-Journal stand im Jan 1980 nur etwas zum Vorgänger HP4191:
http://www.hpl.hp.com/hpjournal/pdfs/IssuePDFs/hpjindex.html#1981

Der 4195 hatte wohl dieselbe Funktion wie der 4194, dazu habe ich hier 
ein gedrucktes Einführungs-Handbuch (deutsche Ausgabe) und auch das oben 
erwähnte Impedance Measurement Handbook.
OP Persönliche Seite #2708248
Lesenswert?

Christoph Kessler (db1uq) schrieb:
> Zum HP4194 gibts von Agilent noch diverse Applikationsschriften:
> 
http://www.home.agilent.com/agilent/facet.jspx?k=HP4194&neighborhood=ETM&kt=1&cc=DE&lc=ger&homesearch=Search&searchbtn=Suche
>
> zum Beispiel http://cp.literature.agilent.com/litweb/pdf/5950-2882.pdf
> "Impedance Characterization of Resonators using the 4194A Impedance /
> Gain-Phase Analyzer (AN 339-1)" von 1985, darin sind auf Seite 4 die
> fünf Ersatzschaltungen zu sehen.
>
> im HP-Journal stand im Jan 1980 nur etwas zum Vorgänger HP4191:
> http://www.hpl.hp.com/hpjournal/pdfs/IssuePDFs/hpjindex.html#1981
>

Danke Christoph. Werde ich lesen.


> und auch das oben
> erwähnte Impedance Measurement Handbook.

Das ist online.
OP Persönliche Seite #2709133
Lesenswert?

So, das ganze Spektrum ist enthalten. Ich habe noch die Meßdaten per 
Hand auf absoluten Pegel gebracht.

Muß leider erstmal aufgeben trotz einigen Versuchen u.a. Einschränkung 
des Frequenzbereichs. Der Fitter findet keine Lösung. Vielleicht liegts 
an dem Rauschen. Ein Mensch kann ohne viel Aufwand den resonanten 
Bereich erkennen.

Vielleicht will ja jemand spielen. Im Generator sind die gemessenen 
Ersatzwerte der Ferritantenne, wobei der R der Spule nur den 
DC-Widerstand beeinhaltet. Also nicht perfekt.
In der FFT zeigt die reale Antenne aber klar die Impulse von DCF77.
Angehängte Dateien:
OP Persönliche Seite #2709973
Lesenswert?

Das sind echte Daten direkt aus der Ferritantenne. Also sind auch einige 
Peaks durch Sender drinnen.
Die Frage stellt sich einfach, wie man dem Optimizer beibringt was 
wichtig und was unwichtig. Die Gewichtungsfunktion ist das Problem.
Auch weiß ich nicht, was er zu dem Grundrauschen sagt.

Speziell bei der Ferritantenne wäre es auch praktisch gesehen, nicht 
möglich diese komplett abzuschirmen und dann einen Rauschgenerator als 
Quelle zum Vermessen zu benutzen. Sobald man eine Ferritantenne mit nur 
etwas besserem Q versucht irgendwie abzuschirmen, wird sie total 
verstimmt! Bei einem Q von z.B. mehreren hundert, reicht das bloße 
Sitzem vor dem Meßaufbau für ordentlich andere Werte.
Schon die Frage, ob Scope während der Messung dran oder ab, ist ein 
Problem. Die zusätzliche Erdverbindung verstimmt bereits deutlich die 
Antenne.

Um zu prüfen, ob ich keinen Mist mache, habe ich die PAL-Frequenz Peaks 
drinnengelassen, also das TV im gleichen Raum blieb an.
Das sind so mehr oder weniger die einzigen Peaks die man aus dem 
Spektrum noch entfernen könnte.

Das Ersatzmodell für die Antenne ist auch erstmal in seiner Struktur ok.

Ich werde mal eine andere Form der FFT benutzen und schauen.
#2710899
Lesenswert?

Zur Messung von RLC-Bauteilen mit der Soundkarte gibt es hier ein 
Vortragsskript von DL4SDC:
http://www.p26.org/p26/vortraege/rlc/rlc-meter.pdf
http://www.p26.org/p26/vortraege/rlc/rlcmeter-20051108.tar.gz  Source 
dazu
http://www.p26.org/p26/vortraege/rlc/rlcmeter.static.zip Objectcode

Vom gleichen Autor gibt es noch einen Artikel im Praxisheft18 der AATiS:
http://www.aatis.de/content/praxisheft-18
OP Persönliche Seite #2714011
Lesenswert?

Ich habe noch weiter mit dem Fitter gespielt, bin aber nicht wirklich 
erfolgreich gewesen.

Erst habe ich die FFT in SpectrumLab durch eine FFT in LTspice ersetzt. 
In der Hoffnung, eine längere Aufzeichnung wird weicher ohne den 
heftigen Rauschteppich. Das kann man in SL gut sehen, wenn man die 
Anzahl der Bins erhöht.
Dazu wurde in LTspice ein längeres Stück Samples (20 Sekunden) von der 
Soundcard eingelesen. Irgendwie ist die FFT in beiden Programmen aber 
sehr unterschiedlich implementiert, so daß in SL 2048 bins kein Problem 
sind, in LTspice aber 2 Millionen bins notwendig sind, damit die obere 
Grenzfrequenz die 100KHz erreicht. Also ist das kein toller Weg. Die 
entstehende exportierte FFT-Datei ist 100MB groß! Eine Länge von einer 
Sekunde brachte auch keinen Fortschritt.

Dann habe ich mit dem Frequenzbereich der Simulation gespielt. Da sieht 
es so aus, daß diese möglichst symmetrisch zur f0 Wunschfrequenz sein 
sollte, dann läuft der Fitter am besten. Vielleicht wäre eine 
geometrische Relation sogar noch besser?

Weiter habe ich die Anzahl der Stützfrequenzen variiert. Auch hier kein 
eindeutiges Ergebnis. Eine Umstellung von linear auf dekadisch scheint 
leicht besser.

Desweiteren wurde die Cost-Funktion in diversen Abwandlungen 
ausgetestet. Auch in einer Variante, die f0 konzentrisch arbeitet. Hat 
nichts gebracht.

Dann habe ich versucht, die Verstärkung beider Kanäle z und z1 nominal 
gleich zu machen. Das verändert das Fitter-Verhalten sehr stark. Nur 
leider weiß ich nicht, wie man eine Fitter-Funktion bauen könnte, die 
diese Verstärkungsabhängigkeit eliminiert. Bloßes Einführen einer 
weiteren Variable, die durch den Fitter automatisch als 5. Variable 
mitoptimiert wird, hat nur Chaos verursacht. Vielleicht müßte man hier 
die Gewichtung der Freiheitsgrade auch noch unterschiedlich machen. Die 
sind ja momentan alle gleichberechtigt und nur durch die Cost-Funktion 
miteinander verknüpft.

Mir scheint es so, daß der Optimierer immer dann eine akzeptable Lösung 
findet, wenn die Voreinstellung den Peak in den Bereich des Bandpasses 
bringt. Er dann also nur noch links oder rechts den Berg hoch optimieren 
muß. Ist er weiter weg, dann verrennt er sich total.

Ich bin also erstmal am Ende mit dem Latein.


Dann noch ne Frage zur Cost-Funktion nach Helmut:
In deiner Funktion wertest du nur die Magnitude aus, richtig? Also die 
jeweilige Phase bleibt unberücksichtigt. Ich stelle mir das Ignorieren 
der Phase als optimal vor, wenn man eine Messung machte die diese nicht 
beeinhaltet.
OP Persönliche Seite #2719364
Lesenswert?

Ich wollte ja schon fast erstmal aufgeben, aber nach einigem Überlegen 
dann: Hier eine neue Version.
Ich habe die Cost-Funktion so umgeschrieben, daß sie nun unabhängig vom 
absoluten Pegel ist. Der ist ja zumindest bei einer Messung als Antenne 
mit nur einem Rauschteppich durch die Atmosphäre nicht definierbar.
Damit wird sie offensichtlich wesentlich stabiler. Nun kann ich sogar 
den Frequenzbereich völlig großzügig maximal machen und es 
funktioniert. War vorher undenkbar.

Vielleicht geht ja noch mehr durch Verbesserung der Cost-Funktion? 
Spielt mal damit!

Sieht danach aus, daß nun an anderen Baustellen optimiert werden muß:
- Ersatzmodell der Antenne
- bessere Messung
Also was ich meine: Vermutlich kann das Fitting momentan gar nicht 
besser werden.


Das ZIP enthält alle notwendigen Dateien außer LTspice und Tinyperl.
Ergebnis_2a: Vollansicht des Spektrums
Ergebnis_2b: Zoom in die interessante Region

Die Startwerte liegen ordentlich neben dem Maximum, so daß der Fitter 
nicht zufällig zu nahe am Optimum startet.
Angehängte Dateien:

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