Hallo zusammen,
im Rahmen meines Studiums soll ich einen einfachen IIR-Filter mit C-Code
implementieren. Leider hat mir die Suchfunktion nicht wirklich
weitergeholfen.
Der Filter hat folgende Differenzengleichung:
y(k) = c * {x(k) – x(k-2)} – y (k-1)
Mein C-Code würde folgendermaßen aussehen:
1 | void IIR(float *x, float *y)
|
2 | {
|
3 | int k;
|
4 |
|
5 | y[0] = c * x[0];
|
6 |
|
7 | for (k=1; k < NUM_SAMPLES; k++)
|
8 | {
|
9 | if(k < 2)
|
10 | {
|
11 | y[k] = c * x[k] - y [k-1];
|
12 | }
|
13 | else
|
14 | {
|
15 | y[k] = c * (x[k] - x[k-2]) - y[k-1];
|
16 | }
|
17 | }
|
18 | }
|
Ist die Implementierung so möglich?
Ich habe auch schon mal was von der Verwendung eines Ringpuffers
gelesen. Wie würde hier die Implementierung aussehen?
Vielen Dank
Thomas