이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

상호상관을 사용하여 신호 정렬하기

많은 경우 측정값에는 다수의 센서를 통해 비동기식으로 수집된 데이터가 포함됩니다. 신호를 통합하여 함께 분석하려면 신호를 동기화해야 합니다. 이런 경우에는 xcorr을 사용하십시오.

예를 들어, 다리를 건너는 자동차를 고려해 보겠습니다. 자동차에서 발생하는 진동은 서로 다른 곳에 있는 3개의 동일한 센서에서 측정됩니다. 신호의 도착 시간은 각기 다릅니다.

신호를 MATLAB® 작업 공간에 불러온 다음 플로팅합니다.

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')

세 쌍의 신호 간의 상호상관을 계산합니다. 상호상관의 최댓값이 1이 되도록 상호상관을 정규화합니다.

[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);

상호상관의 최댓값 위치는 시간 선행 또는 지연을 나타냅니다.

[M21,I21] = max(C21);
t21 = lag21(I21);

[M31,I31] = max(C31);
t31 = lag31(I31);

[M32,I32] = max(C32);
t32 = lag31(I32);

상호상관을 플로팅합니다. 각 플롯에 최댓값의 위치를 표시합니다.

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')

s2s1보다 350개 샘플만큼 앞서 있고, s3s1보다 150개 샘플만큼 뒤처져 있습니다. 따라서 s2s3보다 500개 샘플만큼 앞서 있습니다. 더 긴 지연을 갖는 벡터에서 지연을 제거하여 신호를 정렬합니다.

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')

이제 신호가 동기화되었으며 추가적인 처리가 가능합니다.

참고 항목

| |

관련 항목