mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Impulsantwort mit Audiosignale


Autor: Merlin Erick (Firma: none) (new_user)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Merlin Erick (Firma: none) (new_user)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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 :
         Fs = 44100;  % Sampling Frequency

         N    = 19;         % Order
         Fc1  = 8400;       % First Cutoff Frequency
         Fc2  = 13200;      % Second Cutoff Frequency
         flag = 'noscale';  % Sampling Flag
         % Create the window vector for the design algorithm.
         win = hamming(N+1);

         % Calculate the coefficients using the FIR1 function.
         b  = fir1(N, [Fc1 Fc2]/(Fs/2), 'bandpass', win, flag);

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael schrieb:
> Wunsch: Durch Korrelationsrechnung Koeffizienten wiederfinden (warum
> eigentlich)?

Das ist eine gute Frage ;-)
Spricht irgendwas dagegen, einfach die Impulsantwort des Filters 
anzuschauen?

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.