【问题标题】:Why can't my genetic algorithm design anything more than a low pass filter?为什么我的遗传算法只能设计一个低通滤波器?
【发布时间】:2023-01-17 05:40:07
【问题描述】:

我正在开发一种遗传算法来设计一个与吉他放大器频率响应相匹配的 IIR 滤波器。该算法适用于低通滤波器,但它无法设计衰减低频的滤波器。

这是它产生的滤波器频率响应的一个示例:

Frequency response

它在高频上的收敛非常好,但低频响应一如既往地平坦。如果它是我正在建模的低通,则该算法可以完美运行。 它可以与我的搜索空间定义相关吗?我已将系数的限制设置为: 0<k<1; -2<b1<2; 0<b2<1; -2<a1<2; 0<a2<1

系数等同于此表达式中的系数: Transfer function expression

【问题讨论】:

  • 它在 4000Hz 到 16000Hz 范围内非常准确。这是大部分频率范围......如果您使用线性而不是对数频率轴。您的健身功能是否知道您正在使用对数频率轴?

标签: filter signal-processing genetic-algorithm


【解决方案1】:

您指定的传递函数是双二次滤波器。您使用的系数都是真实的。由于系数是实数,零点(b1 和 b2)和极点(a1 和 a2)都位于 0 Hz。由于您在 DC 处有零点和极点,因此您只能生成低通滤波器,但是您可以生成非常宽(根据您的图像)或非常锐利的低通滤波器。要指定带通滤波器(或陷波带通滤波器),您需要能够将极点和零点移离实轴,我将在这个答案中告诉您如何做到这一点。

为清楚起见,这里是具有总系统增益 (k) 和根 b_1、b_2、a_1 和 a_2 的双二次滤波器。分子根是零点,分母根是极点:

h = k (1 + b_1 z^-1) (1 + b_2 z^-1)
      -----------------------------
      (1 + a_1 z^-1) (1 + a_2 z^-1)

根据定义,零点和极点都位于 0 Hz(在实轴上)的 IIR 滤波器是低通滤波器或高通滤波器,但不能是带通滤波器。这样做的原因是极点可以调谐到 DC(实极点 > 0)或奈奎斯特频率(实极点 < 0)。

为了生成任意双二次滤波器,您应该允许您的极点和零点是实数或复数共轭。对于带通滤波器,您将需要使用复数共轭极点和复数共轭零点,以便能够在一定程度上去除带通特性。在复共轭情况下,过滤器指定如下:

  • a1 = conj(a2) = a exp(+- j w_a)
  • b1 = conj(b2) = b exp(+- j w_b)

其中 j 是 -1 的平方根,根的振幅是 a 和 b,对于稳定性 b<1。极点和零点所在的频率为 0 < w < pi。当然,当 w=0 或 w=pi 时,您将生成真实的极点或零点,这是您之前的有限版本,并且这些极点无法生成带通性质的滤波器。

您的系统增益 (k) 是任意的,可以根据您的需要进行缩放。

【讨论】:

    猜你喜欢
    • 2015-01-03
    • 2014-07-06
    • 2021-03-08
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2013-08-17
    • 2010-09-07
    • 2017-09-10
    相关资源
    最近更新 更多