Main Content

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Alinear señales mediante correlación cruzada

Muchas mediciones implican datos recopilados de forma asincrónica por varios sensores. Si quieres integrar las señales y estudiarlas en tándem, tienes que sincronizarlas. Utilícelo para ese propósito.xcorr

Por ejemplo, considere un coche que cruza un puente. Las vibraciones que produce se miden mediante tres sensores idénticos situados en diferentes puntos. Las señales tienen diferentes tiempos de llegada.

Cargue las señales en el espacio de trabajo MATLAB® y compílelas.

load relatedsig  ax(1) = subplot(3,1,1); plot(s1) ylabel('s_1') axis tight  ax(2) = subplot(3,1,2); plot(s2) ylabel('s_2') axis tight  ax(3) = subplot(3,1,3); plot(s3) ylabel('s_3') axis tight xlabel('Samples')  linkaxes(ax,'x')

Calcular las correlaciones cruzadas entre los tres pares de señales. Normalizarlos para que su valor máximo sea uno.

[C21,lag21] = xcorr(s2,s1); C21 = C21/max(C21);  [C31,lag31] = xcorr(s3,s1); C31 = C31/max(C31);  [C32,lag32] = xcorr(s3,s2); C32 = C32/max(C32);

Las ubicaciones de los valores máximos de las correlaciones cruzadas indican los pasos a paso de tiempo o los retrasos.

[M21,I21] = max(C21); t21 = lag21(I21);  [M31,I31] = max(C31); t31 = lag31(I31);  [M32,I32] = max(C32); t32 = lag31(I32);

Trazar las correlaciones cruzadas. En cada trazado se muestra la ubicación del máximo.

subplot(3,1,1) plot(lag21,C21,[t21 t21],[-0.5 1],'r:') text(t21+100,0.5,['Lag: ' int2str(t21)]) ylabel('C_{21}') axis tight title('Cross-Correlations')  subplot(3,1,2) plot(lag31,C31,[t31 t31],[-0.5 1],'r:') text(t31+100,0.5,['Lag: ' int2str(t31)]) ylabel('C_{31}') axis tight  subplot(3,1,3) plot(lag32,C32,[t32 t32],[-0.5 1],'r:') text(t32+100,0.5,['Lag: ' int2str(t32)]) ylabel('C_{32}') axis tight xlabel('Samples')

350 muestras; retrasos por 150 muestras.s2s1s3s1 Por lo tanto, conduce por 500 muestras.s2s3 Alinee las señales recortando los vectores con retrasos más largos.

s1 = s1(-t21:end); s3 = s3(t32:end);  ax(1) = subplot(3,1,1); plot(s1) ylabel('s_1') axis tight  ax(2) = subplot(3,1,2); plot(s2) ylabel('s_2') axis tight  ax(3) = subplot(3,1,3); plot(s3) ylabel('s_3') axis tight xlabel('Samples')  linkaxes(ax,'x')

Las señales ahora están sincronizadas y listas para su posterior procesamiento.

Consulte también

| |

Temas relacionados