在matlab中进行FFT移位的有效方法(不使用fftshift功能)

时间:2011-04-20 19:41:18

标签: matlab matrix signal-processing fft

http://www.mathworks.com/help/techdoc/ref/fftshift.html

如果检查链接 - 这就是我想在第一张图片中做的事情 - 交换矩阵的象限。

然而,我似乎无法想出一个很好的方法来做到这一点,而没有几个循环来拉出相关的子矩阵。

我需要它与MxN矩阵一起使用,其中M和N可以是偶数和奇数的任意组合。

由于

2 个答案:

答案 0 :(得分:2)

以下内容应该有效

sz = ceil(size(A)/2)
A = A([sz(1)+1:end, 1:sz(1)], [sz(2)+1:end, 1:sz(2)])

这仅适用于2d矩阵,但可以很容易地推广到Nd情况。

答案 1 :(得分:1)

如果您在MATLAB的命令行输入type fftshift.m,您将看到MATLAB实现该函数的源代码(如果您想在编辑器中使用语法高亮显示它,请使用edit fftshift.m)。我不是在这里发布代码,因为它受版权保护。但是,您可以在您的计算机上进行尝试并在C中重新实现它。如果您涉及任何一项,您可以自行查明许可条款等。