Math MATLAB中两个不同长度向量的匹配

Math MATLAB中两个不同长度向量的匹配,math,sensors,matlab,Math,Sensors,Matlab,我把来自两个不同传感器的数据加载到两个不同的向量中。这些传感器测量相同的加速度,因此它们的模式是相同的。但是,由于测量噪声,两者的值将略有不同。此外,由于采样频率和延迟等不同,一个向量的长度将大于另一个向量的长度 我的问题是,我如何使这两个向量相等。也就是说,我需要在vectorA中找到对应于vectorB中特定读数的读数。我尝试使用findpeaks()函数比较极值,但我不确定具体如何进行 谢谢 如果没有原始采样率,就无法“匹配”它们。这是因为数据实际上是时间和大小。如果省略了时间,则无法判断

我把来自两个不同传感器的数据加载到两个不同的向量中。这些传感器测量相同的加速度,因此它们的模式是相同的。但是,由于测量噪声,两者的值将略有不同。此外,由于采样频率和延迟等不同,一个向量的长度将大于另一个向量的长度

我的问题是,我如何使这两个向量相等。也就是说,我需要在vectorA中找到对应于vectorB中特定读数的读数。我尝试使用findpeaks()函数比较极值,但我不确定具体如何进行

谢谢

如果没有原始采样率,就无法“匹配”它们。这是因为数据实际上是时间和大小。如果省略了时间,则无法判断样本发生的时间,因此无法知道它是否与其他发生的时间不同(因为它可能发生在不同的时间)

现在,如果数据比较接近,您可能能够估计相对不同的采样频率,并使用该频率重新采样,但取决于采样的准确性,它可能无法正常工作

你能假设采样率接近且近似恒定吗

您希望做的是最小化函数

r上的int(| | f(r*t)-g(t)| ^2)

基本上是缩放f的时间轴,直到它“匹配”g。如果相同的速率不是常数,那么r是t的函数。这使得问题变得棘手,因为最小值可能不是唯一的(尽管对于r的一些最小有界变化,它可能是唯一的)

例如,您可以为各种r计算该表达式,并尝试为r的某个范围找到一个最小值。如果表达式不在某个范围内,则可以将其作为“匹配”拒绝

您可以使用更高级的方法,例如使用卡尔曼滤波器尝试进一步缩小结果范围

这实际上将取决于你的数据有多准确,以及你希望得到的结果有多准确(假阳性会导致死亡吗?)

因为你说假设它是相同的数据,你有一个起点,这应该在上面的最小化问题中得到一个唯一的r。您必须假设采样率近似恒定(或者调整最小化问题)


也许更好的方法是尝试获取采样率/时间点?(然后事情变得几乎微不足道)。

假设您可以收集一些数据,您可以校准两个传感器的采样频率。对于两个加速计来说,这可能意味着做一些奇怪的事情,比如把手机贴在桶的内壁上,然后在地板上滚动。如果您查看结果数据,您应该有来自两个传感器的相关信号。获取两组传感器数据的FFT将允许您查看采样率如何匹配。这段时间的偏移可以通过突然加速事件来解释,比如将手机放在枕头上或折叠的毯子上


校准两个传感器的采样频率后,可以在两个传感器之间进行插值以获得匹配向量。不幸的是,如果传感器以任意方式相互初始化,这将没有帮助。在具有独立外设的多任务操作系统中,这种方法对于获取两条记录道之间的偏移量可能不是很有效。但它至少可以帮助您了解每个传感器的采样率。如果将信号重新采样到相同的速率,则进行卷积(如上所述)应允许您根据采集的数据实时确定偏移量。

一些备注(太懒了,无法从中得出真实答案):将其中一个向量插值到与另一个向量相同的采样频率,将它们裁剪到相同的长度,并找到互相关函数的峰值,以获得相对偏移量。将此偏移量重新缩放到原始采样频率。您好,谢谢您的回复!我有一个问题,如果我不知道传感器的采样频率怎么办?我用的是WM+和智能手机的指南针,但我找不到准确的采样频率测量值。我只知道他们有不同的频率,因为在特定时间的样本数量。此外,如果我进行平均采样周期分析,我无法解释由于网络/过程延迟等原因造成的错误。是否有一个MATLAB函数,可以“拉伸”向量以适应另一个向量,而不提供其原始采样频率?每个传感器采样是否具有恒定频率?否,我计算相邻样本之间的时间,它们都是不同的。现在我不知道这是因为传输延迟和进程延迟,还是采样真的是非常数的。