我正在寻找一种算法来测量离散信号 $s[t]$ 的衰减。从信号序列的开头开始,是否可以计算滑动 DFT 或 Gabor 变换窗口并使用幅度和相位信息来计算衰减系数?这种算法有参考资料吗?我想知道类似的算法是否已应用于音乐 DSP。
是否为频域信号的实部和复部计算了单独的衰减系数?
以下是一些进一步的细节:
- 对于每个窗口,我想计算信号的衰减。因此,对于每个 $\tau$,其中 $\tau$ 是窗口的中心,我得到了窗口宽度上的衰减估计值。当窗口在信号 $s[t]$ 上移动时,我得到衰减 $\alpha[\tau]$ 的估计值作为窗口中心的函数。
- 滑动 DFT 用于计算效率(链接),我认为使用滑动 DFT 可能还有其他好处。我应该在时域中应用布莱克曼/汉宁窗吗?或者也许 Gabor 变换就足够了。
- $s[t]$ 被认为包含一个感兴趣的信号。
- 衰减系数可以用实部和复部来表示,并且可以以dB为单位报告。这是一个等式:
$A = A_0 \exp[\frac{{ - \omega \tau }}{{2\alpha }}]$
$A$是$\tau_k$时刻的幅度和相位,$A_0$是一些参考幅度和相位,$\alpha$是衰减系数,$\tau$是窗口中心的时间,$ \omega$ 是角频率。
如何定义参考幅度和相位 $A_0$?也许 $A_0$ 会在信号的开头定义。或者也许 $A_0$ 会在每个窗口的开头定义?此外,如何处理信号频谱中的尖峰?也许某种平滑算法在这里会有所帮助?
此外,也许衰减可以使用信号包络检测器来确定?我该如何设置?
更新
我认为这个问题可能与分离两个加在一起的信号有关。我们不知道参考幅度$A_0$,它可能会随着时间而改变。拿:
$A[\tau, \omega] = A_0[\tau, \omega]\exp[\frac{{ - \omega \tau }}{{2\alpha }}]$
$\log(A[\tau, \omega]) = \log(A_0[\tau, \omega]) + [\frac{{ - \omega \tau }}{{2\alpha }}]$
以下是一些假设:
- $A_0[\tau, \omega]$ 是未知的,但可以假设它与 $[\frac{{ - \omega \tau }}{{2\alpha }}]$ 不相关。$A_0[\tau, \omega]$ 的带宽不同于 $[\frac{{ - \omega \tau }}{{2\alpha }}]$ 的带宽。(我认为这是合理的。) $[\frac{{ - \omega \tau }}{{2\alpha }}]$ 表达式的带宽是已知的。
- 对于每个 $\tau$,$\alpha$ 是常数。
- $A[\tau, \omega]$ 使用短时傅里叶变换或 Gabor 变换计算。
- $A[\tau, \omega]$ 和 $A_0[\tau, \omega]$ 的包络不是恒定的。然而,$\exp[\frac{{ - \omega \tau }}{{2\alpha }}]$ 只是一个方程。那么我可以将 $A_0$ 视为简单的“噪音”或其他东西吗?
- $A_0[\tau, \omega]$ 和 $A[\tau, \omega]$ 是复数。衰减$\alpha$ 是一个实数。
有人可以帮我建立数学(即矩阵方程吗?)或将我指向正确的方向来一类算法? 我认为这个问题与分离两个信号非常相似。
也许这可以使用卡尔曼滤波器来完成,其中 $\log(A_0[\tau, \omega])$ 被视为“噪声”,而 $[\frac{{ - \omega \tau }}{{2\ alpha }}]$ 术语被视为信号。这是合理的吗?关于这个过滤器的实现是否有很好的参考?也许另一个过滤器会更合适?
操作的输出将是衰减相对于时间的图表,如下所示。我还展示了添加两个信号的 Gabor 变换操作。
更新
为了进一步探索这个问题,我选择了一个测试信号并编写了一个程序,使用一个模拟我想要确定的衰减的内核对测试信号进行前向滤波。我使用声纳和声学传感系统,因此选择此信号表明我正在使用什么。
这是时域中的测试信号图。这是一个没有衰减的信号:
这是没有衰减的信号的 Gabor 变换(频谱图):
这是我应用滤波器模拟衰减后的测试信号图。这是一个具有恒定衰减的信号,使得 $\alpha(\tau) = 55$:
这是带有衰减的信号的 Gabor 变换(频谱图)。请注意频谱图中的指数衰减:
看前向滤波器内核的绝对值,指数衰减非常明显。注意一些频率比其他频率衰减得更多。前向滤波器内核具有实数和复数部分。下图只是前向滤波器内核的绝对值。滤波器内核的数值越高(接近 1.0),衰减越小。滤波器内核的数值越低(接近 0),衰减越多。
以下是通过与原始 Gabor 变换信号相乘应用的滤波器内核 $k(\tau, \omega)$ 的数学形式:
$k(\tau ,\omega ) = \frac{1}{{\Lambda (\tau ,\omega )}}\exp \left[ {i\int\limits_0^\tau {{{\left( {\ frac{\omega }{{{\omega _h}}}} \right)}^{\frac{1}{{\pi \alpha (\tau ')}}}}\omega d\tau '} } \对]$
$\Lambda (\tau ,\omega ) = \frac{{\beta (\tau ,\omega ) + {\sigma ^2}}}{{{\beta ^2}(\tau ,\omega ) + { \sigma ^2}}}$
$\beta (\tau ,\omega ) = \exp \left[ { - \int\limits_0^\tau {\frac{\omega }{{2\alpha (\tau ')}}{{\left( { \frac{\omega }{{{\omega _h}}}} \right)}^{\frac{{ - 1}}{{\pi \alpha (\tau ')}}}}d\tau '} } \右]$
在上面,$\omega、\omega_h、\sigma、\tau$ 都是已知的,为简单起见,我设置了整个信号的衰减 $\alpha(\tau) = 55$。
我想找到衰减 $\alpha(\tau)$ 作为时间 $\tau$ 的函数,但 $\alpha(\tau)$ 不必是恒定的,并且可以在 $\tau$ 上变化。
我认为滤波器内核是“平滑的”,而原始信号不是。
有没有办法确定衰减 $\alpha(\tau)$,即使是不精确的方式?
在这里,我对随时间变化的 $\alpha(\tau)$ 重复相同的实验。这是我期望 $\alpha(\tau, \omega)$ 的模型(但曲线也可以是具有负斜率的线性,或者完全是其他东西):
为了说明起见,这里又是原始的(未过滤的)轨迹。这是一个没有衰减的信号:
这是一个带有衰减的信号,其中 $\alpha(\tau)$ 随时间变化:
这是过滤器内核的绝对值,其中 $\alpha(\tau)$ 随时间变化。请注意,这里仍然存在指数衰减:
另一种观点
现在我意识到 Gabor 变换域中的前向滤波器由下式给出:
$A(\tau, \omega) = A_0(\tau, \omega)k(\tau, \omega)$
所以衰减轨迹是$A(\tau, \omega)$,$A_0(\tau, \omega)$是非衰减轨迹,$k(\tau, \omega)$是滤波器核。给定$A(\tau, \omega)$,而不是$A_0(\tau, \omega)$,我想估计$\alpha(\tau)$,即随时间的衰减函数。在这种情况下,我知道过滤器内核 $k(\tau, \omega)$ 的数值形式,但我不知道 $\alpha(\tau)$。这就是为什么我想知道卡尔曼滤波是否有利于在这类问题中使用。也许 $A_0(\tau, \omega)$ 可以被视为与内核 $k(\tau, \omega)$ 不相关的噪声。
看着衰减的频谱图,我想起了图像“去模糊”算法。由于内核是“平滑的”而原始信号 $A_0(\tau, \omega)$ 不是,因此可能以某种方式将 $A_0(\tau, \omega)$ 从内核 $k(\tau ,\omega)$ 使用某种算法。
如果我可以将$A_0(\tau, \omega)$ 与内核$k(\tau,\omega)$ 分开,那么我认为可以估计$\alpha(\tau)$。
更新
这是实际数据的频谱图。上面的数据集是合成的,而这个频谱图是从实际实验中收集的。