Исследование спектральной плотности мощности в MATLAB: раскрытие секретов сигналов

В области обработки сигналов спектральная плотность мощности (PSD) является фундаментальным инструментом для анализа и понимания частотного содержания сигнала. Изучая распределение мощности на разных частотах, мы можем получить ценную информацию о характеристиках и поведении сигналов. В этой статье блога мы погрузимся в мир PSD-анализа с использованием MATLAB, изучая различные методы и приемы. Итак, начнем!

Метод 1: использование функции периодограммы
Один из самых простых способов оценить PSD в MATLAB — использовать встроенную функцию периодограммы. Эта функция вычисляет спектр мощности сигнала с помощью алгоритма быстрого преобразования Фурье (БПФ). Вот пример фрагмента кода:

% Generate a signal
Fs = 1000; % Sampling frequency
t = 0:1/Fs:1; % Time vector
f = 10; % Frequency of the signal
x = sin(2*pi*f*t); % Sinusoidal signal
% Compute the PSD using periodogram
[Pxx, f] = periodogram(x, [], [], Fs);
% Plot the PSD
plot(f, 10*log10(Pxx), 'LineWidth', 2);
xlabel('Frequency (Hz)');
ylabel('Power Spectral Density (dB/Hz)');
title('Power Spectral Density using Periodogram');
grid on;

Метод 2: метод Уэлча для улучшенной оценки PSD
Хотя периодограмма проста в использовании, она страдает от высокой дисперсии и плохого разрешения по частоте, особенно для сигналов короткой продолжительности. Метод Уэлча — популярный метод преодоления этих ограничений путем разделения сигнала на перекрывающиеся сегменты и усреднения их периодограмм. Вот пример фрагмента кода:

% Generate a signal
Fs = 1000; % Sampling frequency
t = 0:1/Fs:1; % Time vector
f = 10; % Frequency of the signal
x = sin(2*pi*f*t); % Sinusoidal signal
% Compute the PSD using Welch's method
window = hamming(256); % Window function
noverlap = 128; % Number of samples for overlap
[Pxx, f] = pwelch(x, window, noverlap, [], Fs);
% Plot the PSD
plot(f, 10*log10(Pxx), 'LineWidth', 2);
xlabel('Frequency (Hz)');
ylabel('Power Spectral Density (dB/Hz)');
title('Power Spectral Density using Welch''s Method');
grid on;

Метод 3: Периодограмма Ломба-Скаргла для неравномерно выбранных данных
В некоторых случаях сигнал может иметь неравномерно расположенные выборки, например неравномерные временные интервалы. Периодограмма Ломб-Скаргла — это специализированный метод, который может обрабатывать такие данные. MATLAB предоставляет функцию plombдля вычисления периодограммы Ломба-Скаргла. Вот пример фрагмента кода:

% Generate unevenly sampled data
t = [0:0.1:1, 1.5:0.3:3]; % Time vector
f = 2; % Frequency of the signal
x = sin(2*pi*f*t); % Sinusoidal signal
% Compute the Lomb-Scargle periodogram
[Pxx, f] = plomb(x, t);
% Plot the PSD
plot(f, Pxx, 'LineWidth', 2);
xlabel('Frequency (Hz)');
ylabel('Power Spectral Density');
title('Power Spectral Density using Lomb-Scargle Periodogram');
grid on;

В этой статье мы исследовали различные методы оценки спектральной плотности мощности (PSD) в MATLAB. Мы начали с функции периодограммы, которая представляет собой простой подход к вычислению PSD с использованием быстрого преобразования Фурье (БПФ). Затем мы представили метод Уэлча, который улучшает оценку PSD за счет усреднения перекрывающихся периодограмм. Наконец, мы обсудили периодограмму Ломба-Скаргла — метод, подходящий для анализа сигналов с неравномерно расположенными выборками. Используя эти методы, вы можете получить ценную информацию о частотном составе и характеристиках сигналов.