如何为自相关的反卷积选择相位?

信息处理 傅里叶变换 自相关 反卷积
2022-01-28 10:12:41

假设我有一个函数,其傅立叶变换由表示,即,其中是一些复值基函数。C=C(x)c=c(k)C(x)=k=c(k)χ(x)χ(x)

我知道自相关由,其中并且通过卷积定理我知道这意味着知道自相关系数会立即给我原始系数的平方幅度。这意味着任何两个仅通过平移不同的函数将拥有相同的自相关,所以如果我试图M(Δx)=k=m(k)χ(Δx)Δx=x2x1m(k)=(c(k))c(k)C(x)=C(xx)M(Δx)c(k)m(k)选择任意相位但是,我认为我不能为每个的相位,似乎需要某种方法来一致地为所有选择相位(这对应于指定翻译对于 )。c(k)c(k)kkC(x)

我的问题是:如何为原始函数的每个系数(即所有 )选择一致的相位?k

2个回答

对于实值信号,自相关函数是实值偶函数,功率谱密度的傅里叶变换)是实值非负偶函数。现在,其中的傅里叶变换,正如您正确断言的那样,但仅给出而没有关于(或)的其他信息,这是不可能的完全确定注意等于CMmMm(k)=c(k)c(k)cCmcCcm(k) [c(k)ejθk][c(k)ejθk]=c(k)c(k)ejθkejθk的任意选择的傅里叶逆变换 也是一个实值信号,如果我们小心保持共轭对称性以便我们选择作为换句话说,有无数个完全不同的信号共享相同的自相关函数,而且并非 只有及其延时版本具有自相关函数θkc(k)ejθkθkθkCM. 例如,所有 PN 信号,即从最大长度线性反馈移位寄存器 (LFSR) 生成的脉冲序列,具有反向图钉自相关,并且不同的 PN 信号(来自不同的 LFSR)甚至是两级信号,具有反向图钉自相关的无限多个实信号不共享的属性。

正如接受的答案中所述,这通常是不可能的。

然而,考虑到其自相关,可以重构原始信号的条件不需要非常严格。如果要重构的信号在某些基础上是稀疏的,从而约束比大于一个,则可以使用某些相位检索算法来重构信号,除了某些对称性(偏移、反转)。

在最简单的情况下,假设信号的范围 a 小于每个方向上自相关函数范围的 1/2。最简单的重建算法是傅里叶幅度约束和已知范围之间的迭代投影。这种方法称为错误减少从随机相位和自相关信号的傅立叶变换给出的幅度开始,该信号被逆傅立叶变换。然后在信号的已知范围之外的所有内容,支持, 被强加,外面的一切都被设置为零。然后对该近似值进行傅里叶变换,并将信号的幅度设置为自相关信号的已知幅度。该算法最终会收敛并产生一个概率大于 0 的信号估计,因此通常会运行多次以生成一组可能的解决方案,从中选择最佳解决方案。

import numpy as np
import matplotlib
import matplotlib.pyplot as plt

n    = 256
mask = np.arange(n)<16
orig = np.random.rand()*mask
data = abs(np.fft.fft(orig))
recon= np.random.rand(n)
for i in range(4096):
  recon =np.fft.fft(b)
  recon =np.where(abs(recon)<1e-60,1e-60,recon)
  recon*=data/abs(recon)
  recon =mask*np.fft.ifft(recon)
plt.plot(orig)
plt.plot(recon)
plt.show()