假设我已经对一些信号进行了采样,并为每个信号构建了一个样本向量。计算这些向量的(不)相似度的最有效方法是什么?请注意,采样的偏移量不得计算在内,例如 sin 和 cos 信号的采样向量应该被认为是相似的,因为它们在顺序上是完全相同的。
有一种简单的方法是通过“滚动”另一个向量的单位,计算每个滚动点的欧几里得距离并最终选择最佳匹配(最小距离)。这个解决方案工作得很好,因为我唯一的目标是从向量池中找到输入信号最相似的样本向量。
但是,当向量的维数增长时,上述解决方案也非常低效。与 N 维向量的“非序列向量匹配”相比,序列向量的计算距离要多 N 倍。
是否有任何更高/更好的数学/算法来比较具有不同偏移量的两个序列?
用例是使用 SOM 进行序列相似性可视化。
编辑:比较每个向量的积分和熵怎么样?它们都是“序列安全的”(= 时不变的?)并且计算速度非常快,但我怀疑它们本身是否足以区分所有可能的信号。除了这些,还有其他东西可以使用吗?
EDIT2: Victor Zamanian 的回复不是直接的答案,但它给了我一个可能的想法。解决方案可能是通过计算它们的傅里叶变换系数并将它们插入到样本向量中来对原始信号进行采样。第一个元素 (X_0) 是信号的平均值或“水平”,随后的 (X_n) 可直接用于比较与其他样本向量的相似性。n 越小,它对相似性计算的影响就越大,因为用 FT 计算的系数越多,FT 信号的表示就越准确。这带来了一个额外的问题:
假设我们有 FT-6 采样向量(值刚刚从天而降)
- X = {4, 15, 10, 8, 11, 7}
- Y = {4, 16, 9, 15, 62, 7}
这些向量的相似度值可以这样计算:|16-15| + (|10 - 9| / 2 ) + (|8 - 15| / 3 ) + (|11-62| / 4 ) + (|7-7| / 5 )
那些加粗的是奖金问题。是否有一些系数/其他方式可以知道每个 FT 系数对与其他系数的相似性有多大影响?