Преобразование Фурье является инструментом для выполнения частоты и анализа спектра мощности сигналов временного интервала.
Спектральный анализ изучает спектр частоты, содержавшийся в дискретном, однородно выборочных данных. Преобразование Фурье является инструментом, который показывает частотные составляющие времени - или основанный на пробеле сигнал путем представления его в пространстве частоты. В следующей таблице перечислены общие количества, используемые, чтобы охарактеризовать и интерпретировать свойства сигнала. Чтобы узнать больше о преобразовании Фурье, смотрите преобразования Фурье.
Количество | Описание |
---|---|
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 Гц, и введите случайный Гауссов шум.
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*gallery('normaldata',size(t),4); % 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
| fft2
| fftn
| fftshift
| ifft
| nextpow2