首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >衰减包络:对高频成分的整体衰减能力

衰减包络:对高频成分的整体衰减能力

作者头像
云深无际
发布2025-07-24 09:32:15
发布2025-07-24 09:32:15
14300
代码可运行
举报
文章被收录于专栏:云深之无迹云深之无迹
运行总次数:0
代码可运行

在讨论 Σ-Δ ADC 或数字滤波器时,“衰减包络(attenuation envelope)” 是一个描述滤波器整体抑制趋势的术语,特别是对高频(噪声)成分的整体衰减能力。

衰减包络描述的是滤波器频率响应中,随频率增加,信号幅度下降的“包络曲线”,通常以 dB/decade 为单位。

我们以 Sinc 滤波器 为例(SincN = (sin(πf)/(πf))ⁿ):

Sinc1:

Sinc2:

Sinc3:

这就是频域中的衰减包络:它不是每个点的精确响应,而是频率-幅度整体衰减趋势的斜率上界

对 FIR 滤波器来说:

虽然 FIR 的频率响应是通过窗函数窗化理想频响构建的(非解析函数),但它的 主瓣-旁瓣结构 也能定义一个类似“包络”的趋势:

找个图
找个图

找个图

项目

描述

主瓣

接近直通,影响通带带宽

旁瓣包络

控制阻带衰减趋势

阶数越高

主瓣越窄,旁瓣越多,但整体包络更陡峭

数学表达(Sinc 滤波器):

SincN 滤波器的频率响应:

在阻带内近似为:

衰减包络斜率

做一个对比
做一个对比

做一个对比

展示了在对数频率轴下,FIR 滤波器与 Sinc³ 滤波器的频响衰减趋势和理论包络线对比:

蓝线:FIR 滤波器响应

在截止频率后迅速衰减;后续为一系列旁瓣,但整体下降不如 Sinc³ 规则

橙线:Sinc³ 滤波器响应

呈现非常规律的下降趋势;峰谷周期性出现,零点衰减非常快

黑虚线:理论衰减包络(-60 dB/dec)

对应 Sinc³ 的理论斜率;可见 Sinc³ 响应严格受控于该包络,具有典型整形特征。

FIR 滤波器的阻带衰减依赖窗函数和阶数,不一定严格遵循某个斜率

Sinc³ 滤波器具有非常规则的频域行为,且其衰减趋势完全符合理论 -60 dB/dec

代码语言:javascript
代码运行次数:0
运行
复制
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import freqz, firwin

# 设置参数
numtaps = 101  # FIR 滤波器阶数
cutoff = 0.1   # 归一化截止频率
fs = 1.0       # 归一化频率(Nyquist = 0.5)

# 构造 FIR 和 Sinc3 滤波器
fir_filter = firwin(numtaps, cutoff)
w_fir, h_fir = freqz(fir_filter, worN=2048, fs=fs)

# 构造 Sinc3 响应(用 sinc(f)^3 表示,f 为归一化频率)
f_sinc = np.logspace(-2.5, 0, 1000, base=10)  # 10^-2.5 到 1
sinc3_response = (np.sinc(f_sinc))**3

# 计算包络线理论斜率(Sinc3 理论为 -60 dB/dec)
sinc3_envelope = -60 * np.log10(f_sinc / f_sinc[0])  # 起点为0 dB

# 绘图
plt.figure(figsize=(10, 6))

# FIR 频响(对数频率轴)
plt.semilogx(w_fir, 20 * np.log10(np.abs(h_fir) + 1e-12), label="FIR Filter", linewidth=2)

# Sinc3 响应
plt.semilogx(f_sinc, 20 * np.log10(sinc3_response + 1e-12), label="Sinc3", linewidth=2)

# Sinc3 衰减包络线(理论)
plt.semilogx(f_sinc, sinc3_envelope, '--', label="Sinc3 Envelope (-60 dB/dec)", color='black')

# 图形设置
plt.title("Attenuation Envelope: FIR vs Sinc3 (Log Frequency Scale)")
plt.xlabel("Normalized Frequency (log scale)")
plt.ylabel("Magnitude (dB)")
plt.ylim([-120, 5])
plt.grid(True, which='both')
plt.legend()
plt.tight_layout()
plt.show()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Sinc1:
  • Sinc2:
  • Sinc3:
  • 对 FIR 滤波器来说:
  • 数学表达(Sinc 滤波器):
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档