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