Forum: Digitale Signalverarbeitung / DSP / Machine Learning Frequenz aus Gemisch mit Gleichanteil herausziehen


von Matthias (Gast)


Lesenswert?

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.

von Kai S. (kai1986)


Lesenswert?

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

von Matthias (Gast)


Lesenswert?

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.

von Kai S. (kai1986)


Lesenswert?

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

von Alexander L. (lippi2000)


Lesenswert?

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.

von Michael W. (Gast)


Lesenswert?

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?

von Maik M. (myco)


Lesenswert?

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).

von trulli (Gast)


Lesenswert?

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.

von J. S. (engineer) Benutzerseite


Lesenswert?

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.

von J. S. (engineer) Benutzerseite


Lesenswert?

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.

von Mark B. (markbrandis)


Lesenswert?

Matthias schrieb:
> Nun kommt aber ein unsymmetrisches Signal herein

Kommt es auch dann noch herein, wenn Du einen Koppelkondensator 
dazwischen schaltest? ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.