信号系统之切比雪夫过滤器

1 切比雪夫和巴特沃斯的响应

切比雪夫响应是一种数学策略,通过允许频率响应中的纹波来实现更快的滚降。使用这种方法的模拟和数字滤波器称为切比雪夫滤波器。这些滤波器因使用切比雪夫多项式而得名,切比雪夫多项式由俄罗斯数学家帕夫努蒂·切比雪夫(1821-1894)开发。这个名字是从俄语翻译过来的,出现在文献中有不同的拼写,例如:Chebychev、Tschebyscheff、Tchebysheff 和 Tchebichef。

图20-1显示了通带纹波为:0%、0.5%和20%的低通切比雪夫滤波器的频率响应随着纹波的增加(坏),滚降变得更尖锐(好)。切比雪夫响应是这两个参数之间的最佳权衡。当纹波设置为 0% 时,滤波器称为最大平坦滤波器或巴特沃斯滤波器(以 1930 年描述这种响应的英国工程师 S. Butterworth 的名字命名)。0.5%的纹波通常是数字滤波器的不错选择。这与信号通过的模拟电子设备的典型精度和准确度相匹配。

本文讨论的切比雪夫滤波器称为 1 类滤波器 (type 1 filters),这意味着纹波只允许在通带内。相比之下,2 型切比雪夫滤波器仅在阻带内有纹波。类型 2 过滤器很少使用。有一个重要的设计称为椭圆滤波器(elliptic filter),它在通带和阻带中都有纹波。椭圆滤波器为给定数量的极点提供最快的滚降,但设计难度大得多。

2 设计过滤器

必须选择四个参数来设计切比雪夫滤波器:

  • 高通或低通响应
  • 截止频率
  • 通带中的纹波百分比
  • 极点数

**什么是极点(pole)?**这里有两个答案:

  • 答案1:拉普拉斯变换和 z 变换是将脉冲响应分解为正弦曲线和衰减指数的数学方法。这是通过将系统的特征表示为一个复多项式除以另一个复多项式来完成的。分子的根称为零,而分母的根称为极点。由于极点和零点可以是复数,因此通常说它们在复平面中有一个“位置”。复杂的系统比简单的系统有更多的极点和零点。递归滤波器的设计方法是首先选择极点和零点的位置,然后找到合适的递归系数(或模拟分量)。例如,巴特沃斯滤波器的极点位于复平面的圆上,而在切比雪夫滤波器中,它们位于椭圆上。
  • 答案2:极点是装满魔法力量的容器。滤波器中的极数越多,滤波器的工作效果就越好。

过滤器设计是一门专业。在实际操作中,更多的工程师、科学家和程序员会从答案 2 的角度思考,而不是答案 1。

图20-2显示了几个纹波为0.5%的切比雪夫滤波器的频率响应。对于此处使用的方法,极数必须是偶数。每个滤波器的截止频率是在幅度超过0.707(-3dB)的地方测量的。截止频率接近 0 或 0.5 的滤波器比频率范围中心的滤波器具有更尖锐的滚降。例如, f C = 0.05 f_C=0.05 fC=0.05 的双极点滤波器与 f C = 0.25 f_C=0.25 fC=0.25 的四极点滤波器具有大致相同的滚降。这是幸运的;由于舍入噪声,可以在 0 和 0.5 附近使用较少的极点。

有两种方法可以在不使用 z 变换的情况下找到递归系数。首先,简单方式:使用table。表20-1和表20-2给出了通带纹波为0.5%的低通和高通滤波器的递归系数。

使用表格设计数字滤波器存在两个问题

  • 首先,表的参数选择有限。例如,表 20-1 仅提供 12 种不同的截止频率,每个滤波器最多 6 个极点,并且没有通带纹波选择。如果不能从连续的值范围内选择参数,则无法优化滤波器设计。
  • 其次,必须手动将系数从表格中传输到程序中。这非常耗时,并且会阻止尝试其他值。

不要使用表格值,而是考虑在程序中包含一个计算系数的子例程。这样的程序如表 20-4 所示。好消息是该程序在结构上相对简单。输入四个滤波器参数后,程序会吐出数组 A[] 和 B[] 中的“a”和“b”系数。坏消息是程序调用了表 20-5 中的子例程。乍一看,这个子程序真的很丑。不要绝望;它并不像看起来那么糟糕!第 1120 行中有一个简单的分支。子程序中的其他所有内容都是简单的数字运算。6 个变量进入例程,5 个变量离开例程,其中使用了 15 个临时变量(加上索引)。表 20-5 提供了两组用于调试此子例程的测试数据。

