FIR und IIR Filterimplementierung

Gast #3687535
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

>>>>>>>
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
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren