Многие измерения включают данные, собранные асинхронно несколькими датчиками. Если вы хотите интегрировать сигналы, вы должны синхронизировать их. У Signal Processing Toolbox™ есть функции, которые позволяют вам делать именно это.
Например, рассмотрим автомобиль, пересекающий мост. Вибрации, которые он производит, измеряются тремя идентичными датчиками, расположенными в разных точках. Сигналы имеют разное время прибытия.
Загрузите сигналы в рабочую область 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
Стройте блоки сигналов, оставив предыдущий сигнал нетронутым и отсекая задержки из других векторов. Добавьте 1 к различиям с задержкой для учета индексации на основе одного, используемой MATLAB ®. Этот метод выравнивает сигналы, используя в качестве опорных самое раннее время прибытия, то есть 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