使用Mathematica缩放/移动实验数据向量

时间:2011-07-11 19:22:45

标签: statistics wolfram-mathematica signal-processing analysis minimize

我有一些需要按摩的实验数据向量,例如:

{
 {0, 61237, 131895, 194760, 249935},
 {0, 61939, 133775, 197516, 251018},
 {0, 60919, 131391, 194112, 231930},
 {0, 60735, 131015, 193584, 249607},
 {0, 61919, 133631, 197186, 250526}, 
 {0, 61557, 132847, 196143, 258687},
 {0, 61643, 133011, 196516, 249891},
 {0, 62137, 133947, 197848, 251106}
}

每个向量是一次运行的结果,由五个数字组成,这五个数字是一个对象通过五个传感器中的每一个的时间。在测量间隔内,物体的速度是恒定的(传感器到传感器的间隔是不同的,因为传感器间距不均匀)。从一次运行到下一次运行,传感器的间距保持不变,但物体的速度在一次运行到另一次运行时会有所不同。

如果传感器是完美的,每个矢量应该只是任何其他矢量的标量倍数(与它们的速度比例成比例)。但实际上每个传感器都会有一些“抖动”,并且会以一些小的随机数量提前或延迟触发。我试图分析传感器本身有多好,即它们给我的测量中有多少“抖动”?

所以我认为我需要做以下事情。对于每个向量,我必须对其进行缩放,然后添加,然后将向量移位一点(向其五个元素中的每一个添加或减去固定量)。然后每列的StandardDeviation将描述该传感器中的“噪声”或“抖动”量。必须选择每个矢量的缩放量以及每个矢量的移位量,以最小化列的标准偏差。

在我看来是数学可能有获得此做了一个很好的工具,其实我想我可能已经找到的答案Standardize[],但它似乎对处理标量的列表中定向,而不是像我这样的列表列表(或者至少我不知道在这里将它应用到我的案例中)。

所以我正在寻找一些提示,以便我可以使用哪些库函数来解决这个问题,或者我可能需要提示我自己解决算法。也许我的问题的一部分是,我想不出哪里看 - 是我在这里是一个“信号处理”的问题,或数据操作或数据挖掘问题,或最小化问题,或者它是一个相对标准我之前根本没有听说过的统计函数?

(作为奖励,我希望能够控制用于优化此缩放/移位的加权函数;例如,在上面的数据中,我怀疑传感器#5有问题所以我想将数据仅适合在进行缩放/移位时考虑传感器1-4的SD)

1 个答案:

答案 0 :(得分:1)

我对你的算法本身无法评论太多,因为数据分析不是我的强项。但是,根据我的理解,您正试图描述每个传感器的时序变化。由于来自单个传感器的数据位于矩阵的单个列中,我建议将其转置并将Standardize映射到每组数据。换句话说,

dat = (* your data *)
Standardize /@ Transpose[dat]

要将其以柱状形式放回,Transpose结果。要从此过程中排除最后一位传感器,只需使用Part[ ])和Span;;

Standardize /@ Transpose[dat][[ ;; -2 ]]

或者,Most

Standardize /@ Most[Transpose[dat]]

考虑到这一点,我认为你很难将定时抖动与速度变化区分开来。你能有意改变速度吗?