【发布时间】: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