Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Diskrete Faltung (Papierstreifenmethode)
F34r0fTh3D4rk - Mi 01.12.10 23:28
Titel: Diskrete Faltung (Papierstreifenmethode)
Hallo zusammen ;)
Ich möchte die Faltung zweier diskreter Signale berechnen. Hierzu wollte ich die
Papierstreifenmethode benutzen, die in diesem Paper hier genannt wird:
http://www.gunnar-eisenberg.de/NUe/resourcen/publikationen/sonstiges/FIRFilter.pdf
Gegeben sind dort die Eingabevektoren [2 5] und [-4 3 1]. Die Papierstreifenmethode ergibt das dort angegebene Ergebnis: [2 11 7 -20].
Wenn ich das Ganze allerdings als Polynom-Multiplikation darstelle:
(2x+5)*(-4x²+3x+1)
erhalte ich:
-8x³-14x²+17x+5
also den Ergebnisvektor: [-8 -14 17 5].
Was mich an der Papierstreifenmethode noch verwundert ist, dass sie nicht kommutativ zu sein scheint. Vertauscht man die Vektoren, erhält man das Ergebnis in Umgekehrter Reihenfolge.
Wie sind diese unterschiedlichen Ergebnisse zu erklären? :shock:
BenBE - Do 02.12.10 06:14
Achte mal auf die genaue Verfahrensweise:
n=0 multipliziert 2*1 + 5*0
n=1 multipliziert 2*3 + 5*1
n=2 multipliziert 2*-4 + 5*3
n=3 multipliziert 2*0 + 5*-4
n=4 multipliziert 2*0 + 5*0
HTH.
F34r0fTh3D4rk - Do 02.12.10 11:11
hm, tut mir leid, aber mir will es nicht ins Auge springen :roll:
Oliver Marx - Do 02.12.10 11:29
Hi,
die Faltung ist im Zeitkontinuierlichen als Integral von minus bis plus unendlich definiert. Die Funktion, die dabei nach der Variablen x integriert wird, lautet: s1(x) * s2(t-x). Schau dir die Funktion mal genau an.
Viele Grüße
Oliver
F34r0fTh3D4rk - Do 02.12.10 12:00
Wenn ich mir dieses Applet hier anschaue:
http://www.jhu.edu/~signals/discreteconv2/index.html
Dann sieht das ziemlich genau so aus wie die Papierstreifenmethode. Ich berechne zunächst x[n-k][k] als Funktion von k (3. Bild von oben) und Integriere diese dann. Im diskreten Fall bedeutet das, dass ich die einzelnen Koeffizienten aufsummiere. Dann erhalte ich die Faltung (Bild 4).
Wenn ich in dem Applet zum Beispiel [2 2 2 2] mit sich selbst falte, bekomme ich auch das gleiche Ergebnis [4 8 12 16 12 8 4], wie bei der Polynom-Methode. Die Papierstreifenmethode scheint hier ausnahmsweise auch das selbe Ergebnis zu liefern.
EDIT: Ich sehe, es kommt doch irgendwie auf die Reihenfolge an.
Oliver Marx - Do 02.12.10 13:47
Hi,
beide Methoden, die du hier benutzt, bzw. gennant hast, führen zum richtigen Ergebnis. Du musst bei deiner Polynommethode nur einen Inputstream umdrehen wegen dem s2(t-x). Für die Polynommethode eignet sich die z-Transformation eines Zeitsignals, da diese die zeitliche Folge des Inputstreams besser wieder gibt.
Viele Grüße
Oliver
F34r0fTh3D4rk - Do 02.12.10 15:13
Das heißt, die Polynom-Methode, so wie ich sie verwende, liefert ein falsches Ergebnis? Matlab (conv(x,h)) bekommt interessanterweise das selbe heraus.
€: ich glaub jetzt hab ichs. Bei der Papierstreifen-Methode muss ich einen der beiden Eingangsvektoren zunächst umdrehen, bevor ich mit dem Verfahren beginne, dann bekomme ich auch das richtige Ergebnis.
Oliver Marx - Do 02.12.10 16:03
Hi,
sorry, ich hab mir das Dokument erst jetzt angesehen und habe gesehen, dass du die verlesen hast. Der Inputstream bei der Papierstreifenmethode ist invertiert. Dass heißt, dass der Inputstream im Beispiel [1 3 -4] lautet. Im Dokument steht daher auch am Anfang der Zeile v(-k). Daher musst du als Folgen [2 5] und [1 3 -4] wählen und du erhälst mit allen Methoden das richtige Ergebnis.
Deine Methode mit den Polynomen ist also richtig, wenn du den umgedrehten Stream der Papierstreifenmethode wieder richtig herum drehst.
Viele Grüße
Oliver
F34r0fTh3D4rk - Do 02.12.10 16:49
Vielen Dank, dann wäre für mich alles geklärt :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!