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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.