Forum: Digitale Signalverarbeitung / DSP / Machine Learning Problem beim messen des Frequenzgangs per SW (FIR Filter)


von Manfred M. (bittbeisser)


Angehängte Dateien:

Lesenswert?

Hallo,

ich befasse mich erst seit kurzem mit digitalen Filtern, die ich jetzt 
für ein Programm Projekt brauche. Um damit besser experimentieren zu 
können, habe ich mir ein Programm geschrieben, das den tatsächlichen 
Frequenzgang ermitteln soll (anstatt die Sollwerte zu errechnen).

Das funktioniert ansatzweise auch schon recht gut. Aber an bestimmten 
Stellen im Frequenzgang treten regelmäßig Fehler auf, deren Ursache ich 
nicht finden kann. Es scheint so, als wenn die Fehler nach dem Muster:

  f = (f-sample / N) * n

auftreten, soweit sie in den Frequenzbereich fallen (N und n ganze 
Zahlen).

Um das zu verdeutlichen, hänge ich mal ein Bild an.

Und dabei warte ich noch, bis 2 Komplette Schwingungen alle Taps 
durchlaufen haben, bevor die Auswertung startet.

Was kann ich da noch falsch gemacht haben?

mfg.
Manfred

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Beim Wobbeln von Hochpassfiltern hat man gern mal Störungen durch 
Harmonische, wenn der Sinus nicht ganz exakt ist (z.B. Rundungsfehler). 
Das führt allerdings zu einem scheinbaren Durchlass im Sperrbereich, ist 
also hier nicht das Problem.

Wenn die Phasenlage zwischen Samplefrequenz und Messfrequenz ungünstig 
ist, kann es zu solchen Erscheinungen wie im Bild komen.

Ähnliches machen DDS-Synthesizer in der Umgebung ganzzahliger Bruchteile 
der Taktfrequenz. Einfach zu sehen bei der halben Taktfrequenz: Es gibt 
nur zwei Stützstellen, die auf den Spitzen der Sinustabelle liegen 
können, aber genauso auch in den beiden Nulldurchgängen. Das macht eine 
Ausgangsamplitude von 100% oder Null Prozent. Leicht neben der 
Taktfrequenz hat man üble Schwebungen, also 100% Amplitudenmodulation. 
Bei einem Drittel der Taktfrequenz wird das schon kleiner.

: Bearbeitet durch User
von Manfred M. (bittbeisser)


Lesenswert?

Hallo,

also der Sinus ist schon fast perfekt, soweit es die Abtastrate erlaubt.

 >> Wenn die Phasenlage zwischen Samplefrequenz und Messfrequenz 
ungünstig ist,...

Genau das scheint hier eines der Probleme zu sein. Ich habe das mal 
durchgerechnet für die Frequenz 888.9Hz. Das bedeutet bei Sr=8000 genau 
9 Abtastungen für eine Schwingung (also bei 0, 40, 80, 120, 160, 200, 
240, 280, 320, 360 Grad). Damit ist dann klar, das der gewünschte 
Maximalwert bei 90 Grad nie auftritt, u.A. auch wegen der Programm 
bedingten starren Phasenkopplung.

Ich habe jetzt meinen "Oszillator" so geändert, das er statt bei 0 bei 
PI/2 beginnt. Das mildert die Störungen deutlich.

Aber ich habe jetzt erkannt, das man die üblichen Messmethoden aus der 
Analogtechnik nicht direkt auf Computerprogramme übertragen kann.

Das mit den erwähnten Schwebungen scheint nicht das Problem zu sein. Im 
Gegenteil, ich hatte sogar darauf gehofft, denn ich mache so viele 
Messungen, dass 10 komplette Wellenzüge alle Taps durchlaufen haben. Das 
bügelt einiges aus, aber nicht alles.

Im übrigen scheint der Effekt generell bei höheren Frequenzen stärker 
aufzutreten, da hier prinzipbedingt weniger Abtastungen vorliegen.

Jedenfalls war es sehr interessant, so einem Filter mal bei der Arbeit 
zuzuschauen. Ich hatte gestern Abend mal bei jedem Filterdurchlauf den 
Inhalt aller Taps bei jedem Durchlauf ausgeben lassen, zwar nur für 3 
Frequenzen, aber das waren auch schon über 500 Zeilen.

 >> Ähnliches machen DDS-Synthesizer in der Umgebung ganzzahliger 
Bruchteile der Taktfrequenz.

Bedeutet dass das die das gleiche Problem haben?

Gruß Manfred (DK6HC)

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.