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

时间:2011-01-21 01:50:48

标签: math sensor matlab

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

我的问题是,我如何将这两个向量等同起来。也就是说,我需要在vectorA中找到与vectorB中特定读数对应的读数。我尝试使用findpeaks()函数来比较极值,但我不确定究竟是怎么回事。

谢谢!

2 个答案:

答案 0 :(得分:3)

没有原始采样率,就无法“匹配”它们。这是因为数据实际上既是时间又是幅度。如果你遗漏了时间,你无法判断样品何时发生,因此你不知道它是否与另一个发生的不同(因为它可能在不同的时间发生)。

现在,如果数据相对接近,您可能能够估计采样频率的相对差异,并使用它进行重新采样,但根据采样的准确性,它可能无法正常工作。

您能否假设采样率接近且近似恒定?

您要做的是最小化功能

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

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

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

您可以获得更高级的功能,例如使用卡尔曼滤波器来尝试进一步缩小搜索范围。

这真的取决于你的数据准确程度以及你对结果的准确程度(误报是否会杀死任何人?)。

因为你说它假设是相同的数据你有一个起点ans这应该让你在上面的最小化问题中得到一个独特的r。您将不得不假设采样率大致保持不变(或调整最小化问题)。

也许更好的方法是尝试获取采样率/时间点? (那么事情变得几乎无足轻重)。

答案 1 :(得分:3)

假设您可以收集一些数据,您可以校准两个传感器的采样频率。对于两个加速度计,这可能意味着做一些奇怪的事情,比如将手机贴在水桶的内壁上,然后沿着地板滚动。如果查看结果数据,则应该从两个传感器获得相关信号。通过对两组传感器数据进行FFT,您可以了解如何匹配采样率。周期性偏移可以通过突然加速事件来解决,例如将手机放在枕头或折叠的毯子上。

一旦校准了两个传感器的采样频率,就可以在两个传感器之间进行插值以得到匹配的矢量。不幸的是,如果传感器相对于彼此以任意方式初始化,这将无济于事。在具有独立外设的多任务操作系统中,这种方法对于获得两条迹线之间的偏移可能不是很有效。但它至少应该帮助您了解每个传感器的采样率。如果信号被重采样到相同的速率,那么采用卷积(如上所述)应该允许您从收集的数据中实时确定偏移量。