www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP FFT Problem mit FFTW.


Autor: Thomas Pototschnig (pototschnig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn man einen Dirac-Impuls Fourier-Transformiert, erhält man doch die 
sin(x)/x Funktion, soweit ich weiß ...

Ich hätte jetzt auch angenommen, dass bei einer DFT mit einem Array mit 
zB 512 Elementen, von dem nur das erste Element den Wert 1 hat und der 
Rest 0 ist, dann ebenfalls die Funktion ergeben sollte, nur eben 
diskret.

Bei mir kommt aber statt dem erwarteten Ergebnis nur komplexe Werte mit 
R=1 und I=0 raus.

Ich verwende die Real->Complex FFT von FFTW. Hat die schonmal jemand 
ausprobiert und kann dazu was sagen?

Hintergrund ist die Faltung im Frequenzraum, wobei mein Filterkernel 
erstmal einfach nur den Wert 1 hat. Dann sollte das ursprüngliche Bild 
rauskommen, was leider nicht funktioniert.

MfG
Thomas Pototschnig

PS: z.B. eine Bildzeile hin- und zurücktransformiert funktioniert 
einwandfrie und gibt das gewünschte Ergebnis ...

Autor: Kai Walz (walle79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas Pototschnig wrote:
> Hallo,
>
> wenn man einen Dirac-Impuls Fourier-Transformiert, erhält man doch die
> sin(x)/x Funktion, soweit ich weiß ...
>

Leider falsch.

Der Dirac gibt eine Linie übers gesamte Spektrum.

Die si-Fkt (sin(x)/x) kommt vom Rechteck. Und wenn du das Rechteck 
zusammenschiebst (zum Dirac) haste eine unendlich breite si-Fkt.

Kai

Autor: Thomas Pototschnig (pototschnig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kai W. wrote:
> Thomas Pototschnig wrote:
>> Hallo,
>>
>> wenn man einen Dirac-Impuls Fourier-Transformiert, erhält man doch die
>> sin(x)/x Funktion, soweit ich weiß ...
>>
>
> Leider falsch.
>
> Der Dirac gibt eine Linie übers gesamte Spektrum.
>
> Die si-Fkt (sin(x)/x) kommt vom Rechteck. Und wenn du das Rechteck
> zusammenschiebst (zum Dirac) haste eine unendlich breite si-Fkt.
>
> Kai

Dann kapier ich bald garnichts mehr ... Wenn ich eine diskrete Funktion 
mit einem [0 0 0 1 0 0 0] Filterkernel falte, dann kommt die gleiche 
Funktion wieder raus. Wenn ich das Ganze per FFT transformiere, dann 
wird aus der Faltung eine Multiplikation, aber die Multiplikation macht 
mir alle Imaginär-Teile meiner transformieren Funktion kaputt, weil dann 
immer mit 0 multipliziert wird. Seltsam irgendwie ...

MfG
Thomas Pototschnig

Autor: Michael Lenz (hochbett)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,

> Dann kapier ich bald garnichts mehr ... Wenn ich eine diskrete Funktion
> mit einem [0 0 0 1 0 0 0] Filterkernel falte, dann kommt die gleiche
> Funktion wieder raus.
Ok.

> Wenn ich das Ganze per FFT transformiere, dann
> wird aus der Faltung eine Multiplikation,
Einverstanden.

> aber die Multiplikation macht
> mir alle Imaginär-Teile meiner transformieren Funktion kaputt, weil dann
> immer mit 0 multipliziert wird. Seltsam irgendwie ...
Da stehst Du jetzt aber ganz böse auf dem Schlauch.
Du schreibst doch selbst:

>> Bei mir kommt aber statt dem erwarteten Ergebnis nur komplexe Werte mit
>> R=1 und I=0 raus.
Dann multiplizier doch mal alle Spektrallinien mit der "komplexen" Zahl 
(1+0*j)=1. Da ändert sich doch wirklich nicht sehr viel.


Liebe Grüße
Michael

Autor: Thomas Pototschnig (pototschnig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>> Bei mir kommt aber statt dem erwarteten Ergebnis nur komplexe Werte mit
>>> R=1 und I=0 raus.
> Dann multiplizier doch mal alle Spektrallinien mit der "komplexen" Zahl
> (1+0*j)=1. Da ändert sich doch wirklich nicht sehr viel.

Aaaaarrrggh ... Okay, ich sag nichts mehr :-)

Ohje ...

MfG
Thomas Pototschnig

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.