3 阶跃响应过冲

巴特沃斯和切比雪夫滤波器的阶跃响应过冲为 5% 至 30%,随着极点数量的增加而变大。图20-3a显示了两个示例切比雪夫滤波器的阶跃响应。图(b)显示了数字滤波器所特有的、在模拟电子器件中没有对应物的东西:阶跃响应中的过冲量在一定程度上取决于滤波器的截止频率。阶跃响应中过多的过冲和振铃是由于切比雪夫滤波器以牺牲时域为代价针对频域进行了优化。

4 稳定性

通过卷积执行的数字滤波器的主要限制是执行时间。只要愿意等待结果,几乎可以实现任何滤波器响应。递归过滤器恰恰相反。他们像闪电一样奔跑;但是,它们的性能有限。例如,考虑一个截止频率为 0.01 的 6 极点、0.5% 纹波、低通滤波器。该滤波器的递归系数可从表20-1中获取:

仔细观察这些系数。“b”系数的绝对值约为 10。使用单个精度,这些数字中每个数字的舍入噪声约为该值的千万分之一,即 1 0 − 6 10^{-6} 106。现在看一下“a”系数,其值约为 1 0 − 9 10^{-9} 109 。这里显然有些不对劲。输入信号的贡献(通过“a”系数)将比先前计算的输出信号的噪声(通过“b”系数)小 1000 倍。这个过滤器不起作用!简言之,舍入噪声限制了滤波器中可以使用的极点数。实际数字将略微取决于纹波以及它是高通滤波器还是低通滤波器。单精度的近似值为:

当接近此限制时,过滤器的性能将开始下降;阶跃响应会显示出更多的过冲,阻带衰减会很差,频率响应会有过大的纹波。如果滤波器推得太远,或者系数有误差,输出可能会振荡,直到发生溢出。

有两种方法可以延长可以使用的最大极数

  • 首先,使用双精度。这还需要在系数计算中使用双精度(包括 pi 的值)。
  • 第二种方法是分阶段实现过滤器

例如,一个六极滤波器开始时是三级的级联,每级两个极。表 20-4 中的程序将这三个阶段组合成一组递归系数,以便于编程。但是,如果按原来的三个独立阶段进行,过滤器会更稳定。这需要知道每个阶段的“a”和“b”系数。这些可以从表 20-4 中的程序中获得。表 20-5 中的子例程为级联中的每个阶段调用一次。例如,对于六极滤波器,它被调用了三次。在子程序完成后,五个变量将返回到主程序:A0、A1、A2、B1 和 B2。这些是正在处理的两极阶段的递归系数,可用于分阶段实现滤波器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/414814.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于FPGA的9/7整数小波变换和逆变换verilog实现,包含testbench

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 9/7整数小波变换原理 4.2 逆变换过程 5.算法完整程序工程 1.算法运行效果图预览 将测试结果导入到matlab显示 2.算法运行软件版本 vivado2019.2,matlab2022a 3.部分核心程…

寒假作业Day 01

这个项目主要是为了复习博主之前关于C语言和数据结构的寒假作业,大家也可以根据这些题目自己进行填写并检查自己的知识点是否过关 博主也会有错误,所以如果大家看到错误,也希望大家能够进行指正,谢谢大家! Day 01 一…

静态链表(1)

