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.
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
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
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.
Den Frequenzgang kannst Du nach Fourrier zerlegen und dann das Koeffizientenintegral bilden. Die Frage ist, ob man dann exakt das hinbekommt, was man wollte.
'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!
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.
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".
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
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
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.
Funktioniert ausgezeicnet und gibt super Uebereinstimmung. Sollte es wohl auch ;)
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.
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ß
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.