fftshift
Rearrange the elements of the FFT of a vector or matrix.
(y)=fftshift(x)
Inputs
x A two-dimensional array or a vector, typically the output of fft of fft2 .
Outputs
y An array of the same size as the input. The output contains the same elements but in a different order as described below.


Description
For a one-dimensional array, the element x[k+1] of the output x of fft is the transform of the input at the frequencey exp(2*pi*i*k/N), k=0,1,...N-1 where N is the size of x . Likewise, the element z[j+1,k+1] of the output z of fft2 is the transform of the input at the frequencies exp(2*pi*i*j/M), exp(2*pi*i*k/N) with j=0,1,...M-1 , and k=0,1,...N-1 . Here M and N are the row and column dimensions of y .

fftshift rearranges the outputs of fft and fft2 so that the zero frequency is at the center of the spectrum. If the input is a vector, fftshift swaps the upper and lower half of the vector. If the input is a matrix, the first and third quadrants as well as the second and fourth quadrants are swapped.


Example
>>y=rand(1024,1);
>>z=fft(y)
>>subplot(2,1,1)
>>plot(abs(z))
>>title("FFT")
>>w=fftshift(z)
>>subplot(2,1,2)
>>plot(abs(w))
>>title("FFTHIFT")