Преобразование Фурье является инструментом для выполнения анализа частоты и спектра степени сигналов временной области.
Спектральный анализ исследует частотный спектр, содержащийся в дискретных, равномерно выбранных данных. Преобразование Фурье является инструментом, который раскрывает частотные составляющие основанного на времени или пространстве сигнала путем представления его в разносе частот. В следующей таблице перечислены общие величины, используемые для характеристики и интерпретации свойств сигнала. Чтобы узнать больше о преобразовании Фурье, см. «Преобразования Фурье».
Количество | Описание |
---|---|
x | Выборочные данные |
n = length(x) | Количество выборок |
fs | Частота дискретизации (выборки за модуль времени или пространства) |
dt = 1/fs | Шаг времени или пространства на выборку |
t = (0:n-1)/fs | Временной или время или пространство для данных |
y = fft(x) | Дискретное преобразование Фурье данных (DFT) |
abs(y) | Амплитуда ДПФ |
(abs(y).^2)/n | Степень ДПФ |
fs/n | Шаг частоты |
f = (0:n-1)*(fs/n) | Частотная область значений |
fs/2 | Nyquist частота (средняя точка частотной области значений) |
Преобразование Фурье может вычислить частотные составляющие сигнала, который поврежден случайным шумом.
Создайте сигнал с частотами компонентов на 15 Гц и 40 Гц и введите случайный Гауссов шум.
rng('default') fs = 100; % sample frequency (Hz) t = 0:1/fs:10-1/fs; % 10 second span time vector x = (1.3)*sin(2*pi*15*t) ... % 15 Hz component + (1.7)*sin(2*pi*40*(t-2)) ... % 40 Hz component + 2.5*randn(size(t)); % Gaussian noise;
Преобразование Фурье сигнала идентифицирует его частотные составляющие. В MATLAB ® fft
функция вычисляет преобразование Фурье с помощью алгоритма быстрого преобразования Фурье. Использование fft
вычислить дискретное преобразование Фурье сигнала.
y = fft(x);
Постройте график степени спектра как функцию от частоты. В то время как шум маскирует частотные составляющие сигнала в основанном на времени пространстве, преобразование Фурье показывает их как всплески в степень.
n = length(x); % number of samples f = (0:n-1)*(fs/n); % frequency range power = abs(y).^2/n; % power of the DFT plot(f,power) xlabel('Frequency') ylabel('Power')
Во многих приложениях более удобно просматривать спектр степени с центром на 0 частоте, потому что он лучше представляет периодичность сигнала. Используйте fftshift
функция для выполнения кругового сдвига на y
, и постройте график 0-центрированной степени.
y0 = fftshift(y); % shift y values f0 = (-n/2:n/2-1)*(fs/n); % 0-centered frequency range power0 = abs(y0).^2/n; % 0-centered power plot(f0,power0) xlabel('Frequency') ylabel('Power')
Можно использовать преобразование Фурье, чтобы проанализировать частотный спектр аудио данных.
Файл bluewhale.au
содержит аудио данных от тихоокеанской вокализации синего кита, записанной подводными микрофонами у побережья Калифорнии. Файл получен из библиотеки вокализаций животных, поддерживаемой Программой исследований биоакустики Корнеллского университета.
Поскольку вызовы синих китов настолько низки, они едва слышны для людей. Шкала времени в данных сжимается в 10 раз, чтобы поднять тангаж и сделать вызов более четко слышимым. Чтение и построение графика аудио данных. Можно использовать команду sound(x,fs)
слушать аудио.
whaleFile = 'bluewhale.au'; [x,fs] = audioread(whaleFile); plot(x) xlabel('Sample Number') ylabel('Amplitude')
Первый звук - «трель», за которым следуют три «стона». Этот пример анализирует один стон. Укажите новые данные, которые примерно состоят из первого стона, и исправьте данные времени, чтобы учесть коэффициент скорости 10. Постройте график усеченного сигнала как функцию времени.
moan = x(2.45e4:3.10e4); t = 10*(0:1/fs:(length(moan)-1)/fs); plot(t,moan) xlabel('Time (seconds)') ylabel('Amplitude') xlim([0 t(end)])
Преобразование Фурье данных идентифицирует частотные составляющие аудиосигнала. В некоторых приложениях, которые обрабатывают большие объемы данных с fft
, обычно изменение размера входа таким образом, чтобы количество выборок было степенью 2. Это может сделать расчет преобразования значительно быстрее, особенно для размеров выборки с большими простыми множителями. Задайте новую длину сигнала n
это степень 2, и используйте fft
функция для вычисления дискретного преобразования Фурье сигнала. fft
автоматически заполняет исходные данные нулями, чтобы увеличить размер выборки.
m = length(moan); % original sample length n = pow2(nextpow2(m)); % transform length y = fft(moan,n); % DFT of signal
Отрегулируйте частотную область значений из-за коэффициента скорости, и вычислите и постройте график спектра степени сигнала. График указывает, что стон состоит из основной частоты около 17 Гц и последовательности гармоник, где подчеркнута вторая гармоника.
f = (0:n-1)*(fs/n)/10; power = abs(y).^2/n; plot(f(1:floor(n/2)),power(1:floor(n/2))) xlabel('Frequency') ylabel('Power')
fft
| fft2
| fftn
| fftshift
| ifft
| nextpow2