为什么频率响应会根据我输入滤波器的脉冲幅度而有所不同?

信息处理 无限脉冲响应 冲动反应 高通滤波器 固定点
2022-02-03 20:46:00

我正在研究一个 2 极 IIR 高通滤波器。过滤器是固定点,它给我带来了一些问题。我相信我只是误解了一些东西。我现在在 Octave 中实现所有东西,但最终它将在 32 位处理器中实现。转折频率非常低,2.7 Hz.

当我通过传入一个脉冲然后对输出进行 fft 来测试滤波器时,我会根据脉冲的大小得到不同的结果。

首先,我使用带符号的 64 位整数制作了过滤器,仅用于测试。所以我输入过滤器的冲动看起来像这样:

Fs = 51200; %sample frequency
impulse = int64( [2^31, zeros(1,Fs*10-1)] ); %multiply by 10 to get 0.1 Hz resolution

这是定点脉冲响应与浮点脉冲响应的比较。

小幅度

如果我重新运行代码但脉冲更大,我会得到所需的频率响应。

Fs = 51200; %sample frequency
impulse = int64( [2^63, zeros(1,Fs*10-1)] ); %multiply by 10 to get 0.1 Hz resolution

大振幅脉冲响应

它们匹配得如此紧密,您几乎看不到红色的浮点响应。

  • 为什么仅仅改变输入的幅度会有这种差异?

  • 我需要以 32 位实现它,但是当我这样做时,输入的幅度被限制为231所以我最终得到了失真的脉冲响应。我该如何解决这个问题或解决这个问题?

1个回答

与滤波器系数的分辨率相比,输入信号的幅度越低,它对输入信号频率进行整形的能力就越弱。它还取决于滤波器系数的跨度。

如果您将 32 位系数的滤波器提供给具有仅覆盖低 16 位的幅度的信号,则会得到相同的结果。如果您想解决此效果,您需要放大输入信号。