Взаимная корреляция задержанного сигнала в шуме

В этом примере показано, как использовать последовательность взаимной корреляции, чтобы обнаружить задержку поврежденной шумом последовательности. Выходная последовательность является задержанной версией входной последовательности с аддитивным белым Гауссовым шумом. Создайте две последовательности. Одна последовательность является задержанной версией другого. Задержка является 3 выборками. Добавление N(0,0.32) белый шум к задержанному сигналу. Используйте демонстрационную последовательность взаимной корреляции, чтобы обнаружить задержку.

Создайте и постройте сигналы. Установите генератор случайных чисел на настройки по умолчанию для восстанавливаемых результатов.

rng default

x = triang(20);
y = [zeros(3,1);x]+0.3*randn(length(x)+3,1);

subplot(2,1,1)
stem(x,'filled')
axis([0 22 -1 2])
title('Input Sequence')

subplot(2,1,2)
stem(y,'filled')
axis([0 22 -1 2])
title('Output Sequence')

Получите демонстрационную последовательность взаимной корреляции и используйте максимальное абсолютное значение, чтобы оценить задержку. Постройте демонстрационную последовательность взаимной корреляции. Максимальное значение последовательности взаимной корреляции происходит в задержке 3, как ожидалось.

[xc,lags] = xcorr(y,x);
[~,I] = max(abs(xc));

figure
stem(lags,xc,'filled')
hold on
stem(lags(I),xc(I),'filled')
hold off
legend(["Cross-correlation",sprintf('Maximum at lag %d',lags(I))])

Подтвердите результат с помощью finddelay функция.

finddelay(x,y)
ans = 3

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

|

Для просмотра документации необходимо авторизоваться на сайте