mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Schnelle Faltung, Segmentierte Faltung


Autor: Bernhard S. (mindmaker)
Datum:

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

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

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

Autor: mindmaker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke. über die overlap-add methode hab ich einen artikel gefunden.
http://www.dspdesignline.com/howto/showArticle.jht...

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

Autor: Bernhard S. (mindmaker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hoppla, war bei meinem post eben nicht eingeloggt :-)

Autor: Bernhard S. (mindmaker)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hmmm hat das mit dem anhang nicht funktioniert?! ...

Autor: Bernhard S. (mindmaker)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

hab eine lösung für das problem gefunden.
wenn es wen interessiert, ich hänge das m-file an.

mfg bernhard

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.