Функция перегруппировки
Функция Y = fftshift(X) перегруппировывает выходные массивы функций fft и fft2, размещая нулевую частоту в центре спектра, что иногда более удобно. Если X — вектор, то Y — вектор с циклической перестановкой правой и левой половин исходного вектора. Если X — матрица, то Y — матрица, у которой квадранты I и III меняются местами с квадрантами II и IV [
Для одно- и двумерных массивов функция fftshift(X) эквивалентна функции rot90{X.2)
]. Рассмотрим следующий пример. Вначале построим график спектральной плотности мощности (рис. 17.8) при одномерном преобразовании Фурье:
» rand('state'.0);
» WhO.001:0.512;
» x=sin(2*pi*50*t)+sin(2*pi*120*t);
» y=x+2*randn(size(t))+0.3;
» Y=fft(y);
» Pyy=Y.*conj(Y)/512:
» f=1000*(0:255)/512:
![](8.gif)
Рис. 17.8.
График спектральной плотности сигнала после одномерного преобразования Фурье
Здесь мы ограничились 512 отсчетами, с тем чтобы использовать эффективны!: метод быстрого преобразования Фурье, при котором число отсчетов должно быт: 2
N
, где N - целое число. Теперь воспользуемся функцией fftshift:
» Y=fftshift(Y);
» Pyy=Y.*conj(Y)/512;
» p1ot(Pyy).grid
Полученный при этом график представлен на рис. 17.9.
![](9a.gif)
![](9b.gif)
Рис. 17.9.
График спектральной плотности того же сигнала после применения функции fftshift
Надо отметить, что этот график дает значения спектральной плотности составляющих спектра не явно от частоты, а как распределение ее значений для элементов вектора Руу.