Hallo Forum, Ich sollte mit einem DSP verschiedene FIR-Filter realisieren. Die Tiefpässe funktionieren auch. Jetzt wollte ich noch einen Bandsperrfilter für 50Hz realisieren. Dieser zeigt jedoch die Eigenschaft eines Tiefpasses!??? Ich hab mir die Filterkoeffizienten mit Tool berechnen lassen. Hat jemand eine Idee woran das liegen kann?? Oder hat jemand einen Quellcode für ein Bandsperrfilter für mich?
Vielleicht sollten wir mal unsere Koeeffizienten vergleichen? Wieviele 'Taps' verwendest Du und wie hoch ist deine Samplefrequenz? Welches Tool verwendest Du? Mit ScopeFIR von www.iowegian.com komme ich gut zurecht, die errechneten Koeefs. entsprechen (nahezu) der Realität. Nur die Samplefrequenz muss dann aber auch genau stimmen... Soll ich die Koeefizienten aus dem Screenshot mal gesondert abspeichern? AxelR.
Wer viel fragt... sind übrigens keine 31Taps (hatte schon auf'optimize'gedrückt), sondern 285 Samples. Bei nur 31 siehts auch noch gut aus, aber die Welligkeit im Durchlassbereich nimmt stark zu. Axel
Ich verwende den Filter Designer von MATLAB. Der soll anscheinend ganz gut sein !? Meine Samplefrequenz beträgt 880Hz (ist leider durch externen A/D-Wandler vorgegeben !) Meine Tiefpässe funktionieren auch einwandfrei, nur die Bandsperre nicht. Wie schaut eigentlich Dein C-Code aus, wo Du den Filter im Controller berrechnest(ist der ähnlich dem meinen) ? Jürgen
schon ok, gehört auch dazu gg vielleicht kannst Du mir mal Deinen FIR-Algorithmus schicken, bei mir will das einfach nicht funktionieren - Klump PS. ich rechne das ganze in integer !
der klassische fehler bei integer berechnungen ist die interne typumwandlung. insbesondere bei integer divisionen wird je nach compiler der integer erst in ein float umgewandelt und anschließend wieder zurückumgewandelt, dabei entstehen massive rundungsfehler. mit debugger überprüfen !!!
Ein Compiler der bei reinen Integerberechnungen eigenmächtig nach Float wandelt? Das wäre doch sehr verwunderlich (und bestimmt nicht standardgemäß).
mag sein das eure ide's das nicht tun, ms visual tut es (allerdings nur unter bestimmten umständen)! das liegt vor allem daran, dass die integer division nicht eindeutig definiert ist, die float division aber schon. das ganze nennt sich implizite typumwandlung. gegenmaßnahme ist ein expliciter cast. kann aber sein, das eine dsp-entwicklungsumgebung das nicht macht.
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.