Main Content

시작 시간이 서로 다른 신호 정렬하기

많은 경우 측정값에는 다수의 센서를 통해 비동기식으로 수집된 데이터가 포함됩니다. 신호를 통합하려면 신호를 동기화해야 합니다. 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')

신호 s1s2보다 뒤처져 있고 s3보다 앞서 있습니다. 이와 같은 지연은 finddelay를 사용하여 정확하게 계산할 수 있습니다. s2s1보다 350개 샘플만큼 앞서 있고, s3s1보다 150개 샘플만큼 뒤처져 있고, s2s3보다 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)

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

참고 항목

| |

관련 항목