Преобразование Фурье является инструментом для выполнения частоты и анализа спектра мощности сигналов временной области.
Спектральный анализ изучает спектр частоты, содержавшийся в дискретном, однородно выборочных данных. Преобразование Фурье является инструментом, который показывает частотные составляющие времени - или основанный на пробеле сигнал путем представления его в пространстве частоты. В следующей таблице перечислены общие количества, используемые, чтобы охарактеризовать и интерпретировать свойства сигнала. Чтобы узнать больше о преобразовании Фурье, смотрите преобразования Фурье.
Количество | Описание |
---|---|
x | Выборочные данные |
n = length(x) | Количество отсчетов |
fs | Демонстрационная частота (выборки в единицу времени или пробел) |
dt = 1/fs | Шаг времени или пространства на выборку |
t = (0:n-1)/fs | Область значений времени или пространства для данных |
y = fft(x) | Дискретное преобразование Фурье данных (ДПФ) |
abs(y) | Амплитуда ДПФ |
(abs(y).^2)/n | Степень ДПФ |
fs/n | Шаг частоты |
f = (0:n-1)*(fs/n) | Частотный диапазон |
fs/2 | Частота Найквиста (средняя точка частотного диапазона) |
Преобразование Фурье может вычислить частотные составляющие сигнала, который повреждается случайным шумом.
Создайте сигнал с частотами компонента на уровне 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')
Первый звук является "трелью", сопровождаемой тремя "стонами". Этот пример анализирует один стон. Задайте новые данные, которые приблизительно состоят из первого стона, и откорректируйте данные времени с учетом factor-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
| fftshift
| nextpow2
| ifft
| fft2
| fftn