Es liegt ein Frequenzgemisch vor, aus dem ich mittels Multiplikation mit
3 Sinuswellen den Anteil dieser Frequenzen ermittle und so feststelle,
welche dieser Frequenzen gesendet wurde. (Es wird nur eine gesendet, die
zu finden ist).
Dies klappt prima für symmetrische Signale um den Nullpunkt.
Nun kommt aber ein unsymmetrisches Signal herein, dessen Offset ich
nicht kenne. Es geht auch nicht unbedingt von 0 - X, sondern durchaus
von 0,1 bis X + 0,1 oder so, z.B. von 0,3 bis 2,1V oder 0,7 bis 1,6 V,
da die Amplitude schwankt.
Bilde ich nun die Korrelation mit den 3 Frequenzen haben alle ordentlich
Offset und vor allem zeigt die niedrigste immer das meiste an, auch wenn
diese schwächer vertreten ist. Bei geringen Amplituden versagt das also.
Wie kann man vorgehen, um das zu lösen?
Mittelwert bilden und vorher abziehen geht nicht gut, da dies nicht der
Mittelwert der echten Welle ist und dadurch Sprünge entstehen.
Hallo,
allgemein wird eine Fouriertransfromation verwendet, wenn man eine
zeitliche Abfolge hat und die Frequenzen wissen möchte. Als Algorithmus
wird bei diskreten Werten die schnelle Fouriertransformation (FFT)
verwendet. Wenn du wirklich nur exakt eine Frequenz haben willst gibt es
auch als Abwandlung den Goertzel-Algorithmus.
Gruß Kai
Naja, sowas mache ich ja praktisch und dort - wie auch in einer FFT -
hebt sich der niederfrequente Anteil an, wenn ein DC drin ist, weil der
DC ja alle Frequenzen enthält, aber nicht balanciert. DC ist ja ein
Rechteck und bringt mehr tiefe Frequenzen ein.
Real sieht die Sache so aus:
F1 = 0,5
F2 = 4,2
F3 = 1,3
Also: Die F2 ist die, die eingekoppelt wurde.
Beim geringem Offset:
F1 = 2,3
F2 = 7,1
F3 = 4,5
immer noch erkennbar.
Beim hohem Offset:
F1 = 5,7
F2 = 11,1
F3 = 14,2
scheinbar die dritte am stärksten.
Matthias schrieb:> hebt sich der niederfrequente Anteil an, wenn ein DC drin ist
Nein, DC hat genau die Frequenz 0, das hat auf die anderen Frequenzen
keinen Einfluss.
Matthias schrieb:> DC ist ja ein> Rechteck und bringt mehr tiefe Frequenzen ein.
Nein. DC ist DC und Rechteck ist Rechteck. Das hat miteinander überhaupt
nicht zu tun.
Deinen Beispielen kann ich nicht folgen. Ein Offset hat auf die
Amplitude eines Sinussignals keinen Einfluss, er verschiebt das ganze
nur.
Lade mal eine Datei mit den Rohdaten deiner 3 Beispiele hoch, dann mach
ich dir davon mal eine FFT.
Gruß Kai
Irgendwas stimmt bei deiner Untersuchung nicht. Vielleicht solltest du
mal mathematisch rangehen.
Frequenzgemisch aus zwei Kosinussignalen mit Offset.
Korrelationssignale:
Analyse für Signal 1:
Wenn kein Signal mit der Frequenz w2 gesendet wird, ist A1=0 und der
zweite Summand im Integral entfällt. Das Integral kann in zwei Integrale
aufgeteilt werden. Das zweite Integral mit den DC-Werten wird zu Null,
da der Kosinus über eine Periode integriert Null ergibt. Das
Korrelationssignal bildet sich daher nur aus dem ersten Summanden.
Wäre dies nicht so, würde kein Lock-In-Verstärker funktionieren, bei
diesem spielt auch DC keine Rolle.
Anders sieht es aus, wenn A1 nicht Null ist, dann ändern sich die
Maximas der Korrelationsfunktionen.
Schwanken deine Offsets, besteht dein Signal aus einem Gemisch von
zusätzlichen Frequenzen, welche die KKF's zusätzlich verändern.
Matthias schrieb:> DC ist ja ein>> Rechteck und bringt mehr tiefe Frequenzen ein.
Das DC is dann ein Rechteck, wenn Du es schlagartig einblendest. Wie
prozessierst Du die Daten? offline oder online?
Für mich hört es sich nach Echtzeitverarbeitung an. Wie lange ist die
Periode der Messung? Die Mathematik der FFT stimmt ja nur dann, wenn man
eine genügend lange Periode misst, dass Signal sich nicht ändert und man
keine Kanten infolge nichtganzzahliger Samples<->Perdiodendauer hat.
Sonst kommt es zum leakage.
Matthias schrieb:> Mittelwert bilden und vorher abziehen geht nicht gut
Jetzt mal vom Logischen her:
Wenn es der echte Mittelwert ist, dann ist es auch der Offset und wenn
der abgezogen wird, müsste der Effekt ja weg sein. Entweder ist also der
Mittelwert nicht richtig oder er ist gar nicht verantwortlich, für den
Fehler, den Du siehst - was ich nämlich glaube :-)
Wie berechnest Du die Werte? Formelfehler?
Du kannst doch den DC mit einem DC-Blocker (Highpass) rausfiltern, der
Aufwandt ist relativ gering:
1
out = in-lastin + coeff*lastout
2
lastin = in
3
lastout = out
für coeff setzt du Werte zwischen 0.9 und 1 ein, je näher du an die 1
gehst, desto langsamer reagiert der Filter (und desto näher ist der
Cutoff an 0Hz).
Den Gleichanteil bekommst du durch Abziehen des Mittelwerts eigentlich
zuverlässig weg. Ich würde folgendes mache: Wähle dir eine
Fensterfunktion und multipliziere damit die Daten. Dadurch ist der
Rechteckeffekt weg. Berechne dann den Mittelwert und ziehe ihn ab. Dann
sollt eine FFT gut aussehen. Auch mal probieren zuerst den Mittelwert
abzuziehen und dann zu Fenstern.
Maik M. schrieb:> Du kannst doch den DC mit einem DC-Blocker (Highpass) rausfiltern, der> Aufwandt ist relativ gering:
Das wäre ein IIR-Filter, das den trägen Mittelwert über einen längeren
Bereich, genauer sogar der gesamten Historie mitschleppt. Ob das
praktisch ist, sei mal dahingestellt. Einfach zu programmieren ist es
natürlich.
Anderer Vorschlag:
Die Korrelation erfolgt doch sicher mit einem diskreten TAP-basierten
Filter. Dann kannst Du so auch den Gleichanteil in der jeweiligen
Periode bestimmen wie trulli das schon schrieb.
trulli schrieb:> Auch mal probieren zuerst den Mittelwert> abzuziehen und dann zu Fenstern.
Also wenn, dann tatächlich erst abziehen und dann fenstern, sonst hängt
der Fensteroffset noch mit drin.
Aber:
Wie schon erwähnt wurde, sollte das letzlich nur ein Offset in den
ermittelten Werten der Korrelation ergeben und zwar in allen
betrachteten Frequenzen gleich. Ist das nicht so? Wie rechnest Du?
Abziehen macht z.B. dann Sinn, wenn die Vektorbreite verkleinert werden
soll, denn vom Prinzip her kannst Du einen solchen Offset auch im
Frequenzspektrum wegrechnen.
Nachtrag:
Wenn ich genau drüber nachdenke, könnte es in der Tat sein, dass Dein
Rechteck Dir die Frequenzen verbiegt, da es nach Laplace einen grossen
niederfrequenten Anteil mit abklingenden Höhen hat. Wenn Du also keinen
Offset abziehst, müsstest Du das Spektrum des Rechtecks abziehen, bzw.
mit Fensterung das Spektrum des Fensters - idealerweise also eine "von
Hann"-Grundschwingung. Oder Du ignorierst diese Frequenz einfach, wenn
das geht.
Anders herum ist es so, dass das Abziehen des Mittelwertes von
Wertegruppe zu Wertegruppe jedesmal ein anderes Zwischenergebnis
liefert, besonders ohne Fensterung und damit scheinbare HF in die
Analyse einspeist.
Matthias schrieb:> Nun kommt aber ein unsymmetrisches Signal herein
Kommt es auch dann noch herein, wenn Du einen Koppelkondensator
dazwischen schaltest? ;-)