Forum: Digitale Signalverarbeitung / DSP / Machine Learning Digitales FIR Bandsperr- (Notch-, Kerb-) Filter


von Jürgen (Gast)


Angehängte Dateien:

Lesenswert?

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?

von AxelR. (Gast)


Angehängte Dateien:

Lesenswert?

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.

von AxelR. (Gast)


Angehängte Dateien:

Lesenswert?

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

von Jürgen (Gast)


Lesenswert?

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

von AxelR. (Gast)


Lesenswert?

war feiern...
morgen mehr
AxelR.

von Jürgen (Gast)


Lesenswert?

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 !

von a. mittelfinger (Gast)


Lesenswert?

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 !!!

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Ein Compiler der bei reinen Integerberechnungen eigenmächtig nach Float
wandelt? Das wäre doch sehr verwunderlich (und bestimmt nicht
standardgemäß).

von a. mittelfinger (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.