Преобразование Фурье является инструментом для выполнения частоты и анализа спектра мощности сигналов временного интервала.
Спектральный анализ изучает спектр частоты, содержавшийся в дискретном, однородно выборочных данных. Преобразование Фурье является инструментом, который показывает частотные составляющие времени - или основанный на пробеле сигнал путем представления его на пробеле частоты. В следующей таблице перечислены общие количества, используемые, чтобы охарактеризовать и интерпретировать свойства сигнала. Чтобы узнать больше о преобразовании Фурье, смотрите преобразования Фурье.
Количество | Описание |
---|---|
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