2012-12-10 34 views
4

我目前正試圖理解二維傅里葉移位定理。傅里葉移位定理matlab

根據我迄今爲止所瞭解的,圖像空間中的平移會導致相位差異,但不會導致頻率空間的大小。

我試圖用一個小例子來說明這一點,但它只適用於行中的移位,但不適用於列。這裏的小演示(我只在這裏展示的幅度地塊)

clear all 
close all 
Iin = zeros(128); 
Iin(10:20,10:20)=1; 
figure,imagesc(Iin) 
Y = fft(Iin); 
figure, imagesc(fftshift(log10(abs(Y)))); 

Iin = zeros(128); 
Iin(10:20,20:30)=1; 
figure,imagesc(Iin) 
Y = fft(Iin); 
figure, imagesc(fftshift(log10(abs(Y)))); 

Iin = zeros(128); 
Iin(20:30,10:20)=1; 
figure,imagesc(Iin) 
Y = fft(Iin); 
figure, imagesc(fftshift(log10(abs(Y)))); 

在我看來所有3個地塊應產生相同的結果。 任何人都可以解釋我在這裏做錯了嗎?

非常感謝您的幫助,

最好的問候,

迷你

回答

3

我想你想使用FFT2,不是FFT這一點。

fft2計算二維傅立葉變換,這是你說你正在研究。 fft僅計算每一行的傅立葉變換。

如果你只是在你的代碼中用fft2代替fft,那麼一切都應該可以工作。

+0

非常感謝,我一直在尋找一個多小時的代碼,但我無法找到fft2中缺少的2 ;-) – Mini

+0

沒問題:)。直到我看到代碼中的情節,我才知道出了什麼問題。 – dustincarr

+0

+1:這是一個很容易犯的錯誤 - 在使用Octave(MATLAB克隆)和鍵入'fft'而不是'fft2'時,我浪費了很多時間。結果甚至看起來似乎很可能很多時候,這可能會使錯誤難以發現。 –