Filter, Tiefpass, Hochpass
-
Hallo!
Habe eine Frage zum Filterdesign.
Und zwar würde ich gern ein Tiefpassfilter (und Hochpassfilter) per Software nachbilden.
Also ich habe ein Signal (Messsignal von Osczilloskop) und würde das gerne Filtern.
Habe mal gelesen, das müsste auch via Software gehen. Normal auf dem Signalprozessor, aber doch nur wegen der Geschwindigkeit. Die wäre mir aber egal.
Was meint ihr?
Hat jemand Quelltexte hierfür?Gruß
Riese
-
Hi
Schau dir mal den Link an. Ist kein Quellcode, aber ein Scriptum über DFT, FFT und FIR-,IIR-Filter.
Also über Digitale Signalverarbeitung.[url]http://gigant.kgw.tu-berlin.de/KW/lehre/skript/ds/ [/url]
Ich weiß ja nicht inwieweit du mit der Thematik vertraut bist, aber ein digitales Filter zu coden dürfte nach der DGL gar nicht so schwer sein. Das Problem sind wohl eher die richtigen Parameter!
Allgemeine DGL von Digitalen Filtern schaut so aus:
y[n]= a0 x[n] + a1 x[n - 1] +...+ aQ x[n - Q] - ( b1 y[n - 1] +...+ bQ y[n - Q])
Wobei ein FIR ohne die hintere Klammer auskommt (also ohne Rückkopplung, das heißt alle b's sind 0).
Im Endeffekt brauchst eine Funktion mit static Varibalen, die immer Ausgangs- und Eingangswerte speichern (bzw jeden wert Q Funktionsaufrufe lang speichert). Dann kannst du immer schon den Ausganswert berechnen. Die Funktion wird dann pro Sample einmal durchgeführt.
Gruß Flow
-
geh mal auf www.musicdsp.org ins code-archive. Da gibts einige interessante Filter angefangen von simplen biquads (die meiner Meinung nach trotzdem sehr gut klingen), bis zu Moog VCFs. Falls es nicht um Audio geht sind die Klanglichen eigenschaften aber eh egal.
Oh, und ich würde eine kleine Klasse schreiben. Das ist wesentlich vielseitiger als eine funktion.
Angenommen du hast zwei Signale, schon kannst du deine Funktion wegen der statischen elemente vergessen. Bei einer Klasse legst du einfach eine zweite Instanz an.
Ich würde dir auch eine Klasse zur verfügung stellen.
-
Danke!
Der C Code (biquad) von musicdsp.org gefällt mir gut!!
Auch der Link von Flow_cplus ist ein guter Tip - da fehlen mir allerdings die theoretischen Grundlagen!Gruß
*Riese*
-
hallo ich hätte eine frage ich versuch zu diesem Link,aber geht leider nicht muss was einstellen,oder wie geht das.
Danke
Flow_cplus schrieb:
Hi
Schau dir mal den Link an. Ist kein Quellcode, aber ein Scriptum über DFT, FFT und FIR-,IIR-Filter.
Also über Digitale Signalverarbeitung.[url]http://gigant.kgw.tu-berlin.de/KW/lehre/skript/ds/ [/url]
Ich weiß ja nicht inwieweit du mit der Thematik vertraut bist, aber ein digitales Filter zu coden dürfte nach der DGL gar nicht so schwer sein. Das Problem sind wohl eher die richtigen Parameter!
Allgemeine DGL von Digitalen Filtern schaut so aus:
y[n]= a0 x[n] + a1 x[n - 1] +...+ aQ x[n - Q] - ( b1 y[n - 1] +...+ bQ y[n - Q])
Wobei ein FIR ohne die hintere Klammer auskommt (also ohne Rückkopplung, das heißt alle b's sind 0).
Im Endeffekt brauchst eine Funktion mit static Varibalen, die immer Ausgangs- und Eingangswerte speichern (bzw jeden wert Q Funktionsaufrufe lang speichert). Dann kannst du immer schon den Ausganswert berechnen. Die Funktion wird dann pro Sample einmal durchgeführt.
Gruß Flow