Einfach digitaler Tiefpass IIR oder FIR?

Gast #1646339
Lesenswert?

Moin,

vorweg: ich habe wenig Ahnung von Filtern.

Ich habe auch lediglich eine Klassifizierungsfrage.

Der einfach digitale Tiefpass
1
y[n] = (1-e) * y[n] + e * y[n-1];

Bin mir sicher mal gelesen zu haben das dieses Filter zu Klasse der 
FIR-Filter gehört. Allerdings ist laut Wikipedia der exponentiell 
geglättete Mittelwert ein IIR Filter 1. Ordnung. Dieser hat aber die 
selbe Berechnungsvorschrift wie das Tiefpassfilter im obigen Beispiel.

Zählt der nun zu FIR oder zu IIR Filtern?
#1646369
Lesenswert?

Wo ist denn da der Input?

Ich würd ein IIR Tiefpass so machen:

y[n] = (T/(dT+T))* y[n-1] + (dT/(dT+T))* x[n]

dT=1/Samplingfrequenz
T=Zeitkonstante des Filters

Unterscheidung IIR/FIR: Der IIR hat eine Rückkopplung, der FIR benutzt 
nur aus den aktuellen und vergangenen Eingangswerten.

So ich hoffe das stimmt auch. Hab ich der Vorlesung nicht immer 
aufgepasst ;)
Gast #1646381
Lesenswert?

Thomas Decker schrieb:
> Unterscheidung IIR/FIR: Der IIR hat eine Rückkopplung, der FIR benutzt
> nur aus den aktuellen und vergangenen Eingangswerten.

Soweit ich weiß hat ein FIR Filter nicht zwangsläufig keine 
Rückkopplung.
#1646549
Lesenswert?

tobi schrieb:
> Der einfach digitale Tiefpass
> y[n] = (1-e) * y[n] + e * y[n-1];

Das ist sicherlich KEIN FIR-Filter. Du benutzt doch auf der rechten 
Seite alte y Werte, hast also eine Rückkopplung drin. Wo ist überhaupt 
das Eingangssignal? Ersetze y[n] und y[n-1] durch x[n] bzw. x[n-1] dann 
haste nen FIR-Filter.

MfG
Marius
Gast #1646565
Lesenswert?

Die Frage von Thomas Decker ist schon ganz berechtigt: Wo ist der 
Eingang und wo der Ausgang.

Im Zweifel hilft IMMER die schnöde Definition:
IIR = Infinite Impulse Response
FIR = Finite Impulse Response

Diese Definitionen sind natürlich nur mit idealen Zahlen ohne 
Quantisierung, Rundungsfehler etc. gültig.

(Es sieht aber verdammt nach IIR TP 1. Ordnung aus ;))
Gast #1646631
Lesenswert?

y[n] ist in diesem Fall der Eingangswert und nach der Berechnung 
ebendfalls der Ausgangswert. Hätte wohl besser x[n] auf der rechten 
Seite schreiben sollen.

Also gut, mit Rückkopplung ist dies ein IIR und ohne Rückkopplung wäre 
es ein FIR. Also

IIR
1
y[n] = e * x[n] + (1 - e) * y[n-1];

FIR
1
y[n] = e * x[n] + (1 - e) * x[n-1];

?
(Firma: TU Chemnitz) #7697174
Lesenswert?

Auch mit FIR kann man einen Tiefpass realisieren, braucht aber sehr viel mehr Speicher.

Betrachtet man ein IIR-Tiefpass mit /einem/ Speicher ist die Einheitssprungantwort eine Exponentialfunktion, und nach N Samples ist die Höhe ≈ 0,65 × N:

y := x + (N-1)/N × y

Den krummen Faktor erspart man sich durch Addition:

y += x + y/N

Die Division erspart man sich, indem N = 2^K gewählt wird:

1
y += x - (y>>K)

Interessant erscheint: Je kleiner der Subtraktionsanteil ist, desto größer wächst y.

Für ein in etwa gleichwertigen FIR-Tiefpass braucht man N Speicher. Diese werden einfach addiert. Die Einheitssprungantwort ist eine lineare Rampe, die bei N mit dem Wert N aufhört, mit dem gleichen Anstieg wie am Anfang der IIR-Exponentialfunktion. Um sich die Kettenaddition zu sparen benutzt man für die N Speicher einen Ringpuffer und einen Schreib/Lesezeiger und subtrahiert den zu überschreibenden Wert:

1
 auto o = Y[p];
2
 y = (Y[p] = x) - o;
3
 if (++p==N) p=0;

Da auf AVR-Controllern Speicher eher knapp ist wird man IIR-Filter bevorzugen. Höhergradige Filter sind bei IIR allerdings schwieriger zu berechnen.

(Firma: 1984now) #7719002
Lesenswert?

Henrik H. schrieb:

Da auf AVR-Controllern Speicher eher knapp ist wird man IIR-Filter bevorzugen. Höhergradige Filter sind bei IIR allerdings schwieriger zu berechnen.

Naja, die Koeffizienten muss man ja nicht unbedingt auf de AVR berechnen, deswegen ist das das kleinere Problem.

Das Problem ist, die Numerik der Filterimplementierung hinreichend stabil zu bekommen, ohne das Teil dabei gnadenlos langsam zu machen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren