시작 시간이 서로 다른 신호 정렬하기
많은 경우 측정값에는 다수의 센서를 통해 비동기식으로 수집된 데이터가 포함됩니다. 신호를 통합하려면 신호를 동기화해야 합니다. Signal Processing Toolbox™에는 이 작업을 수행할 수 있는 다양한 함수가 제공됩니다.
예를 들어, 다리를 건너는 자동차를 고려해 보겠습니다. 자동차에서 발생하는 진동은 서로 다른 곳에 있는 3개의 동일한 센서에서 측정됩니다. 신호의 도착 시간은 각기 다릅니다.
신호를 MATLAB® 작업 공간에 불러온 다음 플로팅합니다.
load relatedsig ax(1) = subplot(3,1,1); plot(s1) ylabel('s_1') ax(2) = subplot(3,1,2); plot(s2) ylabel('s_2') ax(3) = subplot(3,1,3); plot(s3) ylabel('s_3') xlabel('Samples') linkaxes(ax,'x')
신호 s1
은 s2
보다 뒤처져 있고 s3
보다 앞서 있습니다. 이와 같은 지연은 finddelay
를 사용하여 정확하게 계산할 수 있습니다. s2
가 s1
보다 350개 샘플만큼 앞서 있고, s3
이 s1
보다 150개 샘플만큼 뒤처져 있고, s2
가 s3
보다 500개 샘플만큼 앞서 있음을 알 수 있습니다.
t21 = finddelay(s2,s1) t31 = finddelay(s3,s1) t32 = finddelay(s2,s3)
t21 = 350 t31 = -150 t32 = 500
먼저 도착한 신호는 그대로 유지하고 다른 벡터에서 지연을 제거하여 신호를 정렬합니다. MATLAB®은 인덱싱을 1부터 시작한다는 점을 감안하여 지연값 차이에 1을 더합니다. 이 방법에서는 가장 빠른 도착 시간 즉, s2
의 도착 시간을 기준으로 사용하여 신호를 정렬합니다.
axes(ax(1)) plot(s1(t21+1:end)) axes(ax(2)) plot(s2) axes(ax(3)) plot(s3(t32+1:end))
alignsignals
를 사용하여 신호를 정렬합니다. 이 함수는 빨리 도착한 신호를 지연시키는 방식으로 처리하기 때문에 가장 늦은 도착 시간인 s3
의 도착 시간을 기준으로 사용하십시오.
[x1,x3] = alignsignals(s1,s3); x2 = alignsignals(s2,s3); axes(ax(1)) plot(x1) axes(ax(2)) plot(x2) axes(ax(3)) plot(x3)
이제 신호가 동기화되었으며 추가적인 처리가 가능합니다.
참고 항목
alignsignals
| finddelay
| xcorr