Автокорреляция процесса скользящего среднего значения

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

Создайте импульсную характеристику для фильтра скользящего среднего значения с 3 точками. Отфильтруйте N (0,1) белая шумовая последовательность с фильтром. Установите генератор случайных чисел на настройки по умолчанию для восстанавливаемых результатов.

h = 1/3*ones(3,1);
rng default
x = randn(1000,1);
y = filter(h,1,x);

Получите автокорреляцию смещенной выборки к 20 задержкам. Постройте демонстрационную автокорреляцию наряду с теоретической автокорреляцией.

[xc,lags] = xcorr(y,20,'biased');

Xc = zeros(size(xc));
Xc(19:23) = [1 2 3 2 1]/9*var(x);

stem(lags,xc,'filled')
hold on
stem(lags,Xc,'.','linewidth',2)

lg = legend('Sample autocorrelation','Theoretical autocorrelation');
lg.Location = 'NorthEast';
lg.Box = 'off';

Демонстрационная автокорреляция получает общую форму теоретической автокорреляции, даже при том, что эти две последовательности не соглашаются подробно.

В этом случае ясно, что фильтр ввел значительную автокорреляцию только по задержкам [-2,2]. Абсолютное значение последовательности затухает быстро, чтобы обнулить за пределами той области значений.

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

[pxx,wx] = pwelch(x);
[pyy,wy] = pwelch(y);

figure
plot(wx/pi,20*log10(pxx),wy/pi,20*log10(pyy))

lg = legend('Original sequence','Filtered sequence');
lg.Location = 'SouthWest';

xlabel('Normalized Frequency (\times\pi rad/sample)')
ylabel('Power/frequency (dB/rad/sample)')
title('Welch Power Spectral Density Estimate')
grid

Белый шум был "окрашен" фильтром скользящего среднего значения.

Внешние веб-сайты