【数字信号处理含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原版代码计算一个幅度响应发现其数值比理论预期小了一半你能快速定位原因并修改吗欢迎在评论区讨论。

相关新闻

Linux内核调试工具链终极对比:printk/ftrace/perf/eBPF/BCC的场景选择

Linux内核调试工具链终极对比:printk/ftrace/perf/eBPF/BCC的场景选择

Linux内核调试工具链终极对比:printk/ftrace/perf/eBPF/BCC的场景选择作者:钟伊人 | 日期:2026-07-29 | Week5 总结与避坑模块一:内核调试的工具图谱与选型框架 为什么需要多种调试工具? Linux内核拥有超过3000万行代码…

2026/7/30 0:37:02阅读更多 →
短剧已经进入内卷化process----AI化主流

短剧已经进入内卷化process----AI化主流

因为我是发评论,所以他越卷,我就越好发,因为他们更加需要我的评论 ------------------------------------------- 结论先说:短剧(微短剧)确实处在热度高位,是当下国内增长最强的文娱赛道之一&…

2026/7/30 0:37:02阅读更多 →
初识Git:为什么AI时代的开发者需要版本控制

初识Git:为什么AI时代的开发者需要版本控制

面向 AI 开发者的 Git 实操教程,技术布道式写作,11篇文章从入门到精通 系列目录 序号文章核心主题图解01初识Git版本控制概念、Repo/Commit/Branch/Merge01 手动备份对比02Git基本操作init/add/commit/log/switch,论文案例02 基本工作流03Gi…

2026/7/30 0:37:02阅读更多 →
Base URL、API Key、模型名分别是什么?为什么配错一项就可能调用失败

Base URL、API Key、模型名分别是什么?为什么配错一项就可能调用失败

文章目录一、Base URL:请求到底发到哪里二、API Key:证明这次请求是谁发出的三、模型名:告诉服务端具体调用谁四、先认清 /responses 与 /chat/completions五、Bash / cURL 最小测试六、Windows PowerShell 最小测试七、出现 401:…

2026/7/30 1:45:31阅读更多 →
芯片设计数字后端布图规划:从PPA目标到实战流程详解

芯片设计数字后端布图规划:从PPA目标到实战流程详解

1. 项目概述:从“画地图”到“建城市”的芯片设计核心聊到芯片设计,前端工程师们总在谈论RTL、验证、综合这些听起来很“逻辑”的东西。但当你真正要把一个设计变成可以流片、可以量产的物理芯片时,你会发现,真正的挑战才刚刚开始…

2026/7/30 1:45:31阅读更多 →
Ping命令高级用法:-c、-i、-w参数详解与网络诊断实战

Ping命令高级用法:-c、-i、-w参数详解与网络诊断实战

1. 项目概述:从“能通”到“测准”的网络诊断艺术干了这么多年运维和网络排障,Ping命令绝对是工具箱里最顺手、最基础的那把螺丝刀。但说实话,很多人用了一辈子Ping,可能也就停留在ping www.baidu.com这个层面,看到能通…

2026/7/30 1:45:31阅读更多 →
实战指南:WSABuilds深度配置与性能优化全解析

实战指南:WSABuilds深度配置与性能优化全解析

实战指南:WSABuilds深度配置与性能优化全解析 【免费下载链接】WSABuilds Run Windows Subsystem For Android on your Windows 10 and Windows 11 PC using prebuilt binaries with Google Play Store (MindTheGapps) and/or Magisk or KernelSU (root solutions) …

2026/7/30 1:45:31阅读更多 →
掌握 Agent 记忆管理:从入门到进阶,收藏这份大模型面试攻略

掌握 Agent 记忆管理:从入门到进阶,收藏这份大模型面试攻略

本文深入剖析了生产级 Agent 记忆管理的核心架构与机制,指出仅靠向量库RAG的局限性,并提出四层冷热分层架构(上下文窗口、工作记忆、会话短期记忆、长期冷记忆),以及三大配套机制(记忆系统三件套、双时间戳…

2026/7/30 1:45:31阅读更多 →
Python实战不确定推理:5大核心算法与代码实现指南

Python实战不确定推理:5大核心算法与代码实现指南

在人工智能与软件工程的发展历程中,我们常常追求让系统像人类一样进行精确计算。然而在真实业务场景中,数据往往充满噪声、缺失或存在模糊性。例如自动驾驶汽车在雨天行驶时传感器数据受干扰,或者医疗诊断中只能根据部分症状推断病情。在这些…

2026/7/30 1:43:29阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/29 9:47:45阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/29 7:00:19阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/29 7:58:51阅读更多 →
3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 🚀 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 你是否曾经因为iOS系统的严格…

2026/7/30 0:00:58阅读更多 →
[GESP202606 四级] 扫雷

[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:00:58阅读更多 →
Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

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

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

2026/7/30 0:00:58阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/30 0:27:26阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/29 4:31:51阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/29 14:26:42阅读更多 →