Forum: Digitale Signalverarbeitung / DSP / Machine Learning Rückgewinnung der Übertragungsfunktion aus Koeffizienten beim FIR


von WS (Gast)


Lesenswert?

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)

von Martin O. (ossi-2)


Lesenswert?

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.

von WS (Gast)


Lesenswert?

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.

?

von John (Gast)


Lesenswert?

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

von WS (Gast)


Lesenswert?

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?

von Detlef _. (detlef_a)


Angehängte Dateien:

Lesenswert?

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

: Bearbeitet durch User
von Tobias P. (hubertus)


Lesenswert?

Ein FIR-Filter hat die Übertragungsfunktion
wobei die a_i deine Koeffizienten sind.

Setze
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

: Bearbeitet durch User
von Marek N. (Gast)


Lesenswert?

Substituriere z durch exp(j Omega)

von Pandur S. (jetztnicht)


Lesenswert?

> 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.

: Bearbeitet durch User
von W.S. (Gast)


Lesenswert?

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.

von T.U.Darmstadt (Gast)


Lesenswert?

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.

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.