Hallo! Ich bin derzeit mit der Bestimmung der Impulsantwort meines Filter beschaftigt. Das problem ist folgende: - ich habe ein Filter 19. Ordnung mit CCS auf mein C6713-Bord gebracht. Dann habe ich ein Audiosignal durch das Bord gehen lassen und das Ausgangssignal gespeichert. Nun möchte ich durch Kreuzkorrelation der beiden Signale meine Filterkoefiziente wieder finden. - Ich habe gedacht, dass nach der Kreuzkorrelation ich meine Filterkoeffizienten wieder finde. Was ich als Werte bekomme ist sehr kleiner als die von dem Filter. Ist es Normal? Kann est sein, es um irgend ein Faktor multipliziert ist. Bermerkung: Das Eingangssignal stammt aus der MLS die ich mit Matlab zur Audiosignal umgewandelt habe und alle auf eine CD gebrannt habe. Ich benutze einen CD-Player zum abspielen, das C6713-Bord und dem Rechner. Von der CD dauert jedes Sigal ca. 5s; dies weil ich die MLS so lang wiederholt habe bis jede MLS eine Länge von ca. 262143 (entspricht MLS 18. Ordnung) hat bevor ich sie zur Audiosignal transformiert habe. Ich habe noch bemerkt, dass bei der Benutzung der digitale MLS (keine Audio), kann ein meine Filterkoeffizienten zurückfinden indem ich rein in Matlab programmiert. Warum ist es nicht so bei dem Audiosignal?? Danke im voraus für Ihre Hilfe Merlin
Bitte, beachten Sie auch den anhang. Es handelt sich um den Ausgang meines Bord, also ein gefiltertes Signal. Hiermit schicke ich auch das benutzte Anregungssignal im Anhang. Für den Filter habe ich folgende Code von Matlab generiert :
1 | Fs = 44100; % Sampling Frequency |
2 | |
3 | N = 19; % Order |
4 | Fc1 = 8400; % First Cutoff Frequency |
5 | Fc2 = 13200; % Second Cutoff Frequency |
6 | flag = 'noscale'; % Sampling Flag |
7 | % Create the window vector for the design algorithm. |
8 | win = hamming(N+1); |
9 | |
10 | % Calculate the coefficients using the FIR1 function. |
11 | b = fir1(N, [Fc1 Fc2]/(Fs/2), 'bandpass', win, flag); |
Wenn ich verstanden habe machst Du folgendes: - CD (mit MLS Order 18) in einer Loop sendet MLS analog / digital zu deinem DSP Board - Digitalsignale durchlaufen DSP mit FIR Filter - Ausgang wird gesampled in Ringbuffer Wunsch: Durch Korrelationsrechnung Koeffizienten wiederfinden (warum eigentlich)? Ich sehe folgendes Problem: Wie synchronisierst Du das Abspielen der CD mit dem Aufzeichnen im Speicher? Bei der Faltungsoperation zwischen Ursprungssignal und Ausgangssignal spielt das Delay auch eine Rolle (die Koeffizienten sind zeitlich verzögert). Ausserdem muss die Amplitude normiert werden, da hier z.B. über 252k Samples addiert wird. Vorschlag für reproduzierbare Ergebnisse: Rechne die MLS im DSP zur Laufzeit, dafür benötigt man ein Schieberegister, wenige Logikoperationen und fertig. Natürlich könntest Du auch gleich eine FHT (Schnelle Hadamard Transformation) rechnen und dir die Übertragungsfunktion berechnen :). Gruß Michael
Michael schrieb: > Wunsch: Durch Korrelationsrechnung Koeffizienten wiederfinden (warum > eigentlich)? Das ist eine gute Frage ;-) Spricht irgendwas dagegen, einfach die Impulsantwort des Filters anzuschauen?
Nö, wenn Du einen Einheitsimpuls (ein Koeffizient 1 alle anderen 0) in dein Filter schiebst, werden nacheinander alle Koeffizienten ausgegeben. stimmt einer nicht, oder nicht zum rechten Zeitpunkt, dann stimmt dein Filter nicht. Beliebter Fehler -> Spiegelung der Koeffizienten durch falsches Auslesen der Ringbuffer :)
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.