假设我有一个长而不规则的数字信号,由在不同时间出现的较小但不规则的信号组成(并且相互重叠)。我们将这些较短的信号称为构成较大信号的“片段”。我说的“不规则”是指它不是一个特定的频率或模式。
考虑到长信号,我需要找到产生(尽可能接近)较大信号的工件的最佳排列。我知道这些碎片是什么样的,但我不知道它们中有多少个存在于完整的信号中(或者在一个完整的信号中存在多少个片段)。你会用什么软件算法来做这个优化我在网络上搜索什么来获得解决此问题的帮助?

最佳答案

这里有一个刺。
这实际上是反褶积问题中比较容易的。更容易的是,你可能会有一个独特的答案更难的问题是你也不知道这些碎片是什么样子的。这种情况称为盲反褶积。这是一个比较困难的问题,通常是迭代和统计的(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]好吧,我不知道这会不会收敛。如果没有,你就得想出自己的规则。当你有一组线性方程时,使用广义非线性优化器有点傻。
在现实中,你会有噪音,而不是什么,所以实际上使用MAP这样的东西并像以前一样应用这些小片段并不是一个坏主意。

08-24 22:05