Hallo zusammen, muss eine 50Hz Bandsperre in mein System einbauen. Hab schon ein Paar Beispiele im Forum gefunden. Ich habe da ein prog im Internet entdeckt, welches direkt einen digitalen Filter anhand der vorgegebenen Parameter entwirft und als C code darstellt. Kennt dieses jemand, ist es verlässlich? http://www-users.cs.york.ac.uk/~fisher/mkfilter/trad.html habe folgende Parameter eingegeben, filtertype = Butterworth passtype = Bandstop ripple = order = 2 samplerate = 250 corner1 = 45 corner2 = 55 adzero = logmin = -80 und folgenden Code bekommen, #define NZEROS 4 #define NPOLES 4 #define GAIN 1.194615832e+00 static float xv[NZEROS+1], yv[NPOLES+1]; static void filterloop() { for (;;) { xv[0] = xv[1]; xv[1] = xv[2]; xv[2] = xv[3]; xv[3] = xv[4]; xv[4] = next input value / GAIN; yv[0] = yv[1]; yv[1] = yv[2]; yv[2] = yv[3]; yv[3] = yv[4]; yv[4] = (xv[0] + xv[4]) - 1.2458922097 * (xv[1] + xv[3]) + 2.3880618495 * xv[2] + ( -0.7008967812 * yv[0]) + ( 0.9497603088 * yv[1]) + ( -1.9723023606 * yv[2]) + ( 1.1360854939 * yv[3]); next output value = yv[4]; } } Kann mir eventuell ein Fachman sagen, ob diese darstellung des Filters als Bandsperre benutzt werden kann. Gruß Dennis
Das sieht erstmal nach einem IIR-Filter aus. Das Verhalten ergibt sich aus den Koeffizienten und der Abtaastfrequenz. Musst halt mal nachrechnen ;-) Tipp am rande: mit der Ordnung 2 kommst du nicht weit. Nimm 20 oder mehr.
Was sagen eigentlich die Ordnungen aus, gibt es eine mathematische REgel, wenn man 2,3 ..10 Ordnung nehmen soll? Wovon hängt es ab? Gruß Dennis
Je höher die Ordnung, desto höher ist der Rechenaufwand, aber desto besser ist auch das Filter (höhere Flankensteilheit).
Hi, bedenke das die Koeffizienten, die für die Filtercharakteristik verantwortlich sind, eine endliche Genauigkeit besitzen. Das bedeutet das du eine Abweichung vom theortisch berechneten Wert haben wirst und unter Umständen, gerade bei IIR-Filtern bedingt durch den rekursiven Anteil schnell von der gewollten Charakteristik abweichen kannst bzw. alles aber nur kein Filter mehr dabei rum kommt. IIR-Filter höherer Ordnung kann man durch Kaskadierung von IIR-Filtern 2. Ordnung realisieren. Dadurch erhält "bessere" Koeffizienten was den Wert angeht. Gruß Kai
> IIR-Filter höherer Ordnung kann man durch Kaskadierung von IIR-Filtern > 2. Ordnung realisieren. Dadurch erhält "bessere" Koeffizienten was den > Wert angeht. So ein IIR-Filter kann allerdings auch schon durch die Quantisierung der Koeffizienten instabil werden. Aber, solange der Threadstarter nicht mit ein paar Infos bzgl. den Randbedingungen des Systems rausrückt, werden wir ihm wohl kaum weiterhelfen können.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.