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

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

Количества спектрального анализа

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

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

Смотрите также

| | | | |

Похожие темы