Ich habe eine klitzekleine Frage zur Interpretation der Amplitude und
der Verstärkung bei digitalen Filtern. Angenommen ich möchte für
dieselbe Abtastfrequenz und Filterstufenzahl (Samples) einige
verschiedene Frequenzbereiche extrahieren und bekomme aus MATLAB die
benötigten Filterkoeffizienten. Wie bekannt und zu erwarten, fallen die
Amplituden mit sinkender Frequenz ab - im Bild sind drei Grenzfrequenzen
mit jeweils der halben Frequenz eingetragen.
Wie gross ist nun die Ausgangsamplitude der Filter?
Kann ich davon ausgehen, dass die bei mittlerem Rauschen gleich sind,
oder muss ich das noch normieren?
Wenn ja, auf welchen Wert? Mittelwert dachte ich jetzt mal so, weil der
Maximalwert in Relation immer ein anderer ist. Andererseits hängt es
auch vom Signaleingang ab, was der Filter auswirft.
Was ich möchte, ist, dass Frequenzen, die mit derselben Amplitude im
Signal sind, auch an den Ausgängen der Filter mit zueinander stimmiger
Amplitude herauskommen, weil das relevant ist für die Applikation.
Filterer schrieb:> Wie gross ist nun die Ausgangsamplitude der Filter?
Schau dir den Betragsfrequenzgang an, z.B. mit freqz, da siehst du für
jede Frequenz den Verstärkungsfaktor.
Andreas Schwarz schrieb:> freqz
Ich simuliere das nicht in MATLAB sondern lasse mir da nur die
Coeffizienten geben und auch das nicht zwingend.
Ich habe es jetzt mit Rauschen probiert und es sieht so aus, als sei es
eine Art Mittelding von Amplitudenwert des höchsten Koeffiziten und
Durchschnitt.
Filterer schrieb:> Ich simuliere das nicht in MATLAB sondern lasse mir da nur die> Coeffizienten geben und auch das nicht zwingend.
Na dann kannst du doch trotzdem die Funktion freqz mit diesen
Koeffizienten aufrufen.
> Ich habe es jetzt mit Rauschen probiert und es sieht so aus, als sei es> eine Art Mittelding von Amplitudenwert des höchsten Koeffiziten und> Durchschnitt.
Das ergibt keinen Sinn.
Andreas Schwarz schrieb:>> Ich habe es jetzt mit Rauschen probiert und es sieht so aus, als sei es>> eine Art Mittelding von Amplitudenwert des höchsten Koeffiziten und>> Durchschnitt.> Das ergibt keinen Sinn.
Das liegt wohl an der Art des Rauschens oder wie Du misst, würde ich mal
behaupten, denn rein optisch scheinen mir die Flächen unter den Kurzen
gleich zu sein. Dann sollte auch dasselbe rauskommen, wenn man ein
Rechteck über das gesammte Fenster einspeist (alle Frequenzen gleich
bevorteilt).
> Da dann kannst du doch trotzdem die Funktion freqz mit diesen> Koeffizienten aufrufen.
Ok, ich schaue, dass ich wieder ans Matlab komme.
> rein optisch scheinen mir die Flächen unter den Kurzen
Du würdest also sagen, dass die Flächen gleich sein müssen?
Wenn ich mir mal ansehe, dass die Wellen weit weg der Mitte sich etwa
wegheben, dann bleiben im Wesentlichen die peeks. Könnte natürlich
stimmen. Eigentlich müsste man es integrieren können, aber ich sehe da 2
Probleme:
- Die Punkte sitzen diskret irgendwo auf der Kurve und diese ist nicht
kontinuierlich. Daher repräsentieren die sicher nicht genau das Integral
- Die negativen Punkte bedingen ein Abziehen vom Integral, das nicht bei
allen Frequenzen gegeben ist. Wenn die F sehr gering ist, so etwa bei
1/50 der Sampelfrequenz, gibt es gar keine negativen Punkte. Wie
behandelt man den Fall?
Das ist sinnloses Herumgebastel das dich nicht weiter bringt. Berechne
die Übertragungsfunktion, egal ob mit MATLAB, Octave oder sonst irgend
einem Filterentwurfsprogramm.
Das sind doch eigentlich einzelne Zahlenwerte, die nur durch je eine
Kurve verbunden sind. Soweit ich weiß, sieht die Impulsantwort eines
FIR-Filters so aus wie seine Koeffizientenkurven. Das sind also
unterschiedlich stark gedämpfte und verbreiteterte Impulsantworten, alle
mit der gleichen Verzögerung von 34 Takten bis zum Maximum.
>Das ist sinnloses Herumgebastel das dich nicht weiter bringt.
Es muss doch grundsätlzich möglich sein, zu sagen, ob und wie man die
Werte normieren muss, ohne mit einem aufwändigen Analyseprogramm zu
arbeiten.
Wenn ich z.B. die Koeffizienten für ein Filter mit hoher Grenzfrequenz
mit denen für eine geringe (5% Fs) vergleiche, bekomme ich a) andere
Spitzenwerte und b) auch andere Mittelwerte.
20% FS 5% FS
1 0,0096 -0,0046
2 0,0061 -0,0016
3 -0,0063 0,0017
4 -0,0106 0,0051
5 0,0000 0,0082
6 0,0114 0,0107
7 0,0073 0,0123
8 -0,0076 0,0128
9 -0,0129 0,0121
10 0,0000 0,0100
11 0,0141 0,0067
12 0,0091 0,0024
13 -0,0096 -0,0026
14 -0,0164 -0,0078
15 0,0000 -0,0129
16 0,0183 -0,0172
17 0,0121 -0,0203
18 -0,0129 -0,0217
19 -0,0224 -0,0210
20 0,0000 -0,0180
21 0,0263 -0,0126
22 0,0178 -0,0047
23 -0,0197 0,0052
24 -0,0356 0,0170
25 0,0000 0,0300
26 0,0466 0,0436
27 0,0340 0,0572
28 -0,0416 0,0699
29 -0,0865 0,0810
30 0,0000 0,0900
31 0,2018 0,0963
32 0,3742 0,0996
Mittel 0,0158 0,0165
Mittel 0,3742 0,0996
Es geht je im Grunde nur um die Amplitude, die der Filter auswirft und
ob die so schon stimmt oder nicht.
>Das sind doch eigentlich einzelne Zahlenwerte, die nur durch je eine>Kurve verbunden sind.
So ist es, die Kurve ist eigentlich ein Dummy und kommt vom Excel.
> alle mit der gleichen Verzögerung von 34 Takten bis zum Maximum
Es sind 64 Punkte und damit 32 Koeffizienten, jeweils gespiegelt.
Fenster ist eingerechnet.
Es stellt sich die zweite Frage, inwieweit die so entstehende
Filteramplitude vom ideal einer sehr viel feineren Kurve abweicht. Das
ist nämlich der Fall, wenn man z.B. auf 128 Werte erhöht. Die Werte
ändern sich dann etwas.
Klar, kann man alles mit MATLAB ausprobieren, aber auch dort muss jemand
die Theorie dahinter verstanden haben und es programmiert haben :-)
Filterer schrieb:> Wenn ich z.B. die Koeffizienten für ein Filter mit hoher Grenzfrequenz> mit denen für eine geringe (5% Fs) vergleiche, bekomme ich a) andere> Spitzenwerte und b) auch andere Mittelwerte.
Der Mittelwert ist der Frequenzgang bei f=0. Der Spitzenwert hat keine
direkte Aussage.
> Es geht je im Grunde nur um die Amplitude, die der Filter auswirft und> ob die so schon stimmt oder nicht.
Ein Filter entwirft man üblicherweise, indem man ein Toleranzschema
vorgibt (z.B. -1...1 dB Verstärkung bei 0-7.5 kHz, -40...-∞ dB
Verstärkung bei 8-16 kHz). Wenn dieses Toleranzschema eingehalten wird,
dann "stimmt" das Filter. Ob dein Filter "stimmt" oder nicht kann dir
niemand sagen, solange du nicht sagst was das Filter überhaupt machen
soll.
Analyse von Filtern im Zeitbereich ist langweilig, spring über deinen
Schatten und plotte endlich mal den Betragsfrequenzgang. Gerne auch von
Hand (z-Transformation), wenn es dir Spaß macht.
@Filter: Du kannst Dein Filter nicht belibeig in der Amplitude
abstimmen, weil jedes der Filter einen anderen Frequenzgang und
Verzerrung hat und der Zusammenhang von der Definition des Spektrums
abhängt, dass Du hineinschiebst. Das einizige, was fest ist, ist der
innere Zusammenhang der Frequenzanteile, der sich wie angedeutet, durch
seine Koeffizienten, deren Genauigkeit und ihre Dichte äussert. Da Du
verschiedene Bänder mit Deinen Filtern anvisierst, geht der Zusammenhang
verloren, bzw es gibt keinen.
Du musst also bei Deiner Betrachtung für jeden Deiner erdachten Filter
ein Spektrum definieren, auf das diese losgelassen werden, um die
Verstärkungen zu optimieren.
Wenn Du das pauschal machen möchtest, kannst Du nur davon ausgehen, dass
Du ein ideales Rauschen, also einen Gleichwert eingibst. Dann muss der
Mittelwert der Filter identisch sein, wie das schon von Andreas
beschrieben wurde. Da Du aber wohl was anderes eingeben wirst, wirst Du
auch logischerweise andere Amplituden einstellen müssen, wenn Du für das
mittlere Spektrum, das Du erwartest, auch gleiche Ausgangsamplituden
haben willst.
Das Ganze ist aber nichts Neues, sondern gängige Praxis beim
Filterdesign, denn meistens werden die Filter auf das Spektrum (konkret
das Rauschen und andere ungewollte Artefakte) eingestellt. Dort, wo viel
Signalanteil ist, muss das Filter wenig ripple haben und umgekehrt.
Richtig ist, dass die Koeffizientenzahl wichtig ist. Die bestimmt
nämlich den ripple und die Steilheit des Filters, sowie dessen
Sperrdämpfung.