Ich hätte einige Filter, die durch Länge und Amplitude des
Koeffizientenfeldes gegeben sind und möchte diese qualifizieren.
Ich könnte nun den Frequenzgang bei einem Sweep mit einer Simulation
berechnen und aufzeichnen lassen, habe aber keine Sollfrequenz für die
Abtastrate. Wie gibt man das am sinnvollsten an?
Gefunden habe Ich nur das hier, aber da steht nicht viel:
Beitrag "Von Koeffizienten zu Übertragungsfunktion"
Am Liebsten wäre mir eine Art Übertragungsfunktion, die die Qualität des
ripples in Form eines Verzerrungsgrades angibt.
Wie gelangt man mathematisch am einfachsten an diese Funktion?
Die Abtastfrequenz und der Frequenzbereich, über den Ich dann letztlich
summiere (integriere ?) um die Verzerrungen in dem Betrachungsfall zu
haben, wären dann idealer weise Parameter und vom Anwender einzusetzen.
Geht das irgendwie über LaPlace oder Fourier?
Das Koeffizientenfeld sieht etwa so aus:
n = Zahl der Koeffizienten z.B. 7,11,13,17,21,23
und jeweils (n+1)/2 Koeffizienten also für n=7 4 Stück für die ersten 3
links, den mittleren und dann gespieglt die letzten drei, die wieder die
ersten sind:
K(1), K(2), K(3), K(4!), K(3), K(2), (K1)
Was bitteschön soll das sein:
Am Liebsten wäre mir eine "Art Übertragungsfunktion", die die "Qualität
des
ripples" in Form eines "Verzerrungsgrades" angibt.
Das hab ich noch in keinem Buch über digitale Filter gesehen. Aber
in jedem Buch/Artikel über digitale Filter findet man, wie man
den Frquenzgang (und Phasengang) ausrechnet.
In meinem Buch habe Ich nichts konkretes gefunden. Tipp?
Was Ich meine ist eine Funktion, die die Abtastfrequenz mit ins Spiel
bringt, also als Parameter frei hat. Oder anders ausgedrückt, bei der
das Ergebnis der Darstellung unabhängig von diesem Parameter ist.
Für eine U-Funktion benötige Ich eigentlich immer Ausgangsfunktion /
Eingangsfunktion - mir ist aber nicht klar, wie ich direkt die
Koeffizienten in Polynome übersetzen könnte.
?
WS schrieb:> ... habe aber keine Sollfrequenz für die> Abtastrate. Wie gibt man das am sinnvollsten an?
Da kannst du jede Frequenz für die Simulation nehmen.
Parameter wie Grenzfrequenzen sind ohnehin immer auf die Abtastrate
bezogen.
WS schrieb:> mir ist aber nicht klar, wie ich direkt die> Koeffizienten in Polynome übersetzen könnte.
sei froh, das wäre viel zu aufwändig. Praktisch umsetzbar ist das
Folgende:
Gewinne durch Simulation einen Frequenzgang. Daraus kannst du den
Filtertyp und das Toleranzschema erkennen. Die Filterordnung kannst du
anscheinen aus dem vorliegenden Code ableiten. (Wenn nicht, kannst du
probieren.)
Mit dieser Info gehst du in ein Berechnungsprogramm für digitale Filter
und lässt das Filter nachbauen. Den Frequenzgang gannst du mit deinem
Simulationsergebnis vergleichen.
Sollte es dir aber um die Mathematischen Zusammenhänge gehen, dann musst
du sehr viel tiefer in die hinter der Filterentwicklung liegende
mathematische Theorie einsteigen. Das ist aber für deine eingangs
beschriebene praktische Aufgabenstellung nicht nötig oder sinnvoll. Du
solltest aber ohnehin die Zielsetzung deiner Aufgabe genauer
darstellen, damit dir gezielt geholfen werden kann.
John
Danke für die Info.
Eigentlich hatte Ich aber gehofft, durch ein begrenzt tiefes Einsteigen
in die Mathematik eine Formel zu bekommen, um genau so ein "ungefähres"
(iteratives) Vorgehen vermeiden zu können. Ich denke zudem, dass das
abschätzende Vorgehen mir nicht die Genauigkeit liefern wird, die Ich
brauche, um die gewünschten Entscheidungen zu treffen.
Nehmen wir z.B. die Werte für ein Filter mit 17 Koeffizienten:
-8, -32, -70, -102, -91, -18, 100, 210, 255, ....
Die Grenzfrequenz liegt so etwa bei einem Drittel der Abtastrate würde
Ich schätzen. Den ripple, den Ich bekomme, kann Ich aber nicht wirklich
ablesen, weil er von der Auflösung der Koeffizienten und den Frequenzen
abhängt, die reinkommen. Wenn Ich das minimal umbaue, liegt die
Verstärkung bei 1,0 statt 0,91 und es gibt andere Rundungsfehler:
-1, -15, -50, -87, -84, -18, 98, 209, 255, ...
Welches Filter hat weniger Verzerrung?
Hier die beiden Betragsübertragungsfkt.
>>>>
Die Grenzfrequenz liegt so etwa bei einem Drittel der Abtastrate würde
Ich schätzen.
Naja, Grenzfrequenz, was soll das sein bei den Dingern, 3dB unter dem
Maximum. Das ist bei vllt. 255, 2048 entspricht der Abtastfrequenz.
>>>>
Den ripple, den Ich bekomme, kann Ich aber nicht wirklich
ablesen, weil er von der Auflösung der Koeffizienten und den Frequenzen
abhängt, die reinkommen.
??. Die Dinger haben keinen ripple, als ripple bezeichnet man was
anderes.
Die Eigenschaften des Filters hängen nicht von den Frequenzen ab, die
reinkommen.
>>>>>>>>
Wenn Ich das minimal umbaue, liegt die
Verstärkung bei 1,0 statt 0,91 und es gibt andere Rundungsfehler:
Die Dinger haben unnormiert ca. Faktor 1000 Verstärkung, nicht 1.
>>>>
Welches Filter hat weniger Verzerrung?
Unklar, was Du unter 'Verzerrung' verstanden haben willst.
Cheers
Detlef
clear
fb= [-8, -32, -70, -102, -91, -18, 100, 210, 255];
fb=[fb fliplr(fb(1:end-1))];
fc=[-1, -15, -50, -87, -84, -18, 98, 209, 255]
fc=[fc fliplr(fc(1:end-1))];
H=freqz(fb,1,1024);
H1=freqz(fc,1,1024);
plot(1:1024,20*log10(abs(H)),'b',1:1024,20*log10(abs(H1)),'r');
grid
return
und du erhälst mit |G(z)| den Betragsfrequenzgang, und mit arc(G(z)) den
Phasengang. In Matlab oder Octave gibts dazu den Befehl freqz().
Beachte, dass Omega die normierte Kreisfrequenz ist, d.h. sie ist auf
die halbe Abtastfrequenz normiert.
Gruss
> Welches Filter hat weniger Verzerrung?
Verzerrungen, sind ganzzahlige Oberwellen, die gibt es bei nichtlinearem
Betrieb, wenn man am Eingnag uebersteuert. Hat also so gesehen nichts
mit einem Filter zu tun, denn das Filter ist gerechnet als ein lineares
Element.
Filter sind Elemente, die arbeiten Fourier Raum. Nichtlineare
Elemente/Funktionen darf man nicht im Fourierraum betrachten.
WS schrieb:> Ich hätte einige Filter, die durch Länge und Amplitude des> Koeffizientenfeldes gegeben sind und möchte diese qualifizieren.> Ich könnte nun den Frequenzgang bei einem Sweep mit einer Simulation> berechnen und aufzeichnen lassen, habe aber keine Sollfrequenz für die> Abtastrate. Wie gibt man das am sinnvollsten an?
Also zunächst eines: Frequenzen im herkömmlichen Sinne in Hertz oder so
gibt es bei digitaler Signalverarbeitung überhaupt nicht. Stattdessen
hat man es immer mit einem Bruchteil der Samplingfrequenz zu tun. Du
brauchst also keine konkrete Abtastrate, um den Frequenzgang dir
auszurechnen.
So.
Nun frag ich dich (WS) und nicht mich (W.S.), was du denn mit einer
etwaig rückgewonnenen Übertragungsfunktion anstellen willst? Dich
interessiert doch der Frequenzgang und die Phase. Also wobble das mal
softwaremäßig durch, denn damit wirst du noch am ehensten fündig.
Ich hatte mir dazu per Delphi ein Filterbastler-Programm geschrieben,
das per DDS zunächst einen Kurvenverlauf erzeugt, der ein Stückchen
länger ist als der Filterkernel, dann selbigen durch das Filter mit dem
zu testenden Kernel gejagt und anschließend Amplitude und Phase des
Outputs ausgemessen. Sowas ist nicht schwer, das kannst du auch.
W.S.
W.S. schrieb:> Also zunächst eines: Frequenzen im herkömmlichen Sinne in Hertz oder so> gibt es bei digitaler Signalverarbeitung überhaupt nicht. Stattdessen> hat man es immer mit einem Bruchteil der Samplingfrequenz zu tun.
Wirklich? Wie siehst Du dann die Fälle, bei denen das Ganzzahlverhältnis
nicht passt oder die abgetastete Frequenz größer ist, als die Sample
Frequenz?
Üblicherweise wird bei der Betrachtung und Beurteilung von Filtern gerne
von 0 bis unendlich integriert, oftmals von 0 bis fs/2 ... dabei aber
unterschlagen, dass die Frequenz auch höher sein kann. Und die liefern
bekanntlich sehr wohl Beiträge zu dem Ergebnis am filterausgang -
meistens ungewollte.
Eine Übertragungsfunktion wäre da schon hilfreich, um das Verhalten
vollständig beschreiben zu können.