이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
시작 시간이 서로 다른 신호 정렬하기
많은 경우 측정값에는 다수의 센서를 통해 비동기식으로 수집된 데이터가 포함됩니다. 신호를 통합하려면 신호를 동기화해야 합니다. 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