Filter für Echo entwerfen. (matlab)
-
Hallo,
ich soll einen Filter zum entfernen von Echo entwerfen. Der Filter soll in Matlab (also für zeitdiskrete Eingangs/Ausgangs-Daten) entworfen werden. Dabei habe ich ein simples Modell für ein Echo vorgegeben (h_n ist die Übertragungsfunktion des Echos und $$\delta_n$$ ist der diskrete Diracimpuls)Mein Ansatz war bisher folgender.
Fourier Transformation
da $$y = h * x$$ zu $$Y = H \cdot X$$ transformiert (y ist das Signal mit Echo und x das Signal ohne Echo und * ist die Faltung) hat der Filter eine Übertragungsfunktion $$F = 1/H$$ (wegen $$Y 1/H = X$$)
das ganz sieht nach folgender Korrespondenz aus
nur weiß ich nicht, wie ich mit dem N_0 umgehen soll. Hat vielleicht hier jemand eine Idee, wie ich das Problem lösen kann? Ich nehme an, dass es mit einem mathematischen Trick geht.
Ich wäre sehr dankbar, wenn mir jemand helfen könnte.
-
Wenn du N0 abschaetzen moechtest, bietet sich wahrscheinlich die Auto-Korrelationsfunktion an. Sie hat einen Peak bei der Zeitdifferenz N0 die dem Echo enspricht.
Siehe z.B. http://www.ee.ucla.edu/~dsplab/aec/over.html
-
Nein nein, N_0 habe ich bereits. Mir geht es darum, in welchen Ausdruck ich das ganze zurück transformieren kann. In der Korrespondenz kommt kein N_0 vor und ich weiß nicht wie ich das ganze auseinander ziehen kann und ich habe auch keine Transformationsvorschrift für Substitution oä gefunden.
Das ist mein Problem. N_0 und alpha und alles andere habe ich bereits. Nur nicht die Sprungantwort des Filters im Zeitbereich.
-
Verstehe ich das richtig.
sollte die Impulsantwort deines Filters sein, das ein Echo aus dem Eingangssignal erzeugt ? Ein Echo ist 'nur' die Überlagerung des Eingangssignal mit seinem zeitlichen verschobenem Selbst:
z-Transformierte:
$y(z) = x(z) + x(z) \cdot z^{-N_0}$ \\ $y(z) = x(z) (1 + \cdot z^{-N_0})$ \\ $\frac{y(z)}{x(z)} = H(z) = (1 + \cdot z^{-N_0})$zurück transfomiert:
Also, das was du oben hast. Und du suchst jetzt die Sprungantwort von diesem Filter ? Das wäre dann ganz einfach:
-
KasF schrieb:
Verstehe ich das richtig.
sollte die Impulsantwort deines Filters sein, das ein Echo aus dem Eingangssignal erzeugt ? Ein Echo ist 'nur' die Überlagerung des Eingangssignal mit seinem zeitlichen verschobenem Selbst:
z-Transformierte:
$y(z) = x(z) + x(z) \cdot z^{-N_0}$ \\ $y(z) = x(z) (1 + \cdot z^{-N_0})$ \\ $\frac{y(z)}{x(z)} = H(z) = (1 + \cdot z^{-N_0})$zurück transfomiert:
Also, das was du oben hast. Und du suchst jetzt die Sprungantwort von diesem Filter ? Das wäre dann ganz einfach:
Nein. Das gegebene ist die Stoßantwort des Echosystems. Mein Filter soll den Echo wieder entfernen. Quasi
x → $$h_n$$ → y → $$f_n$$ → x
wobei $$f_n$$ die von mir zu ermittelnde Stoßantwort ist. Nur habe ich Probleme bei der Rücktransformation.
-
Stoßantwort ist mir nicht geläufig. Ist das bei dir die Impulsantwort ?
-
Ach, nun verstehe ich auch was du meinst. Habe deinen ersten Post missverstanden
, aber die Zeit drängt gerade ...
-
So, kurz geht noch. Nimm mein H(z) mache 1/H(z) draus, erweitere mit z^N0 und führe ne fortgesetzte Polynomdivision durch. Daraus kannst du dann einfach deinen zeitdiskreten Filter bestimmen. Hoffe das passt so.