Forum: Digitale Signalverarbeitung / DSP / Machine Learning Filter mit bekanntem Frequenzgang erstellen


von Filterfrage (Gast)


Lesenswert?

Guten Abend,

Wenn ich einen Filter designen will, mit vorgegebenen Frequenzgang, 
Amplitude (Lorentz) und Phase, sollte ich doch alle Informationen haben.

Wie kann ich daraus einen (digitalen) Filter machen?

Fouriertransformation zur Impulsantwort und dann falten? Ist der 
Phasengang dann auch exakt erhalten? Und die Gruppenlaufzeit?

Ich versuche mich gerade in Python/scipy - wäre toll wenn da jmd schon 
Erfahrung hat.

von Detlef _A (Gast)


Lesenswert?

yo, da ma kucken:
http://en.wikipedia.org/wiki/Filter_design

"Wenn ich ein Auto designen will, mit vorgegebener 
Höchstgeschwindigkeit,
Beschleunigung und Sitzbezug, sollte ich doch alle Informationen haben.

Wie kann ich daraus ein (schnelles) Auto machen?

Blech in der Farbe kaufen und dann falten? Ist der
Bremsweg dann auch exakt erhalten? Und die Anzahl der Gänge?"

Cheers
Detlef

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Beim FIR-Filter entsprechen die Koeffizienten der Sprungantwort im 
Zeitbereich des Filters. So oder so ähnlich. Google halt danach.

Das sollte dich weiterbringen:
http://www.beis.de/Elektronik/Filter/AnaDigFilt/AnaDigFilt.html

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

http://www.mikrocontroller.net/articles/Digitalfilter_mit_ATmega#Frequenzgang_ma.C3.9Fgeschneidert
wenn es keiner der Grundtypen ist, 
Bessel/Butterworth/Tschebyscheff/Cauer, dann hilft vielleicht das.

von Pro-Fi (Gast)


Lesenswert?

Den Frequenzgang kannst Du nach Fourrier zerlegen und dann das 
Koeffizientenintegral bilden. Die Frage ist, ob man dann exakt das 
hinbekommt, was man wollte.

von Filterfrage (Gast)


Lesenswert?

'Die Frage ist, ob man dann exakt das
hinbekommt, was man wollte.'

Ja, das ist eben auch meine Frage, zugegeben etwas diffus formuliert. 
Ein Filter sollte ja durch den Frequenzgang der Amplitude und Phase 
eindeutig definiert sein, theoretisch. (Im Unterschied zum Bremsweg 
under Anzahl der Gaenge eines Autos, wenn ich 'Höchstgeschwindigkeit, 
Beschleunigung und Sitzbezug' definiere).

Wenn ich beispielsweise einen analytisch bekannten Verlauf habe, sagen 
wir Gauss oder Lorentz oder so was, dann koennte ich im Grunde doch auch 
analytisch die Impulsantwort angeben (entsprechend Gauss oder exp im 
Beispiel). Mit entsprechendem Zusammenhang fuer die Phase. Damit kann 
ich dann im Zeitbereich rumrechnen.

Ist dann die Genauigkeit mit der ich das analoge Filter reproduzieren 
kann durch die Numerik vorgegeben? Sowas wie die Laenge/Anzahl der 
Sample der Impulsantwort?

Kann ich beliebiges Filter damit reproduzieren?

Mache ich das dann durch Faltung oder rekursiv? Macht das ueberhaupt 
einen Unterschied?

Ich habe da eben keine Erfahrung sondern nur eine ungefaehre Vorstellung 
- daher Frage ich ja.

Danke fuer Antworten!

von Wolfgang (Gast)


Lesenswert?

Filterfrage schrieb:
> Kann ich beliebiges Filter damit reproduzieren?

Ein Abtastsystem hat immer die halbe Abtastfrequenz als natürliche 
Grenze. Da sind Analogfilter grundsätzlich anders gestrickt.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Im verlinkten Artikel zu FDLS (frequency domain least square):
http://www2.units.it/ramponi/teaching/DSP/materiale/Ch5%28x%293e.pdf#page=29
sind ein paar Kurven gezeigt (Fig.1/2) mit dem gesuchten analogen 
Frequenz/Phasengang und der erreichten digitalen Näherung nach drei 
verschiedenen Verfahren. Ich habe den Eindruck, eine Näherung ist in der 
Gegend der halben Nyquist-Frequenz am besten, weit darunter ist sie 
schlechter aufgelöst, und darüber kommt die von Wolfgang genannte 
"natürliche Grenze".

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Was ist ein Lorentz-Filter?

Zumindest bei einem analogen Filter ohne aktive Bauelemente, ist der 
Phasenverlauf völlig durch den Amplitudenverlauf gegeben und kann daher 
weggelassen werden. Mißt man trotzdem die Phase mit, dann bringt das 
höchstens eine Verbesserung der Genauigkeit, wenn die Genauigkeit der 
Amplitudenmessung technisch beschränkt ist.

: Bearbeitet durch User
von Kurt H. (Firma: KHTronik) (kurtharders)


Lesenswert?

Hallo,
wenn Du einen vorgegebenen Frequenzgang annähern willst, kannst Du eine 
Filterbank erstellen und durch Änderung der Filterparameter eine 
iterative Annäherung an den gewünschten Frequenzgang erreichen. Ich 
verwende einen solchen Algorithmus in meinem Hörverstärker und erreiche 
eine Annäherung von besser als 3dB. Allerdings lasse ich den Phasengang 
weitgehend ausser acht.
Grüße, Kurt

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

musicdsp.org hat eine riesige Sammlung an Algorithmen und Tipps:
http://www.musicdsp.org/

von Filterfrage (Gast)


Lesenswert?

Falls es jmd interessiert: Es funktioniert genau so wie man es sich fuer 
ein LTI-System vorstellt.

1. Man nehme seine bekannte Frequenzantwort des Filters (Amplitude und 
Phase), respektive die komplexe Frequenzantwort.

2. Die Parameter des Sweep sind bekannt, berechne die 
Fouriertransformierte. Ist etwas haesslich weil man die Differenz zweier 
Fehlerfunktionen mit grossem komplexen Argument berechnen muss, 
numerisch per FFT des Sweep-Zeitsignals funktioniert es aber super.

3. Multipliziere beide 1. und 2. im Frequenzbereich.

4. IFFT in den Zeitbereich.

von Filterfrage (Gast)


Lesenswert?

Funktioniert ausgezeicnet und gibt super Uebereinstimmung. Sollte es 
wohl auch ;)

von Tom W. (Gast)


Lesenswert?

Matthias Sch. schrieb:
> musicdsp.org hat eine riesige Sammlung an Algorithmen und Tipps:
> http://www.musicdsp.org/

Ist die Liste noch aktiv? Das Forum schaut aus, als habe es seit 2010 
kein update mehr gehabt.

von TM (Gast)


Lesenswert?

Wenn du ein Beispiel für Python benötigst:
Ich kann dir auch matplotlib empfehlen um zwischenschritte anzuzeigen.
http://www.blog-tm.de/?p=157

Gruß

von Filterfrage (Gast)


Lesenswert?

Danke - das sieht interessant aus! Mein Problem hab ich schon geloest...

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.