如何通过与希尔伯特核卷积找到离散信号的希尔伯特变换(正交)?

信息处理 过滤器 离散信号 卷积 希尔伯特变换
2022-02-20 03:17:25

给定一个离散实信号,(复)解析信号由下式给出:fre(t)

x(t)=fre(t)+jfim(t)

我想计算通过与大小为 2*n+1 的希尔伯特核卷积得到的求积:fim(t)

fim(t)=Hfre(t)

H=[Hn,Hn+1,..,H0,Hn1,Hn]

根据“复杂地震轨迹分析”,MT Taner*、F. Koehler* 和 RE Sheriff; H_i = 2*sin^2(\pi i/2)/(\pi i),对于Hi=2sin2(πi/2)/(πi),H0=0n=

我想使用有限长度的内核,例如 n=16。我需要用一个窗口从上面的等式中逐渐减少内核吗?

如何标准化奇数(反对称)结果内核?

我是否正确假设通过与 H 卷积计算求积会引入平滑?

如果是这样的话; 我是否也应该平滑真实信号,例如通过大小为 2n+1 的高斯核?

编辑:在 Matlab 中有一个名为“firpm”的函数,它创建一个“Parks-McClellan 最优等波纹 FIR 滤波器”。

似乎这通常被认为是 IIR 的“最佳”FIR 近似值?

这是否意味着使用“复杂地震道分析”中的简单系数方程过于简单?

EDIT2:关于归一化:我在 Matlab 中进行了测试,发现在输入信号为正弦的情况下,与从简单系数方程计算的内核进行卷积会产生良好的结果。但是我必须除以一个因子 m 才能得到正确的归一化:

H5 = [-0.0000   -0.6366  0    0.6366    0.0000]: m = 0.1271
H7 = [-0.2122 -0.0000 -0.6366  0  0.6366 0.0000 0.2122]: m=0.2525 

m的一般公式是什么?

编辑 3:理想的内核将具有恒定的幅度响应。但是似乎因为我的内核的大小是有限的;它将充当带通滤波器,因此我需要注意带通纹波。解决方案似乎是在低频和高频处轻轻滚动的幅度响应。“简单系数方程”在这方面做得相当不错;它不会引入很多波纹,而是内核越短,它开始滚动的时间就越早。例如,这里是 19 点内核: 19点核的幅值响应来自“简单系数方程”

相比之下,来自 Matlabs firpm 的 19 点内核不会在高频下滚动(!?),但其他方面的纹波量与我的简单内核大致相同: firpm 的 19 点内核的幅度响应

到目前为止,我的结论似乎是:没有“简单系数方程”可以很好地近似希尔伯特卷积算子的最佳 FIR。“Parks-McClellan 最优等波纹 FIR 滤波器”可能稍微更“最优”,但差异可以忽略不计,至少对于相当大的内核(比如 19 点及以上)。有什么我忘记了吗?因此,我将继续采用这种方法。唯一剩下的问题:我如何规范化?

2个回答

简短的回答:使用有限卷积,您无法准确计算希尔伯特变换。

长答案:您将不得不做出近似并决定您可以忍受的错误类型和数量。这将在很大程度上取决于应用程序、信号本身以及您尝试对结果执行的操作。本文可能会对数学和潜在的权衡提供很好的指导http://www.andrewduncan.ws/air/index.html

本质上,希尔伯特变换不是平滑操作。例如,余弦的 HT 是正弦,不会更平滑。

这里有一个很好的希尔伯特变换应用到离散信号上的实现。

https://stackoverflow.com/questions/10693590/source-for-a-good-simple-soft-modem-library

该代码首先在频域中生成希尔伯特变换。要将希尔伯特变换应用于频率空间中的信号,您所要做的就是将负频率乘以 -j,将正频率乘以 j。

然后它使用 idft 将希尔伯特变换转换为时域。希尔伯特变换,在频域中只是一个乘法,在时域中变成了卷积。请注意,在该实现中,在频域中,hiltbert 变换将一些系数设置为零,它对我们不感兴趣的频率执行此操作。这有助于过滤掉那些不需要的频率。