Hier ist mein Code für ein zweifarbiges Signal, bei dem ich ein Stoppband verwende, um den höheren Ton zu entfernen, und dann das Vorher (in Blau) und Nachher (in Rot) im Frequenzbereich zeichne, nachdem ich mein Signal mit den Filterkoeffizienten gefaltet habe .
Wenn Sie diesen Code in Matlab einfügen, können Sie deutlich erkennen, dass die höhere Frequenz vom Filter erfolgreich entfernt wurde. Aus irgendeinem Grund wurde jedoch die Amplitude der niedrigeren Frequenz halbiert, und je mehr ich die Anzahl der Filterkoeffizienten erhöhe. Je mehr es nur meine ganze Kurve abflacht, warum tritt dies auf? Und wie kann ich das verhindern, damit sich das Sperrband nicht nach außen ausbreitet? Hier ist das Bild und der Code:
fSampling = 8000; tSampling = 1 / fSampling; t = 0: t Abtastung: 0,005; F0 = 1000; F1 = 3000; xt = sin (2 · pi · F0 · t) + sin (2 · pi · F1 · t); ht = fir1 (40, .25, "Stop"); yt = conv (xt, ht); fAxis = -4000: 125: 4000-125; xF = fft (xt, 64); MagXF = fftshift (abs (xF)); Diagramm (Achse, MagXF); warten Sie mal yF = fft (yt, 64); MagYF = fftshift (abs (yF)); Handlung (Achse, MagYF, 'r')
Antworten:
Filter haben immer einen inhärenten "Abfall" in ihrem Frequenzgang, weil Sie praktisch kein Durchlassband realisieren können, das eine perfekte Rechteckfunktion ist. Bei einem Tiefpassfilter wird der Punkt, an dem die Stärke Ihres Frequenzgangs auf -3 dB abfällt, als Durchlassband und alles darüber hinaus als Stoppband bezeichnet (technisch gesehen alles über die Eckfrequenz hinaus, aber wir nehmen das Eckfrequenz auf -3dB). Wie schnell sich Ihr Frequenzgang über das Durchlassband hinaus abschwächt, hängt von der Filterlänge ab.
Wenn Sie sich den Frequenzgang Ihres Filters
ht
ansehen, werden Sie feststellen, dass er bei 1000 Hz auf -6 dB abfällt:Es ist also sinnvoll, dass die Leistung nach dem Filtern um 6 dB abfällt, was Sie in Ihrer Figur als Halbierung der Amplitude sehen.
Wenn Sie sich die Dokumentation für die von
fir1
Ihnen verwendete Funktion angesehen hätten, hätten Sie dies auch erkannt (Hervorhebung meiner):Um schärfere Filter zu erstellen, bei denen die Antworten einem Rechteck sehr nahe kommen, müssen Sie IIR-Filter verwenden, die mit einer Reihe von Stabilitätsproblemen usw. einhergehen, aber definitiv eine Option darstellen. Sie können meine Antwort hier für einige Ideen zur Implementierung eines IIR-Filters zweiter Ordnung mit diskreter Form und sehr scharfen Ecken sehen. Das Beispiel gibt es für einen Bandpassfilter, aber Sie können die Dokumente für die dort verwendeten Funktionen nachlesen und selbst eine Tiefpassversion implementieren.
quelle
Es braucht Zeit, bis ein Filter "entscheidet", ob sich ein Signal gerade innerhalb oder gerade außerhalb eines Filterübergangs befindet. Eine Lösung besteht darin, den Filterübergang nur von einem interessierenden Signal zu entfernen, z. B. auf halbem Weg zwischen Ihren beiden Testsignalen, wo in Ihrem Testfall nur sehr wenig Signal vorhanden ist, das durch eine unvollständige Entscheidung verzerrt werden kann.
quelle
Verwenden
Stattdessen ist die Dämpfung bei F0 sehr niedrig und bei F1 sehr hoch.
quelle