3

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

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

谢谢!

4

2 回答 2

3

如果没有原始采样率,就无法“匹配”它们。这是因为数据实际上既是时间也是量级。如果您忽略时间,您将无法判断样本何时发生,因此您无法知道它是否与发生的另一个不同(因为它可能发生在不同的时间)。

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

您能假设采样率接近且大致恒定吗?

您要做的是最小化功能

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

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

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

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

这实际上取决于您的数据有多准确以及您希望结果有多准确(误报会杀死任何人吗?)。

因为你说它假设是相同的数据,所以你确实有一个起点,这应该让你在上面的最小化问题中得到一个独特的 r。您将不得不假设采样率大致恒定(或适应最小化问题)。

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

于 2011-01-21T05:52:59.020 回答
3

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

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

于 2012-11-20T21:34:24.463 回答