Основной спектральный анализ

Преобразование Фурье является инструментом для выполнения анализа частоты и спектра степени сигналов временной области.

Величины спектрального анализа

Спектральный анализ исследует частотный спектр, содержащийся в дискретных, равномерно выбранных данных. Преобразование Фурье является инструментом, который раскрывает частотные составляющие основанного на времени или пространстве сигнала путем представления его в разносе частот. В следующей таблице перечислены общие величины, используемые для характеристики и интерпретации свойств сигнала. Чтобы узнать больше о преобразовании Фурье, см. «Преобразования Фурье».

КоличествоОписание
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')

Figure contains an axes. The axes contains an object of type line.

Во многих приложениях более удобно просматривать спектр степени с центром на 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')

Figure contains an axes. The axes contains an object of type line.

Аудиосигнал

Можно использовать преобразование Фурье, чтобы проанализировать частотный спектр аудио данных.

Файл bluewhale.au содержит аудио данных от тихоокеанской вокализации синего кита, записанной подводными микрофонами у побережья Калифорнии. Файл получен из библиотеки вокализаций животных, поддерживаемой Программой исследований биоакустики Корнеллского университета.

Поскольку вызовы синих китов настолько низки, они едва слышны для людей. Шкала времени в данных сжимается в 10 раз, чтобы поднять тангаж и сделать вызов более четко слышимым. Чтение и построение графика аудио данных. Можно использовать команду sound(x,fs) слушать аудио.

whaleFile = 'bluewhale.au';
[x,fs] = audioread(whaleFile);

plot(x)
xlabel('Sample Number')
ylabel('Amplitude')

Figure contains an axes. The axes contains an object of type line.

Первый звук - «трель», за которым следуют три «стона». Этот пример анализирует один стон. Укажите новые данные, которые примерно состоят из первого стона, и исправьте данные времени, чтобы учесть коэффициент скорости 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)])

Figure contains an axes. The axes contains an object of type line.

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

Figure contains an axes. The axes contains an object of type line.

См. также

| | | | |

Похожие темы