Hallo, kennt sich jemand von euch mit Signaltheorie aus? Mein Problem: Ich möchte mit Hilfe von Matlab die Schnelle Faltung Implementieren. Der Standard-Fall ist auch kein Problem und sieht so aus: n = 10; % das ist die länge der beiden komplexen signale x,y N = 2*n-1 X = fft (x, N) Y = fft(y, N) Z = x.* y % Multiplikation X(n) * Y(n) für n = 1,..., N z = ifft(Z,N) z ist dann auch dasselbe wie conv(x,y), was die direkte Faltung ist Aber nun kommts. Bei der segmentierten Faltung steig ich aus. Hier wird x(n) zerteilt in x1,x2,x3 usw. (x1,x2,x3 habe hier wieder die Länge n) Dann werden diese Teile FFT transformiert mit y multipliziert und wieder zurück transformiert: X1 = fft(x1,N) X2 = fft(x2,N) X3 = fft(x3,N) Z1 = X1.*Y Z2 = X2.*Y Z3 = X3.*Y z1 = ifft(Z1,N) z2 = ifft(Z2,N) z3 = ifft(Z3,N) Nun müssen z1, z2 usw. überlagert werden. Frage: Nach welcher Länge muss das genaus sein ? (müsste irgendwo in der Nähe von n liegen) Der erste Teil von z1 müsste mit dem Anfang des gesamten Ergebnisses z übereinstimmen. Das ist bei mir nicht der Fall. Müsste auch der Beginn von X1 und X (Frequenzbereich) übereinstimmen? Hoffe ihr könnt was damit anfangen, mit der Bitte um Hilfe Bernhard
Bernhard S. wrote: > z ist dann auch dasselbe wie conv(x,y), was die direkte Faltung ist conv() ist bei Matlab genauso implementiert. > Aber nun kommts. Bei der segmentierten Faltung steig ich aus. Da gibt es zwei verschiedene Varianten. Such mal nach "overlap-save" und "overlap-add".
danke. über die overlap-add methode hab ich einen artikel gefunden. http://www.dspdesignline.com/howto/showArticle.jhtml?articleId=199901970&pgno=1 ich habe aber noch das problem, dass mein ergebnis vor der ersten überlagerung ja auch ohne diese stimmen müsste. das ist aber nicht der fall. und ich hab leider keine ahnung was ich falsch gemacht hab. ist leider etwas wage. im anhang schick ich mal mein m-file mfg bernhard
hallo, hab eine lösung für das problem gefunden. wenn es wen interessiert, ich hänge das m-file an. mfg bernhard
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.