delphi 我的双二阶滤波器实现不稳定

aij0ehis  于 2023-08-04  发布在  其他
关注(0)|答案(1)|浏览(103)

我试图在音频范围内使用直接2转置配置实现双二阶峰值滤波器。我相信我的“a”和“b”参数是正确的,因为它们对应于EarLevel Engineering Biquad Calculator v3(https://www.earlevel.com/main/2021/09/02/biquad-calculator-v3/)生成的参数。下面是我处理差分方程的代码(请忽略FType 1和3)。SignalIn是440 Hz正弦波。计算使用Double数据类型。

function TFrmFilters.Filter(SignalIn: double; FType: integer): double;
begin
  case FType of
    1:                             // AllPass (no filter)
      Result := SignalIn;
    2:                             // Biquad Peak
    begin
      Yn := SignalIn + S1n_1;
      S1n := S2n_1 + b1 * SignalIn - a1 * Yn;
      S2n := b2 * SignalIn - a2 * Yn;
      S1n_1 := S1n;
      S2n_1 := S2n;
      Result := Yn;
    end;
    3:                             // Resonator  (not implemented)
      Result := SignalIn;
  end;
end;

字符串
滤波器在宽范围的增益、Q和SignalIn频率上表现出不稳定性。我对差分方程的处理似乎有问题。

iq0todco

iq0todco1#

我无意中交换了'a'和'B'参数。这似乎是网上一些食谱过滤器解决方案的情况。
我很抱歉在做足够的研究之前提交一个问题。

相关问题