Иллюстрированный самоучитель по MatLab

Функция перегруппировки

Функция 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:

Иллюстрированный самоучитель по MatLab › Обработка данных › Функция перегруппировки
Рис. 17.8. График спектральной плотности сигнала после одномерного преобразования Фурье

Здесь мы ограничились 512 отсчетами, с тем чтобы использовать эффективны!: метод быстрого преобразования Фурье, при котором число отсчетов должно быт: 2N, где N – целое число. Теперь воспользуемся функцией fftshift:

>> Y=fftshift(Y);
>> Pyy=Y.*conj(Y)/512;
>> p1ot(Pyy).grid

Полученный при этом график представлен на рис. 17.9.

Иллюстрированный самоучитель по MatLab › Обработка данных › Функция перегруппировки

Иллюстрированный самоучитель по MatLab › Обработка данных › Функция перегруппировки
Рис. 17.9. График спектральной плотности того же сигнала после применения функции fftshift

Надо отметить, что этот график дает значения спектральной плотности составляющих спектра не явно от частоты, а как распределение ее значений для элементов вектора Руу.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.