Hallo, Wie kann ich aus einer Soll-Sprungantwort und einer Ist-Sprungantwort die Koeffizienten eines FIR-Filters bestimmen, mit dem dann in Zukunft das Soll-Signal gefiltert (=vorverzerrt) werden kann, um im "Ist" dem "Soll" möglichst nahe zu kommen? Ich habe mit Signalverarbeitung in der Praxis noch nicht gearbeitet, könnte etwas "Starthilfe" gebrauchen. Als Hobbyprojekt (vorerst nur ein Gedankenexperiment) geht es mir darum, das Impulsverhalten von Lautsprecherchassis zu optimieren. Ich messe also die Sprungantwort des Chassis, parallel überlege ich mir wie die ideale Sprungantwort aussähe, die im Rahmen seiner Möglichkeiten liegt. Aus diesen beiden will ich ein Filter bestimmen, das sozusagen die inverse Übertragungsfunktion des Chassis darstellt und mit dem ich dann das Signal vorverzerren kann. Da gibt es doch bestimmt was, aber noch kenne ich die Begriffe nicht, nach denen ich googeln könnte. Jörg
Soll- und Istwerte in den Frequenzbereich transformieren. (Fenstern nicht vergessen) Dann die Spektren durcheinander dividieren. (Evtl. Phasen manipulieren) Zurück in den Zeitbereich transformieren. fertig Ich habe vor einigen Jahren ein Entzerrungssystem gebaut (3kanalige DSP Entzerrer) und bin derzeit dabei das Nachfolgegerät zu entwickeln. Basierend auf nachfolgender Dissertation vom Sven: http://www.anselmgoertz.de/Ubersicht_dt/Anselm_Goertz_dt/Veroffentlichungen_dt/SwenDiss.pdf Viel Spaß beim lesen...
Das ist ein weites Feld. Eine quick/dirty Alternative geht so: Du modellierts Dein unbekanntes System ebenfalls als fir-Filter mit den Koeffizienten sys(k), die Sprungantworten sollen heißen ist(), soll(k), das gesuchte Filter fir(k). Dann gilt für die sys(k) : ist(1)=sys(1) ist(2)=sys(1)+sys(2) ist(3)=sys(1)+sys(2)+sys(3) ..... kurz: ist()=h()*sys() mit h() als Sprungfunktion und '*' als Faltungsoperator: Diese Faltung des Sprungs mit den Koeffizienten des Systemmodells (= dessen Impulsantwort) liefert Dir ein lineares Gleichungssystem, aus dem sich die sys(k) berechnen lassen, das heißt dann Entfaltung. Mit dergleichen Technik berechnest Du ein Signal x(k), für das dann gelten soll: x()*sys()=soll() Dann noch ne Entfaltung (eine Dreientfaltigkeit!) h()*fir()=x() Das ganze läßt sich als ein lineares Gleichungssystem verwursten. Du muß die Ordnung Deines Systemmodells und des gesuchten Filters wählen. Das Gleichungssystem ist für kleine Systemordnungen überbestimmt und mit entsprechenden Verfahren zu lösen. Das ganze funktioniert mäßig. Cheers Detlef
Schönen Dank für die konstruktiven Antworten! (Soll kein Abschluß sein, weitere sind immer willkommen. ;-) @Michael: Das war für mich Anfänger jetzt noch etwas knapp, transformieren, dividieren, rücktransformieren, da reicht es bei mir noch nicht. Das Script ist interessant, auch in anderen Aspekten, sehr schön zu lesen, paßt zu meiner Vorbildung. Speziell den Teil zum Filterdesign finde ich am schwierigsten, das muß ich mir noch mal in Ruhe anschauen. Ich habe irgendwie die Vorahnung, daß beim Umweg über den Frequenzbereich das Impulsverhalten durch "Breitschmiereffekte" leidet, man das besser im Zeitbereich macht... @Detlef: Schon vor deiner Antwort hatte ich auch die Idee, das formelmäßig aufzustellen, gleichzusetzen und algebraisch durchzukeulen (roch nach Gleichungssystem), aber du hast das noch klarer ausgedrückt, danke! Die Entfaltung ist für eine Sprungfunktion ganz einfach, die Filterkoeffizienten sind einfach die Differenzen der Antwort. Haarig ist die eigentliche Faltung. Wenn der Filter so lang ist wie die Sprungantworten, dann geht das genau auf, ist nicht überbestimmt. Das Gleichungssystem ist "dreieckig", weil vor dem Sprung alles auf Null ist, man kann das jeweils schrittweise rückwärts einsetzen. Ich erhalte dann jeweils einen neuen Koeffizienten für das Filter der nächsthöheren Ordnung, die vorherigen können so bleiben. Die entstehenden Terme für die Filterkoeffizienten werden aber rasch eklig. Es kürzt sich zwar viel raus, bleibt aber noch genug übrig. Mit Papier und Bleistift habe ich es bis n=4 geschafft (für mehr nimmt man wohl besser ein Computeralgebrasystem), dann mit Excel an Zahlenbeispielen überprüft. Noch erkenne ich leider kein Bildungsgesetz für die Terme. (Binominal, etc.) Es entstehen immer höhere Potenzen der Ist-Werte, speziell der frühen. Kann gut sein daß das numerisch instabil ist, weil kleine Variationen sich immer mehr verstärken. Der erste darf nicht Null sein, durch ihn und seine Potenzen wird dividiert. Meintest du sowas mit "funktioniert mäßig"? Jörg
>>Wenn der Filter so lang ist wie die Sprungantworten, dann geht das genau >>auf, ist nicht überbestimmt. Ja, aber man will das Filter ja kürzer haben. Dann gibts ein überbestimmtes Gleichngssystem, das man mit gauss'scher Ausgleichsrechnung lösen kann. Warum willst Du denn die Dreiecksmatrix analytisch lösen, wiso nimmt du nicht die Signale und machst das numerisch? >>Meintest du sowas mit "funktioniert mäßig"? Mit idealen, künstlichen Systemen und unverrauschten Meßwerten geht das prima. Wenn das Verfahren aber auf reale Systeme/Meßwerte trifft läßt es Robustheit vermissen. 'Systemidentifikation' ist möglicherweise eine korrekte Google Frage. Cheers Detlef
Detlef _a schrieb: > Ja, aber man will das Filter ja kürzer haben. Dann gibts ein > überbestimmtes Gleichngssystem, das man mit gauss'scher > Ausgleichsrechnung lösen kann. Och, ich dachte, erst mal in die Vollen greifen! ;-) > Warum willst Du denn die Dreiecksmatrix analytisch lösen, wiso nimmt du > nicht die Signale und machst das numerisch? Ich wollte einfach mal neugierig dahinter gucken, was da passiert. Mit einer analytischen Lösung braucht man später zur Laufzeit äh Konfigurationszeit nur das rechnen, was gebraucht wird, so die naive Idee. Viele Terme kürzen sich raus. Was übrig bleibt ist aber trotzdem die Hölle. Am Wochenende habe ich das mal computerunterstützt ein paar Ordnungen weitergetrieben. Ich erkenne ein paar Bildungsgesetze, nach denen die höheren Terme dazukommen, aber leider nicht alle. > Mit idealen, künstlichen Systemen und unverrauschten Meßwerten geht das > prima. Wenn das Verfahren aber auf reale Systeme/Meßwerte trifft läßt es > Robustheit vermissen. Kann ich mir gut vorstellen. > 'Systemidentifikation' ist möglicherweise eine > korrekte Google Frage. Hmm, ein weites Feld. Kalman-Filter kenne ich dem Namen nach. (Ich fürchte, meine anfängliche Begeisterung für das Thema lässt leider wieder nach...) Jörg
Wenn Dich diese Faltungsrechnungen interessieren dann kuck mal Richtung 'Toeplitz Matrix' und 'Levinson Durban', das ist die Richtung. Sehr interessant und aktuell, z.B. für Audiocodecs, 'Speex'. >>Hmm, ein weites Feld. Kalman-Filter kenne ich dem Namen nach. Kalman schätzt Dir die Zustandsgrößen des Systems, das System selbst muß man vorgeben, ist also keine Systemidentifikation per se. >>Ich fürchte, meine anfängliche Begeisterung für das Thema lässt leider >>wieder nach...) Schade, sehr schade. Auf dem Feld gibts ne hochinteressante menage a troi zwischen Mathematik, Signalverarbeitung und Elektrotechnik, da kann man nen interessantes Berufsleben verbringen. Mit den fetten schnellen FPGAs tun sich da aktuell neue Welten auf. Vielleicht solltest Du die komplexe Aufgabe der Frequenzgangskompensation zunächst hintanstellen (das war für mich die Semesteraufgabe in einem höheren Semester) und Dir mal was anderes suchen, z.B. ne Echtzeitfaltung mit der Impulsantwort von einer schön halligen Kirche oder sowas. Math rulez! Cheers Detlef
> Auf dem Feld gibts ne hochinteressante menage a > troi zwischen Mathematik, Signalverarbeitung und Elektrotechnik, da kann > man nen interessantes Berufsleben verbringen. "Problem" ist nur das ich schon eines habe. ;-) Bin als Softwerker arbeitender E-Ing. > Mit den fetten schnellen > FPGAs tun sich da aktuell neue Welten auf. Ich dachte an Grafikkarten: http://koonlab.com/CUDA_RealFIR/CUDA%20Real%20FIR.html Zum Preis von einem Highend-DSP kriegt man die Leistung von hundert. Vermutlich ist da auch mehr Rechenpower rauszuholen als aus FPGAs, einfach weil die Chips so riesig und dabei bezahlbar sind. Aber die Frage der Implementation stellt sich noch nicht (so nett es auch ist, darüber zu fabulieren), solange man das Verfahren noch nicht beherrscht, oder gar kennt. Jörg
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.