基于互相关性的信号同步

news/2024/11/29 3:50:00/

许多测量涉及多个传感器异步采集的数据。如果您要集成信号并以关联式研究它们,您必须同步它们。为此,请使用 xcorr

例如,假设有一辆汽车经过一座桥。它产生的振动由位于不同位置的三个相同传感器进行测量。信号有不同到达时间。

  • 将三个时间轴并未同步的信号plot出来
ax(1) = subplot(3,1,1);
plot(s1)
ylabel('s_1')
axis tightax(2) = subplot(3,1,2);
plot(s2)
ylabel('s_2')
axis tightax(3) = subplot(3,1,3);
plot(s3)
ylabel('s_3')
axis tight
xlabel('Samples')linkaxes(ax,'x')

可以发现三个信号包络相同,但时延不同。即同一时间点信号有先有后。

  • 计算三对信号之间的互相关性

 将它们归一化,使其最大值为 1

[C21,lag21] = xcorr(s2,s1);
C21 = C21/max(C21);[C31,lag31] = xcorr(s3,s1);
C31 = C31/max(C31);[C32,lag32] = xcorr(s3,s2);
C32 = C32/max(C32);

xcorr是MATLAB中的一个函数,用于计算两个序列之间的互相关或自相关。xcorr函数的语法如下:[C,lag] = xcorr(A,B),其中A和B是两个输入序列,C是它们之间的互相关或自相关,lag是延迟向量。在我提供的代码中,s1和s2是两个输入序列,xcorr(s2,s1)计算了s2和s1之间的互相关,并返回结果C和lag。其余同理

互相关性最大值的位置指示领先或滞后时间 

[M21,I21] = max(C21);
t21 = lag21(I21);[M31,I31] = max(C31);
t31 = lag31(I31);[M32,I32] = max(C32);
t32 = lag31(I32);

在我提供的代码中,M21是C21中的最大值,I21是C21中最大值的索引,t21是lag21中与C21中最大值对应的延迟。

  • 绘制互相关图。

在每个绘图中显示最大值的位置。 

subplot(3,1,1)
plot(lag21,C21,[t21 t21],[-0.5 1],'r:')
text(t21+100,0.5,['Lag: ' int2str(t21)])
ylabel('C_{21}')
axis tight
title('Cross-Correlations')subplot(3,1,2)
plot(lag31,C31,[t31 t31],[-0.5 1],'r:')
text(t31+100,0.5,['Lag: ' int2str(t31)])
ylabel('C_{31}')
axis tightsubplot(3,1,3)
plot(lag32,C32,[t32 t32],[-0.5 1],'r:')
text(t32+100,0.5,['Lag: ' int2str(t32)])
ylabel('C_{32}')
axis tight
xlabel('Samples')

plot(lag21,C21,[t21 t21],[-0.5 1],‘r:’)将绘制一个由向量lag21和C21定义的线条,并在x轴上标记为t21。此外,它还将在x轴上标记一条红色垂直线,该线与y轴交叉点为-0.5和1,横坐标为t21。

由上图可知,s2 领先于 s1 350 个样本;s3 落后于 s1 150 个样本。因此,s2 领先于 s3 500 个样本。通过截断具有较长延迟的向量来对齐信号。 

  • 信号截断
s1 = s1(-t21:end);
s3 = s3(t32:end);ax(1) = subplot(3,1,1);
plot(s1)
ylabel('s_1')
axis tightax(2) = subplot(3,1,2);
plot(s2)
ylabel('s_2')
axis tightax(3) = subplot(3,1,3);
plot(s3)
ylabel('s_3')
axis tight
xlabel('Samples')linkaxes(ax,'x')

这些信号现在已同步,可用于进一步处理。 


http://www.ppmy.cn/news/46264.html

相关文章

Java集合底层原理

目录 ArrayList集合源码创建ArrayList集合扩容机制 LinkedList集合源码添加数据 迭代器源码HashSet底层原理HashMap源码创建HashMap对象添加元素 TreeMap源码基本属性与构造器添加元素 以下源码来自JDK11 ArrayList集合源码 创建ArrayList集合 /* 无参构造,返回一个空数组 参…

DPDK系列之十三虚拟化virtio源码分析之应用层

一、应用 其实不管怎么设计,如何开发,结果都是要展现一个结果,能够为人所用。虽然说virtio的应用场景有不少,但是在DPDK中主要就是网卡。所以,在此处主要是对网卡的抽象的实现,即对上层的应用实现底层的vi…

【ChatGPT】基于tensorflow2实现transformer(GPT-3.5)

请记住,您是一位NLP领域的专家和优秀的算法工程师。使用带有 tensorflow2.0 subclass api 的 python 从头开始实现 transformer 模型。 全部内容如下: 构建transformer模型架构和依赖层;生成并预处理一些假样本数据,用于训练上面…

NOIP模拟赛 T3区间

题目大意 有 n n n个数字,第 i i i个数字为 a i a_i ai​。有 m m m次询问,每次给出 k i k_i ki​个区间,每个区间表示第 l i , j l_{i,j} li,j​到第 r i , j r_{i,j} ri,j​个数字,求这些区间中一共出现了多少种不同的数字。部…

用Abp实现找回密码和密码强制过期策略

文章目录 重置密码找回密码发送验证码校验验证码发送重置密码链接创建接口 密码强制过期策略改写接口 Vue网页端开发重置密码页面忘记密码控件密码过期提示 项目地址 用户找回密码,确切地说是 重置密码,为了保证用户账号安全,原始密码将不再…

【通过Cpython3.9源码看看列表到底是咋回事】

列表结构 typedef struct {PyObject_VAR_HEAD/* Vector of pointers to list elements. list[0] is ob_item[0], etc. */PyObject **ob_item;/* ob_item contains space for allocated elements. The number* currently in use is ob_size.* Invariants:* 0 < ob_siz…

ObjectARX中的坐标系以及坐标转换

1 AutoCAD中的坐标系种类 WCS World Coordinate System. The “reference” coordinate system. All other coordinate systems are defined relative to the WCS, which never changes. Values measured relative to the WCS are stable across changes to other coordinate s…

MySQL数据库——MySQL数据类型的选择

MySQL 提供了大量的数据类型&#xff0c;为了优化存储和提高数据库性能&#xff0c;在任何情况下都应该使用最精确的数据类型。 前面主要对 MySQL 中的数据类型及其基本特性进行了描述&#xff0c;包括它们能够存放的值的类型和占用空间等。本节主要讨论创建数据库表时如何选择…