You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

firwin2与freqz的滤波器增益符号问题技术求助

带符号增益的FIR滤波器频响分析问题

问题背景

使用scipy.signal.firwin2设计数字FIR滤波器后,freqz返回的频响结果为复数形式。需要获取包含负增益(如设计目标中0.5到1.0区间的负增益)的实际增益,但np.abs()只能返回非负幅度值,无法体现符号信息。同时,相位曲线在±π间跳变,解卷绕(unwrap)后在增益符号变化处出现π跳变,需科学方法提取带符号增益并理解这些相位跳变的含义。

解决方案:提取带符号实值增益

firwin2默认设计线性相位FIR滤波器,其频率响应具有固定形式:

H(e^jω) = A(ω) · e^(-j·(N-1)ω/2)

其中:

  • N是滤波器抽头总数(示例中为31)
  • A(ω)就是需要的带符号实值增益(可正可负,对应设计目标的增益符号)
  • 指数部分为线性相位项,仅引入随频率线性变化的相位偏移,不影响增益的符号与绝对值

基于此特性,可通过以下计算还原A(ω):

N = len(taps)
signed_gain = np.real(h * np.exp(1j * (N-1)/2 * w))

该方法直接利用线性相位特性,无需手动检测相位跳变,即可准确获取包含符号信息的增益。

相位跳变的解释

  1. 符号变化对应的π跳变:当A(ω)由正变负(或负变正)时,等价于给频响乘以-1,对应相位增加/减少π。解卷绕后,这种跳变表现为相位曲线的π阶跃,本质是增益符号翻转的直接体现。
  2. f=1.0处的复合跳变:示例中归一化频率1.0对应ω=π,线性相位项为-(N-1)π/2 = -15π。unwrap函数会将超出±π范围的相位调整为连续值(-15π被调整为π,因-15π + 16π = π),同时增益符号变化带来额外π跳变,因此呈现为+2π与-π的组合,本质是线性相位的周期性调整与符号翻转的叠加结果。

修改后的演示代码

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import pylab as plt
import numpy as np
import scipy.signal as scs

def design_filter(f, g):
    taps = scs.firwin2(31, f, g)
    w, h = scs.freqz(taps)
    return w, h, taps


def plot(w, h, taps):
    N = len(taps)
    # 计算带符号的实值增益
    signed_gain = np.real(h * np.exp(1j * (N-1)/2 * w))

    plt.subplot(2, 1, 1)
    plt.plot(w, np.abs(h), label='绝对值增益')
    plt.plot(w, signed_gain, label='带符号增益')
    plt.ylabel('增益')
    plt.grid(True)
    plt.legend()

    plt.subplot(2, 1, 2)
    plt.plot(w, np.angle(h), label='原始相位')
    unwrapped_angle = np.unwrap(np.angle(h))
    plt.plot(w, unwrapped_angle, label='解卷绕相位')
    # 绘制线性相位基准线
    plt.plot(w, -(N-1)/2 * w, '--', label='线性相位基准')
    plt.ylabel('相位 (弧度)')
    plt.grid(True)
    plt.legend()

    plt.tight_layout()
    plt.show()


def main(args):
    w, h, taps = design_filter(
                (0.0, 0.1, 0.5, 1.0),      # 节点频率
                (0.0, 0.5, -0.4, 0.5))     # 节点增益

    plot(w, h, taps)
    return 0

if __name__ == '__main__':
    import sys
    sys.exit(main(sys.argv))

内容的提问来源于stack exchange,提问作者jcoppens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 10:40:32