什么是正确的算法...呃,我不知道它叫什么

时间:2013-02-09 05:13:30

标签: algorithm optimization signal-processing wavelet

假设我有一个长而不规则的数字信号,由不同时间发生的较小但不规则的信号组成(并相互重叠)。我们将这些较短的信号称为构成较大信号的“碎片”。 “不规则”是指它不是特定的频率或模式。

鉴于信号很长,我需要找到能够产生(尽可能接近)较大信号的最佳片段排列。我知道这些碎片是什么样的,但我不知道它们中有多少碎片存在(或者在整个信号中存在多少次)。您将使用什么软件算法来进行此优化?我在网上搜索什么来获得解决此问题的帮助?

1 个答案:

答案 0 :(得分:1)

这是一个刺痛。

这实际上是解卷积问题的更容易。您可以更容易地获得独特的答案。 更难的问题是你也不知道它们是什么样的。这种情况称为盲去卷积。这是一个更难的问题,通常是迭代和统计(ML或MAP),解决方案可能不正确。

幸运的是,你的情况更容易,但仍然不那么容易,因为你有多个部分:p

我认为它通常被称为混合反卷积?

所以让f [t]表示t = 1,... N是你的长信号。设h1 [t] ... hn [t]为t = 0,1,2,... M是你的短信号。显然,这里,N>> M。

所以你的假设是:

(1) f[t] = h1[t+a1[1]]+h1[t+a1[2]] + ...
       +h2[t+a2[1]]+h2[t+a2[2]] + ...
       +....
       +hn[t+an[1]]+h2[t+an[2]] + ...

观察该等式的每一行实际上是hj * uj,其中uj是移位Kronecker delta的总和。 *这里是卷积。

那么现在呢?

让Hj成为hj生成的(可能是根据你看待它的方式转换)Toeplitz matrix,然后上面的等式变为:

 (2) F = H1 U1 + H2 U2 + ... Hn Un

subject to the constraint that uj[k] must be either 0 or 1.  

其中F是向量[f [0],... F [N]],Uj是向量[uj [0],... uj [N]]。

所以你可以把它重写为:

 (3) F = H * U 

其中H = [H1 ... Hn](水平连接),U = [U1; ...; Un](垂直连接)。

H是Nx(nN)矩阵。 U是nN向量。

好的,所以解决方案空间是有限的。它的大小为2 ^(nN)。因此,您可以尝试所有可能的组合,看看哪一个给你最低|| F - H * U ||,但这将花费太长时间。

你可以做的是使用pseudo-inverse求解方程式(3),多元线性回归(使用最小二乘法,这是伪逆的),或类似的东西

Is it possible to solve a non-square under/over constrained matrix using Accelerate/LAPACK?

然后在H的零空间内移动该解决方案以获得受uj [k]必须为0或1的约束的解决方案。

或者,您可以使用Nelder-MeadLevenberg-Marquardt之类的内容来查找最低值:

  ||F - H U|| + lambda g(U)

其中g是正则化函数,定义为:

   g(U) = ||U - U*||

其中U * [j] = 0如果| U [j] |< | U [j] -1 |,否则1

好的,所以我不知道这是否会收敛。如果没有,你必须提出自己的正规化器。当你有一组线性方程时,使用广义非线性优化器是有点蠢。

实际上,你会有噪音而不是,所以使用像MAP这样的东西实际上并不是一个坏主意,并将小块应用为先验。