Dig. Filter - FIR?

Gast #204458
Lesenswert?

Hi,

in einer Source habe ich ein Programmteil gefunden:

float Filter(float IpulsNeu, unsigned char select)
{

 ImpulsAlt = ImpulsNeu * Tau[select] + ImpusAlt * (1-Tau[select]);


return ImpulsAlt;
}

Es weden kontiuierlich ankommende Werte durch die Zeile gejagt und
zurückgegeben
- select: Für Kanal 1 und Kanal 2. Wird immer gewechselt.
- Tau kann zwischen 0.0001 und 0.9999 eingestellt werden.

Könnte es sich dabei um ein Digitales Filter handeln, genuaergesagt um
ein FIR - Filter mit einen Koeffizienten. Ist es vielleicht auch ein
Fiefpass?

Danke!
Gast #204460
Lesenswert?

hallo,

ist es nicht eher ein IIR-Filter? Die Impulsantwort ist unendlich,
oder?

Wenn "ImpulsNeu" einmal 1 o.ä. war, wird "ImpulsAlt" niemals 0 (von
Rechenungenauigkeiten einmal abgesehen).


Ich weiß, das ist Haarspalterei...
Gast #204461
Lesenswert?

Leider weiss ich nur sehr allgemein bescheid über dig. Filter.
Was ich gerne wissen würde ist, wie ich vorgehen sollte, wenn ich jetzt
den Koeffizienten bestimmen müsste?

Es ist richtig, mit der Funktion sollen die Werte geglättet werden und
es ist keine Haarspalterei, es kann nur einer von beiden sein.
Gast #204464
Lesenswert?

Die Werte die durch den Filter gehen sind fliesskommazahlen und sollten
in einem bestimmten Bereich leidern, wenn nicht soll das Filter sie
glätten. Die einzigen Parameter die ich einstellen kann ist der Wert
Tau[], dieser ist global und kann von 0.0001 - 0.9999 eingestellt
werden. Viel mehr weiss ich auch nicht.
Gast #204466
Lesenswert?

Um ein FIR-Filter zu bauen:

Werte nehmen und z.B durch ihre anzahl dividieren.
Z(n+1) = a1*Z(n)+a2*Z(n-1)+a3*Z(n-3)+.... usw

Z(n+1) --> neuer berechneter Wert
Z(n)--> aktueller Abtastwert
Z(n-1)--> Abtastwert vorher

den Frequenzgang könntest du z.B mit MatLab simulieren

Digitalfilter können im Zeitbereich ider Frequenzbereich implementiert
werden.

Wenn du deinen Frequenzgang kennst so könntest du diesen in den
Zeitbereich zurücktransformieren--> Impulsantwort
Dann kannst du deine Daten mit der Impulsantwort Falten

Oder du machst deinen Filter mit der FFT.
Du liest deine Daten Blockweise ein. Gewichtest deine Werte mit der
Fensterfunktion. Das ist sehr wichtig um einen genügende Sperrdämpfung
zu erhalten. Dann multiplizierst du mit dem Frequenzganz und machst die
IFFT und spielst deine Daten wider aus.
Das ist der komplicierte Weg.

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