Correlación cruzada de una señal retardada con ruido
Este ejemplo muestra cómo utilizar la secuencia de correlación cruzada para detectar el retardo temporal en una secuencia corrompida por el ruido. La secuencia de salida es una versión retardada de la secuencia de entrada con ruido blanco gaussiano aditivo. Cree dos secuencias. Una secuencia es una versión retardada de la otra. El retardo es tres muestras. Añada ruido blanco a la señal retardada. Utilice la secuencia de correlación cruzada de muestra para detectar el desfase.
Calcule y represente las señales. Establezca la configuración predeterminada del generador de números aleatorios para obtener resultados reproducibles.
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')
Obtenga la secuencia de correlación cruzada de muestra y utilice el valor absoluto máximo para estimar el desfase. Represente la secuencia de correlación cruzada de muestra. El valor máximo de la secuencia de correlación cruzada tiene lugar cuando el desfase es 3, según se espera.
[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))])
Confirme el resultado utilizando la función finddelay
.
finddelay(x,y)
ans = 3