比较两个数据集的过程

时间:2011-06-21 14:56:47

标签: matlab dataset compare signal-processing similarity

我当时有两个数据集(以矢量的形式),我将它们绘制在同一个轴上以查看它们之间的相互关系,我特别注意并查找两个图形具有相似形状的位置(即两者在大致相同的间隔内看似正/负梯度的地方)。示例:

enter image description here

到目前为止,我一直在以图形方式处理数据,但是我意识到由于数据量太大,每次我想检查两组如何以图形方式关联时,需要花费太多时间。

是否有任何想法,脚本或功能可能有用,以便在某种程度上自动化这个过程?

2 个答案:

答案 0 :(得分:5)

您必须考虑的第一件事是您希望应用于建立相似性的标准的性质。有多种方法可以衡量相似度,您可以更准确地描述您想要的“类似”在您的问题中的意义,无论编程语言如何,最容易实现它。

话虽如此,这里有一些你可以看到的东西:

  • 两个数据集的相关性
  • 数据集的衍生物的差异(但我认为它不够健壮)
  • 三个@thron提到的光谱分析
  • 等。 ...

了解数据集的来源及其可变性在制定足够强大的算法方面也有很大帮助。

答案 1 :(得分:1)

不确定。调用你的两个向量A和B.

1)(可选)使用简单的平均滤波器(Matlab'smooth')或'filter'命令平滑数据。这将消除局部的速度变化(“梯度”),这些变化似乎基本上是噪声(如红色迹线的上升分量。

2)区分A和B.现在你直接表示每个向量的速度(Matlab'diff')。

3)将两个分化的载体一起加入(逐个元素)。叫这个C.

4)寻找C中绝对值超过某个阈值的所有点(你必须注意数据以便更好地了解它应该是什么)。高于此阈值的点表示高度相似的速度。

5)现在查看C中的高正值后跟高负值的位置,反之亦然。在这两点之间,您将在A和B中有类似的曲线。

注意:a)您可以在步骤3之后而不是在步骤1之后进行平滑.b)重新5),您可能会遇到数据中的“山丘”位于矢量边缘的情况是'切成两半',向量在下一个山上升之前下降到基线。然后5)会误认为山丘在最初的下降和随后的上升之间。为避免这种情况,您还可能要求两个速度相似点之间的A和B中的点具有较高的绝对值。