预加重/去加重滤波器设计

信息处理 过滤器设计 无限脉冲响应
2022-02-03 10:44:37

我设计了一个简单的 FM 通信系统,发现高频噪声是一个真正的问题。看来这是一个众所周知的问题,已通过在发射器处预加重高频并在接收器处去加重来解决。

标准预加重滤波器似乎具有以下形式:

Hpe(f)=1+j2πfτx,where τ=75E6

去加重滤波器只是它的倒数,或者

Hde(f)=11+j2πfτx.

恐怕我不是一个 IIR 滤波器设计者,但从我的研究来看,去加重滤波器是一个相对简单的积分器,我可以使用脉冲不变方法。另一方面,预加重滤波器看起来更硬一些。我应该使用双线性变换方法吗?当我尝试bilinear在 MATLAB 中使用该命令时,它会抱怨,大概是因为没有极点。

任何提示或提示将不胜感激。

编辑:我使用的 MATLAB 命令是:

[z, p, k] = bilinear([j*2*pi*75e-6], [], 1, 20e3);

MATLAB(使用版本 R2011b)返回:

Error using bilinear (line 100)
First two arguments must have the same orientation.
1个回答

您真的可以使用任何您想要的滤波器设计方案。我想不出您需要专门使用 IIR 方法的任何原因,因此您有多种选择。对于 FIR 滤波器,您可以选择频率采样和最小二乘法(查看fir2firls在 MATLAB 中)。

对于 IIR 实现,您应该能够直接使用双线性变换;由于您引用的滤波器是简单的单极点和单零点 em,因此手动计算可能同样容易。要记住的一件事是,您需要首先对频率轴进行预扭曲,以确保您在感兴趣的通带上获得良好的近似值。提供从 MATLAB 获得的任何错误可能对您有所帮助;缺少极点应该不是问题。

编辑:一些事情来解决您的评论:

  • 我不会说firls,作为基于最小二乘的方法,是平滑曲线的逐步逼近。是的,您为最小二乘算法提供了许多所需响应的样本,但您仍然应该得到一条平滑的曲线。

  • 我开始计算将双线性变换应用于预加重滤波器的数学运算并遇到了一个问题。其频率响应为: 注意对于频率响应 : 双线性变换将轴映射到离散时间近似的平面的单位圆。因此,我们应该关注传递函数会发生什么,因为允许注意:

    Hpe(f)=1+j2πfτx
    Hpe(f)s=jω=j2πf
    Hpe(s)=1+sτx
    jωszs
    limsHpe(s)=
    这意味着,对于双线性变换生成的离散时间近似,作为角频率,离散时间滤波器的幅度响应将爆炸到,这可能不是你想要的.ω±π

    对于传递函数的分子比分母大的任何模拟系统,这个问题都会出现。因此,MATLAB 发出以下错误可能是合理的:

    >> [num, den] = bilinear([75e-6 1], 1, 100e3);
    Error using bilinear (line 69)
    Numerator cannot be higher order than denominator.
    

    (请注意,在您的示例中,您为分母传递了一个空向量;相反,您应该传递1,因为传递函数的分母是统一的)

事实证明,我不知道有任何模拟映射技术肯定适用于您的应用程序。我不相信脉冲不变方法会起作用,因为预加重滤波器没有带宽限制。您可以使用其中一种 FIR 设计方法,一种 IIR 最小二乘技术(例如 Berchin 的频域最小二乘 (FDLS) 算法),或者查看我不熟悉的匹配 Z 变换方法。