Функция перегруппировки
Функция 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
:
Рис. 17.8. График спектральной плотности сигнала после одномерного преобразования Фурье
Здесь мы ограничились 512 отсчетами, с тем чтобы использовать эффективны!: метод быстрого преобразования Фурье, при котором число отсчетов должно быт: 2N, где N – целое число. Теперь воспользуемся функцией fftshift:
>
>
Y
=
fftshift(Y);
>
>
Pyy
=
Y.
*
conj(Y)
/
512
;
>
>
p1ot(Pyy).grid
Полученный при этом график представлен на рис. 17.9.
Рис. 17.9. График спектральной плотности того же сигнала после применения функции fftshift
Надо отметить, что этот график дает значения спектральной плотности составляющих спектра не явно от частоты, а как распределение ее значений для элементов вектора Руу.