希尔伯特滤波器
希尔伯特滤波器是一个线性电子(或数字)滤波器,对输入信号的所有频率执行90°相移而不改变其幅度。 从我们在其他示例中考虑的大多数滤波器中,我们要求频率选择性**,即在某些频带中放大或衰减信号,而希尔伯特滤波器应该表现得像理想的移相器。
主要概念:
*希尔伯特滤波器的输出是输入信号的希尔伯特变换
*希尔伯特滤波器在任何频率下都不会改变信号的振幅(理想情况)
*具有近似特性的FIR或BIH滤波器用于实现。
*原始信号及其希尔伯特变换的组合使得可以获得**解析信号-**由原始实信号和正交作为虚部组成的复信号
希尔伯特滤波器广泛用于DSP任务,但在我们的示例中,我们将特别考虑它用于隔离周期性离散信号的包络。
希尔伯特滤波器的原型
我们使用该方法合成所需滤波器的系数 remez. 我们的原型将有65个样品的长度。 让我们显示脉冲响应(即矢量样本 Num):
using DSP
myHBT = remez(65, [(0.05, 0.95) => 1]; Hz = 2, neg=true);
Num = reverse(myHBT);
plot(Num, line=:stem, marker=:circle, linewidth = 2, legend = false, 
    title = "Импульсная характеристика фильтра Гильберта")
我们看到系数的反向对称性,以及样本中的交替零-对于具有奇数样本的希尔伯特滤波器来说,这是一种典型的特征类型。
现在让我们计算并显示滤波器的频率响应和频率响应。 我们计划将其用于采样频率为5000Hz的信号。:
myfilt = PolynomialRatio(Num,1);
H, w = freqresp(myfilt);
freq_vec = 5000*w/(2*pi);
plot(freq_vec, pow2db.(abs.(H))*2, linewidth=3,
     xlabel = "Частота, Гц", legend = false,
     ylabel = "Амплитуда, дБ",
     title = "АЧХ фильтра Гильберта",
     ylim=(-30,5))
phi, w = phaseresp(myfilt);
plot(freq_vec, rad2deg.(phi), linewidth = 3, 
    xlabel = "Частота, Гц", legend = false,
    ylabel = "Фаза, град",
    title = "ФЧХ фильтра Гильберта")
频率响应在很宽的频率范围内是线性的,频率响应也不会扭曲幅度,几乎复盖整个第一奈奎斯特区(从0到2500Hz)。 然而,在接近上限或下限时,滤波器将无法有效地工作,这一点我们将在动态模型中的模拟中注意到。
希尔伯特滤波器模型
考虑动态模型 Hilbert_filter.engee:
 
它包含:
*具有载波频率选择的幅度调制正弦信号源单元(调制频率始终为10Hz)
*具有原型希尔伯特滤波器的系数的FIR滤波器块 Num
*补偿延迟线32计数(ntaps-1/2)
*用于从实部和虚部的信号产生复信号的块
*计算复数模数的单位
使用默认模型参数进行仿真
通过运行模型,您可以在图形窗口中观察波形。 real, imag 和 mag. 后者负责计算分析信号的包络。 载波频率为200Hz时,信号如下所示:
 
我们可以观察到正交分量的形成(相对于原始实际信号具有90度移位),以及分析信号模块的平滑形状,即包络。
通过下面的图表窗口滚动,您可以看到频率域中实际信号和分析信号的比较。:
 
实际信号峰值频率为-210Hz、-190Hz、190Hz和210Hz。 注意希尔伯特滤波器对分析信号的负频率范围的有效抑制。
改变信号源的频率
模型中的信号源允许您使用带有下拉列表的掩码快速更改载波频率:
 
如果将值更改为100Hz并运行仿真,则可以确保在接近FIR滤波器带宽下限时,包络的形状开始扭曲。:
 
如果需要扩展有效带宽,则将不得不增加滤波器阶数。
频率范围中,也能够观察到对分析信号的负频率的不太有效的抑制。:
 
那么,对于具有500Hz载波的信号,不会有这样的失真,因为它处于频率响应区域,不会扭曲幅度。
结论
我们研究了一个分析原型希尔伯特滤波器的例子,以及一个基于FIR实现的动态模型,一个在有限频带内工作的近似值。