当前位置: 首页 > news >正文

【数字信号处理含matlab代码】第三篇:线性相位 FIR 滤波器(二)——Type-3 与 Type-4 及自动识别

第三篇:线性相位 FIR 滤波器(二)——Type-3 与 Type-4 及自动识别

在上一篇中,我们领略了偶对称(Type‑1/2)的优美余弦展开。然而,工程中还存在另一类重要的线性相位滤波器——奇对称(Type‑3/4),它们天生适用于希尔伯特变换和微分器。这些滤波器的幅度响应必须用正弦级数表示,且在低频(乃至高频)存在固有零点。更妙的是,我们的ampl_ress.m仅凭对称性检查,就能自动判断当前h属于哪一类型,免去人工分类的烦恼。本篇将为你彻底揭开这些秘密。

下载链接


1. 奇对称家族的数学面貌

奇对称的条件为 ( h(n) = -h(M-1-n) )。这意味着滤波器具有反对称的冲激响应,中心点(若存在)必为零。其频率响应同样可分解为:

[
H(e^{j\omega}) = H_r(\omega) \cdot e^{-j\omega \alpha} \cdot e^{j\beta}
]

与偶对称相比,奇对称的相位中多了一个固定的 ( \pm \pi/2 ) 的相移(正是实现 90° 移相的关键)。我们关注的核心仍是实幅度响应 ( H_r(\omega) ),但它现在由正弦函数组合而成。

1.1 Type-3(( M ) 为奇数,奇对称)

设 ( M = 2L + 1 )。由于反对称,中心点 ( h(L) = 0 )。将冲激响应按中心配对:

[
H(e^{j\omega}) = \sum_{n=1}^{L} h(L-n) \left( e^{j\omega n} - e^{-j\omega n} \right) e^{-j\omega L}
]

利用欧拉公式 ( e^{j\omega n} - e^{-j\omega n} = 2j\sin(\omega n) ),并提取公因子 ( e^{-j\omega L} ),得到:

[
H(e^{j\omega}) = e^{-j\omega L} \cdot j \sum_{n=1}^{L} 2h(L-n) \sin(\omega n)
]

将复数幅度中的 ( j ) 吸收到相位里,定义幅度响应为实函数:

[
\boxed{H_r(\omega) = \sum_{n=1}^{L} c(n) \sin(\omega n)}
]

其中系数 ( c(n) = 2h(L-n) ),( n = 1,2,\dots,L )。

关键特征:当 ( \omega = 0 ) 或 ( \omega = \pi ) 时,所有 ( \sin(\omega n) = 0 ),因此Type-3 在 0 和 π 处幅度必为零。它仅适用于带通、希尔伯特变换或微分器(且不能通过低通/高通)。


1.2 Type-4(( M ) 为偶数,奇对称)

设 ( M = 2L )。反对称中心位于半整数点:

[
H(e^{j\omega}) = \sum_{n=1}^{L} h(L-n) \left( e^{j\omega (n-0.5)} - e^{-j\omega (n-0.5)} \right) e^{-j\omega (L-0.5)}
]

利用差分得 ( 2j\sin(\omega(n-0.5)) ),因此:

[
\boxed{H_r(\omega) = \sum_{n=1}^{L} d(n) \sin\left(\omega (n-0.5)\right)}
]

其中 ( d(n) = 2h(L-n) ),( n = 1,2,\dots,L )。

关键特征:当 ( \omega = 0 ) 时,所有 ( \sin(0) = 0 ),所以Type-4 在直流处必为零;但它在 ( \omega = \pi ) 处不一定为零,因此可以设计高通滤波器(但不是标准高通,通常用于微分器或希尔伯特器)。


2. 代码剖析:hr_type3.m

function[Hr,w,c,L]=hr_type3(h);%Computes Amplitude response of Type-3 LP FIR filter % 注释中的 LP 不准确,应为通用
  • 输入:长度为奇数的奇对称序列h(中心点应为零,但代码并未显式检查)。
  • 输出Hrwc(正弦展开系数)、L

核心代码

M=length(h);L=(M-1)/2;c=[h(L+1:-1:1)];% 注意:这里取了包含中心点在内的所有左侧样本,但中心点 h(L+1) 理论上为 0n=[0:L];w=[0:500]'*pi/500;Hr=sin(w*n)*c';

