Колеблющийся шум на графиках БПФ, но аналогичные уровни на графиках PSD с использованием pwelch - PullRequest
0 голосов
/ 20 июня 2020

Я столкнулся с чем-то, что мне еще не удалось выяснить после долгого поиска в Google. Я пытаюсь вычислить PSD (спектральную плотность мощности) флуктуирующего системного шума, который является случайным для 160 измерений. Шум расположен в 160 матрицах размером 16000x197, в которых каждый столбец представляет собой сигнал. Все сигналы имеют равную длину и одинаковую частоту дискретизации.

Я беру PSD и БПФ каждого столбца и его медианное значение, как видно из кода, поэтому у меня остается медиана 160 PSD и FFT для оценки уровней шума по 160 измерениям. Код этого приведен ниже. Шум колеблется по 160 матрицам, что хорошо видно на графиках БПФ (изображения прилагаются). Но для PSD это зависит от управления окнами и перекрытия окон, если эти колебания все еще видны.

Когда я использую: [PSD_data(:,ii),PSD_xax]= pwelch(data(:,ii),hann(500),250,[1:250],500); флуктуации отсутствуют. Но когда я использую: [PSD_data(:,ii),PSD_xax]= pwelch(data(:,ii),rectwin(4000),1000,[1:250],500);, они хорошо видны, а спектр в целом больше похож на БПФ.

Я не совсем понимаю, почему другое оконное управление полностью устраняет колебания. Я надеюсь, что кто-нибудь сможет мне это объяснить? Буду очень признателен!

[row,col] = size(data); % Data = 16000x197
FFT_data = zeros((row-1)/2,col);
PSD_data = zeros(250,col);

for ii =1:col

[FFT_xax,FFT_data(:,ii)] = myfft(data(:,ii),fs);
[PSD_data(:,ii),PSD_xax]= pwelch(data(:,ii),hann(500),250,[1:250],500);

end

med_FFT = median(abs(FFT_data),2);
med_PSD = median(PSD_data,2);


PSD

FFT

...