【问题标题】:fourier shift theorem matlab傅里叶位移定理matlab
【发布时间】:2012-11-28 11:08:51
【问题描述】:

我目前正在尝试理解二维傅立叶位移定理。

根据我目前了解到的情况,图像空间中的平移会导致相位差异,但不会导致频率空间中的幅度差异。

我试图用一个小例子来证明这一点,但它只适用于行中的移位,而不适用于列中的移位。这是一个小演示(我这里只显示幅度图)

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 个震级图都应该产生相同的结果。 谁能解释我在这里做错了什么?

非常感谢您的帮助,

最好的问候,

迷你

【问题讨论】:

    标签: image matlab 2d fft shift


    【解决方案1】:

    我认为你想使用 fft2,而不是 fft。

    fft2 计算 2d 傅立叶变换,这就是您所说的您正在研究的内容。 fft 只计算每一行的傅里叶变换。

    如果您只是在代码中将 fft2 替换为 fft,那么一切都会正常工作。

    【讨论】:

    • 非常感谢,我看了一个多小时的代码,但在 fft2 中找不到丢失的 2 ;-)
    • 没问题:)。直到我查看了您的代码中的情节并且我知道有问题时,它才突然出现在我身上。
    • +1:这是一个非常容易犯的错误——过去我在使用 Octave(MATLAB 克隆)并输入 fft 而不是 fft2 时浪费了很多时间。结果甚至在很多时候看起来都是合理的,这会使错误很难被发现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多