Accelerating the pace of engineering and science

# fftshift

Shift zero-frequency component to center of spectrum

## Syntax

Y = fftshift(X)
Y = fftshift(X,dim)

## Description

Y = fftshift(X) rearranges the outputs of fft, fft2, and fftn by moving the zero-frequency component to the center of the array. It is useful for visualizing a Fourier transform with the zero-frequency component in the middle of the spectrum.

For vectors, fftshift(X) swaps the left and right halves of X. For matrices, fftshift(X) swaps the first quadrant with the third and the second quadrant with the fourth.

For higher-dimensional arrays, fftshift(X) swaps "half-spaces" of X along each dimension.

Y = fftshift(X,dim) applies the fftshift operation along the dimension dim.

 Note:   ifftshift will undo the results of fftshift. If the matrix X contains an odd number of elements, ifftshift(fftshift(X)) must be done to obtain the original X. Simply performing fftshift(X) twice will not produce X.

## Examples

For any matrix X

`Y = fft2(X)`

has Y(1,1) = sum(sum(X)); the zero-frequency component of the signal is in the upper-left corner of the two-dimensional FFT. For

`Z = fftshift(Y)`

this zero-frequency component is near the center of the matrix.

The difference between fftshift and ifftshift is important for input sequences of odd-length.

```N = 5;
X = 0:N-1;
Y = fftshift(fftshift(X));
Z = ifftshift(fftshift(X));```

Notice that Z is a correct replica of X, but Y is not.

```isequal(X,Y),isequal(X,Z)

ans =

0

ans =

1```