Forum: Mikrocontroller und Digitale Elektronik FIR-Filter Koeffizienten bestimmen


von Gandald (Gast)


Lesenswert?

Hallo,
ich habe noch nie mit digitalen Filtern was gemacht. Ich möchte mich 
aber mal darin versuchen.
Ich habe mir jetzt folgendes überlegt:
Bei FIR-Filtern lassen sich die Filterkoeffizienzen ja anhand der 
Impulsantwort bestimmen. Da ich nicht weiss, wie ich diese bei einem 
digitalen Filter bestimme, habe ich mir vorgestellt, die Koeffizienten 
wie folgt zu bestimmen:

Ich stelle die Übertragungsfunktion G(s) eines analogen Filters auf, das 
meine gewünschte Charakteristik hat. z.B.

G(s) = 1 / (T1 * s)^n

und mit der inversen Laplace-Transformation transformiere ich das dann 
in den Zeitbereich, sodass ich g(t) erhalte. Wenn ich für t dann die 
Werte 0, 1, 2 ... einsetze, erhalte ich somit die Filterkoeffizienten. 
Ginge dieses, zugegebenermassen etwas umständliche Verfahren?

von coder (Gast)


Lesenswert?

Wenn ich Dir eine Empfehlung geben darf -> am einfachsten mit matlab die 
koeffizienten generieren - einfach fdatool benutzen geht einfach und 
extrem schnell.

von Gandald (Gast)


Lesenswert?

Hi coder,
ja dass ich das mit MATLAB tun kann weiss ich. Hab ich auch schon getan.
Nur: ich möchte es zuerst einmal "von Hand".

von Wolfgang (Gast)


Lesenswert?

Gandald schrieb:
> Ich stelle die Übertragungsfunktion G(s) eines analogen Filters auf, das
> meine gewünschte Charakteristik hat.

Die Übertragungsfunktion eines analogen Filters wirst du nicht mit einem 
FIR-Filter erzeugen können.

von Christian R. (supachris)


Lesenswert?

Für die digitale (zeitdiskrete) Übertragungsfunktion brauchst du die 
Z-Transformation. Dann bekommst du auch Koeffizienten. Die musst du dann 
noch entsprechend runden und quantisieren.

von Gandald (Gast)


Lesenswert?

Naja, dass analoge Filter und FIR-Filter nicht dasselbe sind, ist mir ja 
auch klar.
Aber z.B. ein Tiefpass lässt sich ja sowohl analog als auch mit einem 
FIR realisieren?
Und ich meinte, man könne anhand der Impulsantwort die Koeffizienten 
ablesen. Aber irgendwie muss ich ja wissen, wie diese Impulsantwort 
aussehen soll, und da dachte ich mir, ich hole mir bei der 
Laplace-Transformation und bei einem analogen Filter eine Idee.

Beispielsweise wie folgt:

Ich sage mein Filter soll eine Charakteristik ähnlich

haben. Hiervon berechne ich die inverse Laplace-Transformation und komme 
auf

und für t setze ich nun nacheinander 0, 1, 2, ... ein. Denn g(t) ist ja 
die Impulsantwort, und diese ergibt ja die Koeffizienten!

von Student (Gast)


Lesenswert?

Gandald schrieb:
> und für t setze ich nun nacheinander 0, 1, 2, ... ein. Denn g(t) ist ja
> die Impulsantwort, und diese ergibt ja die Koeffizienten!

Mal aus der Hüfte geschossen: es wäre vermutlich sinnvoller wenn in dem 
t auch noch irgendwie die Abtastfrequenz mit verrechnet würde.

Das was raus kommt hat mit etwas Glück auch noch noch etwas mit 
TP-Charakter, aber das muss nicht sein (z.B. wenn die Impulsantwort 
oszilliert, kann es ja z.B. passieren dass deine diskrete Impulsantwort 
zu Null wird oder komplett andere Filterverläufe annimmt).


Mein Tipp: Such dir was zu Lesen zu digitaler Signalverarbeitung. Wenn 
du Fit bist in Sachen Laplace-Trafo ist die Z-Trafo kein großer Sprung. 
Und dann kommen auch garantiert die Sachen raus, die du wünscht. ;-)

von Gandald (Gast)


Lesenswert?

Student,

hast du einen guten Vorschlag, was ich zur z-Trafo lesen soll? Mit 
Laplace und Fourier bin ich einigermassen fit und kann das anwenden.

von Student (Gast)


Lesenswert?

Da muss ich leider passen, sorry! Ich müsste nachschauen was mein Prof. 
damals empfohlen hat, ich denke aber da gibt es genügend Leute im Forum 
die da mehr wissen.

Ansonsten einfach die Uni-Bib deines Vertrauens aufsuchen und nach 
Büchern zu digitaler Signalverarbeitung Ausschau halten. Viel Erfolg!

von Gandald (Gast)


Lesenswert?

Hi,

also ich habe mal das hier gefunden:

http://www.mikroe.com/eng/chapters/view/72/chapter-2-fir-filters/

da wird die z-Transformation erklärt. Eigentlich wusste ich die 
Grundzüge davon schon. Ich verstehe diese Website wie folgt:

zuerst muss ich meine gewünschte Impulsantwort herausfinden, und zwar im 
z-Bereich. Diese Impulsantwort sei dann Y(z). Danach kann ich die 
Übertragungsfunktion meines Filters H(z) bestimmen mit H(z) = Y(z) / 
X(z). Da X(z) ja die z-Transformierte des Einheitsimpulses ist, also 1, 
ist H(z) = Y(z), nicht? Wenn x(t) nicht der Einheitsimpuls, sondern der 
Einheitssprung ist, dann muss halt eben H(z) noch separat berechnet 
werden. Und diese Koeffizienten sind dann meine Filterkoeffizienten. 
Richtig?

Gruss

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.