Выровняйте сигналы с различными временами запуска

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

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

Смотрите также

| |

Похожие темы