Software IIR-Filter

Gast #1304490
Lesenswert?
• ▲
▼
Guten Morgen,

ich möchte ein Signal, welches im Array befindet mit einem IIR-Filter 
filtern. Das Array ist 100 groß.

Meine Gleichung (IIR Filter) dazu sieht so aus:

Wert = 10% * new + (1-10%) * old

Wie kann man diese Gleichung in C oder C# umsetzen?
Es soll nur ein Array dazu verwendet werden.
Gast #1304628
Lesenswert?
• ▲
▼
such bei google mal nach "winfilter" kostenlos und ding spuckt C-Code 
für verschiedene Filter-Typen aus.
Die Formel die du da verwendest ist weder ein FIR- noch ein IIR-Filter 
sondern nur die Nachbildung eines Tiefpasses, wärend FIR bzw IIR-Filter 
verschiedene Filter zulassen(Hochpass, Bandpass, Bandstop).
Nebenbei spuckt dir das Programm dann auch die Frequenzverläufe aus, 
woran du dann gut erkennen kennst ob der Filter passt oder nicht.

MfG
Stefan
Gast #1304667
Lesenswert?
• ▲
▼
Das ist sehr wohl ein IIR-Filter.
Das geforderte Filter zu implemntieren ist ja wohl das Einfachste was es 
gibt. Dazu braucht man kein Filterprogramm.
Man muss natürlich die Grundbefehle von C kennen, z.B. die for-Schleife.
Mehr braucht man dazu wirklich nicht.
Gast #1305222
Lesenswert?
• ▲
▼
Um die Wirkung des IIR-Filters zu sehen, müsste der ganze Vorgang 
mehrmals erfolgen.

Beispiel:
1
int array[100];
2

3
for(int i=0; i<100; i++)
4
{
5
 array[i] = rxdata;
6

7
 if(i >= 1)
8
   array[i] = 0,1 * (array[i] - array[i-1]) + array[i]
9
}

Die Implememtierung des IIR-Filters in C müsste doch so aussehen, oder?
Gast #1309040
Lesenswert?
• ▲
▼
Da werden jetzt lustig Float-Operationen mit Integer-Variablen gemischt.

Die Zeile sollte so sein:

array[i]= array[i]/10 + array[i-1]*9/10;

wobwi man noch aufpassen muss, daß es beim array[i-1] nicht zu einem 
überlauf kommt. Falls das sein kann dann:

array[i]= array[i]/10 + (int)((long)array[i-1]*9/10);

Grüße Gebhard

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.