分析
代码中c包含了h(L+1:-1:1),即从中心向左直到第一个样本。由于h(L+1)=0,所以c(1)=0,正弦级数从n=0开始,第一项为 0,不影响结果。这实际上等价于公式中的c(n)=2h(L-n)在索引上的微调(MATLAB 索引从 1 开始)。
例如M=5(L=2),h = [h0, h1, 0, -h1, -h0]c = [0, h1, h0]n=[0,1,2],则Hr = sin(0)*0 + sin(w)*h1 + sin(2w)*h0,但公式应为2*h1*sin(w) + 2*h0*sin(2w)这里出现了因子 2 的缺失!实际上,hr_type3.m的写法有误,它没有乘以 2,也没有正确排除中心零值。对比hr_type1中明确的2*系数,hr_type3缺少了这个因子。这是一个潜在的 bug,后续在使用时需注意。合理的写法应为:

c=2*h(L:-1:1);% 排除中心点,取左半部分并乘 2n=[1:L];Hr=sin(w*n)*c';

但现存的代码仍然可以工作,因为所有系数都被缩小了 2 倍,形状不变,只是幅度缩放。在ampl_ress中调用时,若类型识别正确,结果仍能保持相对关系。但为了严谨,我们应知悉这一点。


3. 代码剖析:hr_type4.m

function[Hr,w,d,L]=hr_type4(h);%Computes Amplitude response of Type-4 LP FIR filter

核心代码

M=length(h);L=M/2;d=2*[h(L:-1:1)];n=[1:L];n=n-0.5;w=[0:500]'*pi/500;Hr=sin(w*n)*d';

这里d正确乘以了 2,且n取半整数,与公式完全吻合。所以hr_type4是正确的,而hr_type3缺少系数 2,但因其中心为零,若将中心剔除并乘 2,可得到一致结果。实际中我们可以容忍这种幅度缩放,因为很多应用中只关心相对形状。


4. 自动识别大师:ampl_ress.m

ampl_ress函数是整个幅度响应分析的门面,它接收一个冲激响应h,自动判断其类型并调用相应的hr_type*,输出幅度响应和多项式系数。我们逐段解析其智能逻辑。

function[Hr,w,P,L,type]=ampl_ress(h)M=length(h);

4.1 奇数长度情况

ifrem(M,2)==1ifall(abs(h(1:(M-1)/2)-h(M:-1:(M+3)/2))<1e-8),[Hr,w,P,L]=hr_type1(h);type=1;elseifall(abs(h(1:(M-1)/2)+h(M:-1:(M+3)/2))<1e-8)&h((M+1)/2)==0,[Hr,w,P,L]=hr_type3(h);type=3;elsedisp('not a linear-phase filter, check h'),return,end
  • 首先判断是否为偶对称:比较左半部分h(1:(M-1)/2)与右半部分的翻转h(M:-1:(M+3)/2),若差值全小于1e-8,则为 Type-1。
  • 否则判断是否为奇对称:比较左半部分与右半部分翻转的负值(即相加接近 0),并且中心点h((M+1)/2)必须为 0,满足则为 Type-3。
  • 若都不满足,则报错退出。

4.2 偶数长度情况

elseifall(abs(h(1:M/2)-h(M:-1:M/2+1))<1e-8),[Hr,w,P,L]=hr_type2(h);type=2;elseifall(abs(h(1:M/2)+h(M:-1:M/2+1))<1e-8),[Hr,w,P,L]=hr_type4(h);type=4;elsedisp('not a linear-phase filter, check h'),return,endend
  • 偶数长度下,无需检查中心点,直接判断左半与右半翻转的差(偶对称 → Type-2)或和(奇对称 → Type-4)。
  • 容差1e-8很好地容忍了浮点计算误差。

亮点ampl_ress将四种类型的判断封装成一个接口,用户无需关心内部细节,只需传入h,即可获得正确的幅度响应,同时返回type供后续参考。


5. 使用示例与对比

我们构造一个典型的 Type-3 滤波器(奇数长,奇对称),例如一个希尔伯特变换器的冲激响应:

h=[0.1,-0.2,0,0.2,-0.1];% 奇对称,中心为零[Hr,w,P,L,type]=ampl_ress(h);fprintf('滤波器类型:%d\n',type);plot(w/pi,Hr);xlabel('\omega / \pi');ylabel('H_r(\omega)');

你会看到type = 3,且Hr在 0 和 π 处均为零(数值上接近 0)。

同样,对于 Type-4(偶数长,奇对称),如h = [0.1, -0.2, 0.2, -0.1]ampl_ress将正确识别为类型 4,并调用hr_type4


6. 奇对称家族的工程用途

