【问题标题】:what is the right algorithm for ... eh, I don't know what it's called什么是正确的算法......呃,我不知道它叫什么
【发布时间】:2013-01-24 23:10:04
【问题描述】:

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

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

【问题讨论】:

  • 你能举几个例子吗?不太明白这个主意。对不起。
  • 您可能会在信号处理堆栈交换中获得更多响应:dsp.stackexchange.com
  • 这听起来与independent components analysis密切相关。
  • 如果您收到长信号..您可以分析一下,看看我们的第一件、第二件等是否正确?
  • 可能是Variable Resolution Analysis?

标签: algorithm optimization signal-processing wavelet


【解决方案1】:

这是一个尝试。

这实际上是反卷积问题中的更简单。它更容易,因为您可能能够有一个独特的答案。 更难的问题是你也不知道这些碎片是什么样子的。这种情况称为盲反卷积。这是一个更难的问题,通常是迭代和统计的(ML 或 MAP),解决方案可能不正确。

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

我觉得可能就是俗称的混合反卷积吧?

所以让 f[t] for t=1,...N 成为您的长信号。让 h1[t]...hn[t] for 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(可能看你怎么看)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 之类的东西并像以前一样应用小块实际上可能不是一个坏主意。

【讨论】:

  • 感谢您的回复!我有几个问题。 h1[t+a1[1]] 你让我有点失望。似乎 a1 是指f 的(负)偏移量数组?那么如果t + a1[1] 在 h1 中超出范围,它会变成无操作/零?是否需要在 h1 索引器中包含 t ?当您重用 t 作为片段的索引器时,我有点困惑。
  • @Brannon, hj[t+aj[k]] 只是 hj 在时间上的转换版本。因为这就是 f 的生成方式(根据您的描述)......小块的移位版本的总和。在下一步中,我将 aj 作为脉冲序列取出,并将其表示为 hj*uj,其中 uj 是一系列克罗内克三角洲(可能是稀疏的,但不一定)。需要此步骤才能将您的问题转化为更规范的反卷积...aj[k] 是一个参数,因此您可以将其限制为不超出范围。
  • @Brannon,t 也是必要的,否则它不会是 hj 的转换版本。
猜你喜欢
  • 2012-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
  • 2019-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多