2016-05-12 15 views
1

Ich weiß, dass die Faltung mit FFT berechnet werden kann.
F*H = IDFT[DFT(F)DFT(H)]. * bedeutet Faltung.Wie berechnet man die Faltung von zwei Vektoren ungleicher Länge

was ist, wenn die Länge von F und H ungleich ist. dann ist die Länge von DFT (H) und DFT (F) ungleich. so, wie die elementweise Multiplikation zwischen zwei Vektoren ungleicher Länge zu berechnen. Habe ich etwas vergessen?

+2

Die von Ihnen angegebene Beziehung bezieht sich auf die zyklische Faltung. Möchten Sie wirklich eine zirkulare Faltung von Vektoren ungleicher Länge erhalten, oder wollen Sie die üblichere lineare Faltung? Im letzteren Fall wird das Problem mit der Länge gelöst, indem die Vektoren auf die gleiche Länge aufgefüllt werden (beachten Sie auch, dass Sie die Vektoren auffüllen müssen, um die lineare Faltung an erster Stelle zu erhalten). – SleuthEye

+0

@SleuthEye, wie Sie den Vektor in den beiden Fällen auffüllen, die Sie erwähnt haben. Und was sind die Unterschiede? – Samuel

+1

Für den Unterschied könnte man [diskrete zirkulare Faltung] (https://en.wikipedia.org/wiki/Convolution#Circular_discrete_convolution) und [diskrete (lineare) Faltung] (https: //en.wikipedia. org/wiki/Faltung # Diskrete_Faltung). Für das Auffüllen im Fall der linearen Faltung würden Sie auf eine Länge "N + M-1" auffüllen, wobei "N" und "M" die Länge von "F" und "H" sind. – SleuthEye

Antwort

2

Um eine lineare schnelle Faltung von zwei Vektoren der Länge H und F zu machen, puffert normalerweise eine Nullstelle beide auf die gleiche Länge, eine Länge von mindestens H + F-1 oder länger, möglicherweise auf die nächst größere Länge ist das Produkt von sehr kleinen Primfaktoren (wie 2^n).

Jede kürzere Länge als H + F-1 führt zu einer kreisförmigen Faltung, die möglicherweise nicht Ihren Vorstellungen entspricht.

+0

Nach IDFT der (H + F-1) Länge des Ergebnisses. Wie lang sollte ich verwenden? – Samuel

+0

Die erwartete Länge eines Faltungsergebnisses. – hotpaw2

Verwandte Themen