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

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