2011-04-20 39 views
2

http://www.mathworks.com/help/techdoc/ref/fftshift.htmlEffcient办法做到在Matlab FFT移(不使用fftshift功能)

如果您检查链接 - 这就是我要在第一张照片的事 - 矩阵交换象限。

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

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

感谢

+2

为什么你不能使用'fftshift'?这是功课吗? – abcd 2011-04-20 19:47:05

+1

你尝试过'打开fftshift'吗? – Phonon 2011-04-20 20:26:00

+0

我不想使用fftshift,因为我正在将一些matlab移植到C – Derek 2011-04-20 20:53:53

回答

1

如果您在MATLAB的命令行输入type fftshift.m,您将看到MATLAB实现函数的源代码(如果您想在编辑器中使用语法高亮显示,请使用edit fftshift.m)。我没有在这里发布代码,因为它是受版权保护的。但是,您可以在您的机器上尝试它,然后在C中重新实现它。如果您遇到任何问题,则可以自行决定授权条款等。

1

下应该工作

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

这仅适用于二维矩阵,但是可以很容易地推广到钕情况。