什么叫静态链表?——用顺序表模拟链表,就叫做静态链表 第一列相当于数据域data,第二列相当于指针域next, 第一行(0)相当于头结点(头结点的数据域不放数据) (a&#xff…

Rocky Linux安装部署Elasticsearch(ELK日志服务器)

一、Elasticsearch的简介 Elasticsearch是一个强大的开源搜索和分析引擎,可用于实时处理和查询大量数据。它具有高性能、可扩展性和分布式特性,支持全文搜索、聚合分析、地理空间搜索等功能,是构建实时应用和大规模数据分析平台的首选工具。 …

【C语言】while循环语句

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:C语言 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步&…

flask知识--01

flask介绍 # python 界的web框架: Django:大而全,使用率较高 :https://github.com/django/django -FastAPI:新项目选择使用它:https://github.com/tiangolo/fastapi -flask:公司一些…

【论文阅读】深度学习在过冷沸腾气泡动力学分割中的应用

Application of deep learning for segmentation of bubble dynamics in subcooled boiling 深度学习在过冷沸腾气泡动力学分割中的应用 期刊信息:International Journal of Multiphase Flow 2023 级别:EI检索 SCI升级版工程技术2区 SCI基础版工程技术3区…

探讨:围绕 props 阐述 React 通信

在 ✓ 🇨🇳 开篇:通过 state 阐述 React 渲染 中,以 setInterval 为例,梳理了 React 渲染的相关内容。 📢 本篇会 ✓ 🇨🇳 围绕 props 阐述 React 通信 props React 组件使用 pro…

7.1 嵌入式软件设计资源管理-引言

1、简介 实时和嵌入式系统的一个显著特点是对有限资源的管理。这些资源可能是CPU时间、内存、网络带宽等,它们的有限性要求系统设计者必须精心管理以确保系统的高效运行。 1.1 资源管理 资源管理是实时和嵌入式系统设计中的一个核心问题,涉及CPU时间、…

三、软件-系统架构设计师笔记-计算机系统基础知识

计算机系统概述 计算机系统是指用于数据管理的计算机硬件、软件及网络组成的系统。 它是按人的要求接收和存储信息,自动进行数据处理和计算,并输出结果信息的机器系统。 冯诺依曼体系计算机结构: 1、计算机硬件组成 冯诺依曼计算机结构将…

kafka三节点集群平滑升级过程指导

一、前言 Apache Kafka作为常用的开源分布式流媒体平台,可以实时发布、订阅、存储和处理数据流,多用于作为消息队列获取实时数据,构建对数据流的变化进行实时反应的应用程序,已被数千家公司用于高性能数据管道、流分析、数据集成和任务关键型…

Keepalived双机热备——Haproxy搭建web群集

一、认识keepalived keepalived是一个开源的软件,用于实现高可用性和负载均衡。它主要用于在多个服务器之间提供故障转移和负载均衡的功能。keepalived可以监控服务器的状态,并在主服务器发生故障时自动将备份服务器切换为主服务器,以确保服…

统计分析笔记3

文章目录 统计检验选择正确的统计检验统计检验是做什么的?何时进行统计检验选择参数化测试:回归、比较或相关性选择非参数检验 假设检验的假设条件skewness什么是零偏度right skewleft skew计算skewnesswhat to do if your data is skewed kurtosis怎么计…

Python进阶学习:Pandas--将一种的数据类型转换为另一种类型(astype())

Python进阶学习:Pandas–将一种的数据类型转换为另一种类型(astype()) 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&…

【C++那些事儿】深入理解C++类与对象:从概念到实践(上)| 揭开this指针的神秘面纱

📷 江池俊: 个人主页 🔥个人专栏: ✅数据结构冒险记 ✅C那些事儿 🌅 有航道的人,再渺小也不会迷途。 文章目录 1. 面向过程和面向对象初步认识2.类的引入3.类的定义4.类的访问限定符及封装4.1 访问限定符…

TikTok云手机可以运营多少个账号

在社交媒体平台上,尤其是像TikTok这样的热门应用中,账号运营已经成为了许多人的日常工作。而利用云手机技术,一台手机能够同时运营多个TikTok账号,为用户带来了更大的便利和灵活性。本文将探讨 TikTok云手机能够运营多少个账号&am…

网站的安全防护需要注意哪些问题?有什么方法可以加固网站的防护

网站的安全防护,是一项复杂性、多方面的系统工程。现如今网络安全风险的增加,使得上至国家部门机关,小到个人博客,都有可能遭受网络安全问题。说到网络安全问题,比如:竞争最为激烈的游戏行业,从…

【GO开发工程师】grpc进阶#golang

【GO开发工程师】grpc进阶#golang 推荐个人主页:席万里的个人空间 文章目录 【GO开发工程师】grpc进阶#golang1、protobuf2、grpc2.1、gRPC 的 Metadata机制2.2、grpc拦截器 1、protobuf syntax "proto3"; // 指定使用的 protobuf 版本为 proto3 import…

配置前端项目到 github-pages

Quickstart for GitHub Pages - GitHub Docs

云计算新宠:探索Apache Doris的云原生策略

文章目录 Apache Doris 特性极简架构高效自运维高并发场景支持MPP 执行引擎明细与聚合模型的统一便捷数据接入 Apache Doris 极速 1.0 时代极速列式内存布局向量化的计算框架Cache 亲和度虚函数调用SIMD 指令集 稳定多源 关于 Apache Doris 开源社区基于云原生向量数据库Milvus…