【问题标题】:How to Get a Quantitative Comparison of Two Signals如何获得两个信号的定量比较
【发布时间】:2009-12-09 00:46:33
【问题描述】:

我正在尝试实现盲源分离 (BSS) 算法,但在确定该算法的有效性时遇到了麻烦。

我正在尝试创建测试用例,其中我向后工作并从通常未知的信号向量 s 开始,然后创建混合矩阵 A,我用它来转换 s 以创建观察向量 x,这通常是由诸如感官设备之类的东西观察到的。因此我有一个看起来像

的模型

x = A * s

然后我将x放入BSS算法中,得到s',这是对信号向量的重构。

现在这是我遇到很多问题的地方;如何比较 s's,并获得两个向量相似程度的定量测量?我正在研究的算法只能将信号向量重构到负号(因此s'可能类似于-s,或者换一种说法, s' 在“形状”上与 s 相似但被翻转)并且不能保证保持信号的幅度。因此,我想将信号的“形状”相互比较,同时还可以预见,虽然它们的“形状”可能相似,但它们可能会被翻转。

澄清一下,当我说信号时,我的真正意思是一个可能是 50 x 10000 的矩阵(50 个不同的通道,随着时间的推移有 10000 多个数据点)。 BSS 算法产生的另一个问题是不能保证保留通道的顺序。所以给定 s'1, s'2, s'3, ... , s'N,这将是 s' 的不同通道,可能会被重建(再次,可能翻转和不同与 s 中的原始通道相比的幅度),但不能保证保留顺序。所以 s'1 可能与 s23 相关,而 s'2 与 s5 相关,依此类推。

所以我想知道是否有一种快速有效的方法来比较两个不同矩阵之间的相似性,假设这些矩阵由应该相互关联的向量组成,尽管顺序、符号或幅度不同。

解决此问题的最佳方法是什么?感谢您的帮助!

【问题讨论】:

  • 一个快速的想法是比较给定形式的信号,并将它们与其中一个被翻转的信号进行比较,选择两者中最好的结果。作为比较运算符,您可以使用互相关 xcorr

标签: algorithm matlab matrix signal-processing linear-algebra


【解决方案1】:

尝试阅读 Science 最近的论文

检测大型数据集中的新关联 D. Reshef, Y. Reshef, H. Finucane, S. Grossman, G. McVean, P. Turnbaugh, E. Lander、M. Mitzenmacher、P. Sabeti 科学 334、6062 (2011) http://www.uvm.edu/~cmplxsys/newsevents/pdfs/2012/reshef-correlation-science-2011.pdf

可使用 JAVA(在 MATLAB 中)或 R(R 项目)的代码 可从http://www.exploredata.net/Usage-instructions 获得

【讨论】:

    【解决方案2】:

    简单的“贪婪”方法,避免组合爆炸

    对于重构信号 q_i 和地面实况 s_j,让 NxN 矩阵

    M[i,j] = abs(corr(q_i,s_j))

    使用“corr()”,一些相关函数给出 [-1,1] 的结果,例如pearson 矩积 (MATLAB: corrcoef() ) 或 spearman 秩相关。

    步骤 1) 找到(i,j) = argmax(l,m) M[l,m]。这是一对重建的索引 i,j。把它推到一个清单上。这是目前符合条件的最匹配的一对。

    步骤 2) 用 NaN 或其他内容将第 i 行和第 j 列空白。

    第 3 步)如果您还没有完成其中的 N 个,(矩阵并非全部为 NaN)转到第 1 步。

    (等效地,您可以删除行和列,记住原始索引)。

    对于列表中的所有对,平均原始 M[i,j]。这是您使用贪心算法找到的对的平均相关性(绝对值)。

    【讨论】:

    • 抱歉,我不太明白您在第 1 步中在做什么。这是 MATLAB 语法吗? (我对 MATLAB 不是很流利) - 有人可以澄清一下吗?谢谢!
    【解决方案3】:

    如果您不知道哪些渠道是相关的,我假设您想将它们分开并单独比较它们,这就是问题所在。 (我不知道有一种算法可以以某种非常有效的方式完成所有工作——我将只解决比例因子的问题)

    如果涉及任意(非零?)比例因子,您可以取两个向量的点积,然后除以它们的范数的乘积。结果将在[-1,1]范围内,您可以选择绝对值最大的匹配。

    【讨论】:

      【解决方案4】:

      你正遭受组合爆炸的折磨。撇开订购问题不谈:我建议删除基线,然后使用互相关来找到最佳 (s) 和最小 (-s) 相关信号。从而解决了信号的“翻转”。

      许多图像处理库中都提供了二维互相关,可用于快速确定哪些列的排序正确 - 那些具有高 (s) 和低 (-s) 相关性的列。中间的列需要重新排序。

      如果您将矩阵视为图像,则有许多图像处理算法可以测量在各种变换(剪切、比例、...)中不变的两个图像的相似性。但是,您的列混合是一种奇怪的非线性变换,不太适合图像处理范例。

      【讨论】:

      • 鉴于行的顺序和符号混合,我认为 2D 互相关根本不起作用。应该没有相关的结构信息可供使用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-18
      • 1970-01-01
      • 2011-10-16
      相关资源
      最近更新 更多