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
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
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ß
Da das Filter nicht in die Zukunft schauen kann, legen die 100ms
Verzögerung auch die untere Grenze fest.
Ich meine, Bessel- und Gausstiefpass sollen die kleinsten Verzögerungen
bei geringen/fehlenden Überschwingern haben.
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
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ß
Nein, das ist schon ein Hochpass. Aber ein ganz normaler. Frage mich,
warum das jetzt state of the art sein soll, um den DC Anteil zu
entfernen, oder habe ich was überlesen?
Schöne Grüße,
Jan
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ß
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.
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ß
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.
>>>>>>>
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
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ß