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

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

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

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