发布时间:2026/7/30 0:36:49
【数字信号处理含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_{n1}^{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_{n1}^{L} 2h(L-n) \sin(\omega n)]将复数幅度中的 ( j ) 吸收到相位里定义幅度响应为实函数[\boxed{H_r(\omega) \sum_{n1}^{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_{n1}^{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_{n1}^{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.mfunction[Hr,w,c,L]hr_type3(h);%Computes Amplitude response of Type-3 LP FIR filter % 注释中的 LP 不准确应为通用输入长度为奇数的奇对称序列h中心点应为零但代码并未显式检查。输出Hr、w、c正弦展开系数、L。核心代码Mlength(h);L(M-1)/2;c[h(L1:-1:1)];% 注意这里取了包含中心点在内的所有左侧样本但中心点 h(L1) 理论上为 0n[0:L];w[0:500]*pi/500;Hrsin(w*n)*c;分析代码中c包含了h(L1:-1:1)即从中心向左直到第一个样本。由于h(L1)0所以c(1)0正弦级数从n0开始第一项为 0不影响结果。这实际上等价于公式中的c(n)2h(L-n)在索引上的微调MATLAB 索引从 1 开始。例如M5L2h [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后续在使用时需注意。合理的写法应为c2*h(L:-1:1);% 排除中心点取左半部分并乘 2n[1:L];Hrsin(w*n)*c;但现存的代码仍然可以工作因为所有系数都被缩小了 2 倍形状不变只是幅度缩放。在ampl_ress中调用时若类型识别正确结果仍能保持相对关系。但为了严谨我们应知悉这一点。3. 代码剖析hr_type4.mfunction[Hr,w,d,L]hr_type4(h);%Computes Amplitude response of Type-4 LP FIR filter核心代码Mlength(h);LM/2;d2*[h(L:-1:1)];n[1:L];nn-0.5;w[0:500]*pi/500;Hrsin(w*n)*d;这里d正确乘以了 2且n取半整数与公式完全吻合。所以hr_type4是正确的而hr_type3缺少系数 2但因其中心为零若将中心剔除并乘 2可得到一致结果。实际中我们可以容忍这种幅度缩放因为很多应用中只关心相对形状。4. 自动识别大师ampl_ress.mampl_ress函数是整个幅度响应分析的门面它接收一个冲激响应h自动判断其类型并调用相应的hr_type*输出幅度响应和多项式系数。我们逐段解析其智能逻辑。function[Hr,w,P,L,type]ampl_ress(h)Mlength(h);4.1 奇数长度情况ifrem(M,2)1ifall(abs(h(1:(M-1)/2)-h(M:-1:(M3)/2))1e-8),[Hr,w,P,L]hr_type1(h);type1;elseifall(abs(h(1:(M-1)/2)h(M:-1:(M3)/2))1e-8)h((M1)/2)0,[Hr,w,P,L]hr_type3(h);type3;elsedisp(not a linear-phase filter, check h),return,end首先判断是否为偶对称比较左半部分h(1:(M-1)/2)与右半部分的翻转h(M:-1:(M3)/2)若差值全小于1e-8则为 Type-1。否则判断是否为奇对称比较左半部分与右半部分翻转的负值即相加接近 0并且中心点h((M1)/2)必须为 0满足则为 Type-3。若都不满足则报错退出。4.2 偶数长度情况elseifall(abs(h(1:M/2)-h(M:-1:M/21))1e-8),[Hr,w,P,L]hr_type2(h);type2;elseifall(abs(h(1:M/2)h(M:-1:M/21))1e-8),[Hr,w,P,L]hr_type4(h);type4;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原版代码计算一个幅度响应发现其数值比理论预期小了一半你能快速定位原因并修改吗欢迎在评论区讨论。

相关新闻

2026/7/30 0:31:48

【单片机毕业设计】基于 STM32 的多传感器室内空气实时可视化监测系统,基于单片机继电器控制的室内空气净化调控装置设计(010101)

文章目录20 个相关毕业设计备选题目项目研究背景硬件总体方案核心功能技术路线项目演示关于我们项目案例源码获取博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金…

2026/7/30 1:51:59

计算机单片机毕设实战-基于单片机的多模式温湿度管控系统设计与实现 基于 STM32 的阈值可调环境监测报警系统开发(011601)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/30 1:51:59

计算机单片机毕设实战-基于嵌入式单片机的消毒设备定时启停与环境监测装置 基于 STM32 的 OLED 显示与消毒加热外设定时控制系统(011301)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/30 1:51:59

Shiro Session管理实战:从核心原理到集群部署与强制下线实现

1. 从一次登录失效的排查说起:为什么需要手动操作Session?最近在排查一个线上问题时,遇到了一个挺典型的场景:用户反馈登录后,偶尔会莫名其妙地掉线,需要重新登录。排查日志发现,用户的Session在…

2026/7/30 1:51:59

【Kimi K3极限部署技术解析】Deltafin如何在M1 Max上运行2.8T参数模型

文章目录Kimi K3极限部署技术解析:Deltafin如何在M1 Max上运行2.8T参数模型一、引言二、为什么 2.8T 参数通常装不进 M1 Max2.1 Kimi K3 的“大”与“稀疏”同时存在2.2 权重规模决定传统加载方式失效三、纵向演进:本地推理从模型压缩走向权重流式化四、…

2026/7/30 1:46:59

有编程底子如何转行网安,两个月速成渗透测试

为什么开发者转行网安是“降维打击” 很多有 PHP 或 Java 开发背景的朋友想转行网络安全,却往往被市面上针对“零基础小白”的冗长路线劝退。那些路线要求你先花几周学 Linux 命令、再花一个月啃计算机网络、接着又要从头学习 HTML/JS/CSS 甚至数据库语法。对于已经…

2026/7/29 22:32:30

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

2026/7/30 0:01:39

[GESP202606 四级] 扫雷

B4557 [GESP202606 四级] 扫雷 https://www.luogu.com.cn/problem/B4557 中国计算机学会(CCF)2026年6月C四级讲解——扫雷 https://www.bilibili.com/video/BV1MCMg6AEXR/ B4557 [GESP202606 四级] 扫雷 https://www.bilibili.com/video/BV1ZKTj6ZEVh/ 2…

2026/7/30 0:01:39

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/29 13:12:43

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…