2009-12-09 87 views
1

我试图实现一个盲源分离(BSS)算法,我遇到了麻烦,确定算法的功效。如何获得两个信号的定量比较

我试图创建测试用例其中I向后工作和与信号矢量小号,这通常是未知的启动,然后创建一个混合矩阵,我使用小号转换到创建观察向量x,这是通常由感官设备等东西观察到的。因此,我有一个模型,看起来像

x = A * s

然后我将x放入BSS算法中,得到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等等相关,等等。

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

什么是解决这个问题的最好方法?感谢帮助!

+0

一个快想法我以比较它们给定形式的信号,并将它们与其中一个被翻转的信号进行比较,从中选出最好的结果。作为比较运算符,您可以使用互相关** xcorr ** – Amro 2009-12-09 00:52:37

回答

0

您正在遭受组合爆炸。排序问题放在一边:我建议去除基线,然后使用交叉相关来找到最佳(s)和最小(-s)相关信号。信号的“翻转”因此得到解决。

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

如果您将矩阵视为图像,有许多图像处理算法可以测量两幅图像在各种变换(剪切,缩放等)上不变的相似性。然而,列混合是一种奇怪的非线性变换,它不适合图像处理范例。

+0

根据行的顺序和符号的混合情况,我认为2D互相关不会起作用。应该没有相关的结构信息可供使用。 – 2009-12-09 08:11:21

1

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

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

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

与 “科尔()” 的一些相关函数给予导致[-1,1],例如皮尔森矩产品(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]。这是您用贪婪算法找到的对的平均相关性(绝对值)。

+0

对不起,但我不太明白你在第一步做什么。这是MATLAB的语法? (我在MATLAB中不那么流利) - 有人可以澄清吗?谢谢! – oort 2009-12-11 23:11:21

0

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

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