Выравнивание сигналов с различными временами начала

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

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

См. также

| |

Похожие темы