Forum: Digitale Signalverarbeitung / DSP / Machine Learning FFT Problem mit FFTW.


von Thomas P. (pototschnig)


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 ...

von Kai W. (walle79)


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

von Thomas P. (pototschnig)


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

von Michael L. (Gast)


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

von Thomas P. (pototschnig)


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

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
Noch kein Account? Hier anmelden.