问题描述
我目前正在尝试理解2d傅里叶位移定理。
I'm currently trying to understand the 2d fourier shift theorem.
根据我到目前为止所学到的,图像空间中的平移导致了阶段但不是频率空间的幅度。
According to what I've learnd so far a translation in the image space leads to differences in phase but not the magnitude in frequency space.
我试图通过一个小例子证明这一点,但它只适用于行中的移位而不适用于列。这是小演示(我只在这里显示幅度图)
I tried to demonstrate this with a little example but it only worked for shifts in rows but not in columns. Here's the little demo (I'm only showing the magnitude plots here)
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个等级的图都应该产生相同的结果。
有谁能解释一下我在这里做错了什么?
In my opinion all 3 magnitude plots should yield the same result.Can anyone explain me what I'm doing wrong here?
非常感谢你的帮助,
最好的问候,
迷你
推荐答案
我认为你想使用fft2,而不是fft。
I think you want to use fft2, not fft for this.
fft2计算2d傅里叶变换,这就是你说你正在研究的。 fft只计算每一行的傅立叶变换。
fft2 calculates the 2d fourier transform, which is what you stated you are studing. fft only calculates the fourier transform of each row.
如果你只是用fft2代替你的代码中的fft,那么一切都应该有效。
Everything should work if you just substitute fft2 for fft in your code.
这篇关于傅立叶移位定理matlab的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!