FIR und IIR Filterimplementierung

Gast #3687535
Hallo,


ich habe mir ein Programm geschrieben mit den ich mit Hilfe von FIR und 
IIR Filtern Signale filtern kann. Aus Geschwindigkeitsgründen habe ich 
diese mit Hilfe des Q.M Formats implementiert. Jetzt habe ich aber ein 
kleines Problem,
hat mein Eingangssignal negative Werte kommt es zu Fehlern.

Zum Beispiel :

mein Eingangssignal hat:

- 1000 Werte
- jede Wert beträgt -1
- letzter Wert nach der Filterung beträgt dann -140



Warum -140 und nicht -1 ??


beleg ich den Wert mit 1 stimmt alles.
letzter Wert nach der Filterung beträgt dann 1


Ich verwende keine unsigned Werte.


Weiss einer woran das liegen könnte? Bei Floatwerten stimmt alles. Hab 
es getestet. Muss also an der Festkommaarithmetik liegen

Gruß,

Eric
Gast #3708604
Ja, danke war ein Überlaufproblem.

Nun hätte ich noch eine Frage. Ich benötige ein Tiefpassfilter zur 
Filterung des Gleichanteils.

Anforderungen:

Zulässige Verzögerung 100 ms.
Toleranz 0.01 Prozent
Eckfrequenz: so tief wie möglich
Dämpfung. So hoch wie möglich.

Habe nun eine Reihe von Varianten probiert.

Butterworthfilter -> Einschwingzeit zu lang
FIR mit Kaiserfenster -> gut, aber Dämpfung zu niedrig zwischen 5Hz und 
25 Hz

Verknüpfung von Butterworthfiltern mit FIR-Kaiser. -> Verbesserung, 
allerdings natürlich auch Vergrößerung der Verzögerung um 60 ms.

Hab die Wavelet Transformation auf meinem DSP implementiert, da diese 
eine gute Dämpfung bei wenig Zeitverzögerung aufweist. Allerdings 
filtert die nur auf geschätzt 2 Prozent genau. An den Rändern kommt es 
zu Artefakten, die auch mit Hilfe von Symmetriesierung nicht 100 
prozentig wegzubekommen sind.

Gibt es vielleicht eine Möglichkeit die niedrigen Frequenzen etwas 
anzuheben ? (dahin, wo mein Filter eine gute Dämpfung besitzt). Dachte 
erst an Amplitudenmodulation. Ist allerdings zu ungenau, da ich da eine 
Menge an Werten benötige, damit der Träger annähernd die eingestellte 
Frequenz hat. Und der Bandpass ist auch nicht wirklich genauer als wenn 
ich gleich einen Tiefpass zur Filterung benutze.

Gruß,

Eric
Gast #3710068
Weiss niemand einen Rat. Oder ist es einfach nicht möglich, solch 
niedrige Frequenzen zu filtern. Mit den Filtern im MatLab FDA-Tool ist 
es mir jedenfalls nicht gelungen. Aber es muss doch etwas geben um auch 
solch niedrige Frequenzen zu filtern, allerdings unter der Premise einer 
kleinen Filterordnung bzw. verschwindend geringer Zeitverzögerung

Gruß
Gast #3712323
Beim Link ist es ja auch nur ein einfacher IIR Direktform 2. Ich probier 
es mal aus. Obwohl die volle Dämpfung auch erst bei fa/8 erreicht zu 
sein scheint (wenn ich mir die Abbildung ansehe). Ich brauche aber volle 
Dämpfung bei fa / 700.

Naja mal schauen
Gast #3712474
nein filtere keine Bilder. Hab den unter dem Link aufgeführten Filter 
getestet. Funktioniert erstaunlich gut auf den ersten Blick. Gibt es den 
auch anders herum. Ich meine, dass der mir nur den Gleichanteil 
durchlässt. Eventuell könnt ich so ein Filter nämlich sehr gut als 
Vorfilter gebrauchen.

Gruß
Gast #3712608
Wie jetzt,

mir ist klar dass das ein Hochpass ist. Ich brauche aber ein Tiefpass. 
Mein Nutzsignal ist der Gleichanteil. Diese Filterstruktur im Link hilft 
mir da doch nicht so richtig weiter. Dämpfung viel zu gering. Da werd 
ich es doch lieber mit minimalphasen Filtern probieren.

Gruß
#3712623
Ui, sorry. Habe nur gelesen, "um den DC Anteil zu filtern" und dann die 
verlinkte Website gesehen.

Tschebyscheff Filter haben sehr steile Flanken, aber auch entsprechendes 
Überschwingen.

Falls du einen geeigneten (Echtzeit fähiges) Filter mit steilen Flanken 
und geringem Überschwingen findest sag Bescheid, ich glaube nicht, dass 
es sowas gibt.
Gast #3712646
Tschebishev und Equiripple schon probiert. Erfüllen meine Anforderungen 
nicht, waren aber die bisher besten.


Letzte Hoffnung meinerseits sind die Equiripple mit minimaler Phase. 
Hoffe,  die erfüllen meinen Anforderungen.

Gruß
#3716531
Nochmal mein Ansatz: Aus den beiden Forderungen
- Zulässige Verzögerung 100 ms.
-Eckfrequenz: so tief wie möglich
folgt die Wahl der Filtercharakteristik. Soweit ich weiß sind Bessel und 
Gauss dafür die beste Wahl. Alle anderen Typen haben längere 
Verzögerungen bei gleicher Eckfrequenz.

http://en.wikipedia.org/wiki/Bessel_filter
"The Bessel filter has better shaping factor, flatter phase delay, and 
flatter group delay than a Gaussian of the same order, though the 
Gaussian has lower time delay."

http://en.wikipedia.org/wiki/Low-pass_filter#Ideal_and_real_filters

Nur wenn man "offline" filtern kann, beispielsweise bei der 
Fotobearbeitung, dann kann das Filter eine "Verzögerung" von Null haben.
#3717190
>>>>>>>
mir ist klar dass das ein Hochpass ist. Ich brauche aber ein Tiefpass.
Mein Nutzsignal ist der Gleichanteil. Diese Filterstruktur im Link hilft
mir da doch nicht so richtig weiter. Dämpfung viel zu gering. Da werd
ich es doch lieber mit minimalphasen Filtern probieren.
<<<<<<<<

Wenn Du den Gleichanteil willst, dann subtrahierst Du den Filterausgang 
von Deinem Eingangssignal, das liegt doch auf der Hand. So bastelt man 
Tiefpässe in Hochpässe um und umgekehrt: Wenn Du das Signal ohne 
Gleichanteil hast dann ziehst Du das von dem Original ab und hast Deinen 
Gleichanteil.

Cheers
Detlef
Gast #3727664
Detlef _a schrieb:
> Wenn Du den Gleichanteil willst, dann subtrahierst Du den Filterausgang
> von Deinem Eingangssignal, das liegt doch auf der Hand. So bastelt man
> Tiefpässe in Hochpässe um und umgekehrt: Wenn Du das Signal ohne
> Gleichanteil hast dann ziehst Du das von dem Original ab und hast Deinen
> Gleichanteil.
>
> Cheers
> Detlef

Das funktioniert doch nicht, da gibt es ja noch so eine Sache mit einer
Phasenverschiebung, wenn ich mich nicht irre. Vielleicht funktioniert
das wenn es grob hinhaun soll

Also, so auf der Hand liegt es dann doch nicht

Gruß

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.