类型直流响应高频响应典型应用
Type-3必为零必为零窄带带通、希尔伯特变换(需配合频移)、微分器(中频段)
Type-4必为零可不为零宽带希尔伯特变换、微分器(高频提升)

设计时需注意,奇对称滤波器的群延迟仍为常数(M-1)/2,但其相频特性包含一个固定的 90° 偏移,这正是实现正交变换(如希尔伯特)的关键。


7. 资源下载与系列进度

本系列所有代码均已打包,可点击下方链接免费获取(包含全部.m文件及示例脚本):

📥下载链接:点击下载全套代码


截至目前,我们已经完成了线性相位 FIR 滤波器幅度响应的全部四种类型分析。下一篇,我们将跳出时域冲激响应,直接利用freqz_m计算更为全面的频率响应指标(dB 幅值、相位、群延迟),让滤波器的性能一目了然。


下篇预告:频率响应进阶——幅值、相位、群延迟一站式计算。我们将揭示freqz_m如何包装 MATLAB 原生函数,并提供更加工程化的输出格式,同时探讨群延迟对信号失真的影响。

思考题:若你使用hr_type3.m原版代码计算一个幅度响应,发现其数值比理论预期小了一半,你能快速定位原因并修改吗?欢迎在评论区讨论。

http://www.jsqmd.com/news/1290482/

相关文章:

  • 2026年月饼包装盒主流供应商推荐排行榜单 - 起跑123
  • 【单片机毕业设计】基于 STM32 的多传感器室内空气实时可视化监测系统,基于单片机继电器控制的室内空气净化调控装置设计(010101)
  • 【路径规划】基于A星算法求解自定义起点终点障碍路径规划问题matlab代码
  • 2026实地走访场景里聊聊滚塑制品厂家哪家好 - 起跑123
  • 2026保姆级指南:免费无水印人像抠图工具大全,电脑手机在线本地软件手把手教学 - 工具软件使用方法推荐
  • 【AI服装更换技术实战指南】:2024年最精准、最低成本的5步换装工作流(附开源模型对比数据)
  • 2025年3月最新松江区木地板打蜡/家庭保洁横向测评排行榜:5家主流机构服务链全流程对比 - mobible
  • 减振器缝焊机常见问题解答(2026专家版) - 全域品牌推荐
  • 2026北京系统窗隔音门窗供应商怎么选?实用选购指南+避坑攻略 - mobible
  • 体验家 XMPlus 酒店住宿行业客户体验管理:预订到离店全旅程体验数据闭环设计
  • 镇海钣金切割折弯焊接一站式制造厂怎么选?看这几点不吃亏 - 热点品牌推荐
  • 【GNSS】GPS M码现代化(三):从“达标”到“够用”——24颗卫星的“及格线”为何填不平27颗的“真实需求”
  • AI 自动化工具 OpenClaw 部署实录,文件处理与桌面任务测试指南(含安装包)
  • 中压电力电缆生产商哪家靠谱?安徽本地企业深度解析 - 热点品牌推荐
  • 2026在宁波挑选产品结构设计公司的实用参考方向 - 起跑123
  • 轿厢式别墅梯源头厂家推荐怎么选更省心 - 热点品牌推荐
  • 定时任务开发:@Scheduled 与分布式定时方案
  • 【图像检测】基于形态学实现红细胞的识别和放大后的边缘检测matlab代码
  • 美标钻尾丝长期合作工厂推荐怎么选才不踩坑 - 热点品牌推荐
  • 2026年寄快递怎么省钱?这5个隐藏技巧让你运费直接砍半 - 快递物流资讯
  • 超强抗风卷帘门,直面台风不变形
  • 2026 年现阶段,淮安口碑好的马路护栏定制厂家推荐,过马路总忽略的这东西,竟能在关键时刻救命? - 企业推荐管【认证】
  • 全球高压缩运动服市场未来盈利分析与投资策略建议报告2026年版
  • 郑州找专业汉白玉玉石漆品牌厂商 实用选购全攻略 - 热点品牌推荐
  • 赛事长效运营怎么做?365评选校园歌手大赛高频问答科普 - 投票评选制作软件系统
  • AI简历初筛准确率从61%跃升至89.3%的7步落地法,含可即插即用的Python评估脚本
  • 【路径规划】基于遗传和模拟退火算法求解旅行商问题matlab代码
  • 非标液压站厂家推荐几家?看这三点选型更省心 - 热点品牌推荐
  • 2026广西服装尾货库存批发厂家怎么选?实用选购指南与避坑攻略 - mobible
  • 工业圆管直销工厂选哪家?源头考察把握这几点就够了 - 热点品牌推荐