exponenta event banner

Выравнивание сигналов с использованием взаимной корреляции

Многие измерения включают в себя данные, собранные в асинхронном режиме несколькими датчиками. Если вы хотите интегрировать сигналы и изучить их в тандеме, вы должны синхронизировать их. Использовать xcorr с этой целью.

Например, рассмотрим автомобиль, пересекающий мост. Создаваемые им колебания измеряются тремя одинаковыми датчиками, расположенными в разных точках. Сигналы имеют разное время поступления.

Загрузите сигналы в рабочее пространство 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')

Figure contains 3 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line. Axes 3 contains an object of type line.

Вычислите взаимные корреляции между тремя парами сигналов. Нормализуйте их таким образом, чтобы их максимальное значение было равно 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')

Figure contains 3 axes. Axes 1 with title Cross-Correlations contains 3 objects of type line, text. Axes 2 contains 3 objects of type line, text. Axes 3 contains 3 objects of type line, text.

s2 ведет s1 на 350 образцов; s3 задержки s1 на 150 образцов. Таким образом s2 ведет s3 на 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')

Figure contains 3 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line. Axes 3 contains an object of type line.

Сигналы теперь синхронизированы и готовы для дальнейшей обработки.

См. также

| |

Связанные темы