exponenta event banner

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

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

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

См. также

| |

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