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

cheb2ord matlab,matlab在信号与图像处理中的应用第6章

6.2 IIR滤波器设计

例6-7设计一个8阶低通ChebyshevⅠ型滤波器,要求通带波纹1dB,截止频率300Hz,给定采样频率1000Hz。

% cheby1函数设计低通滤波器 fs = 1000; n = 8; Rp = 1;

Wn = 300*2/fs;

[b,a] = cheby1(n,Rp,Wn,'low') m = 256;

freqz(b,a,m,fs)

程序运行结果如图6-2所示,与butter函数设计的低通滤波器频率响应对比,当阶数相同时,ChebyshevⅠ型滤波器在阻带内下降较快。

图6-2 利用cheby1函数设计的低通滤波器频率响应

3. cheby2函数

cheby2函数用于设计ChebyshevⅡ型数字滤波器,该类型滤波器的频率响应特性在通带内单调下降,在阻带为等波纹。其调用格式如下: ? [b,a] = cheby2(n,Rs,Wn)

? [b,a] = cheby2(n,Rs,Wn,'ftype') ? [z,p,k] = cheby2(n,Rs,Wn)

? [z,p,k] = cheby2(n,Rs,Wn,'ftype') ? [A,B,C,D] = cheby2(n,Rs,Wn)

? [A,B,C,D] = cheby2(n,Rs,Wn,'ftype')

在格式中,参量Rs为阻带衰减,单位dB,截止频率Wn处的通带波纹幅度为-RsdB,其余参量同函数butter。

提示:截止频率Wn仍是归一化之后的频率

例6-8设计一个8阶高通ChebyshevⅡ型滤波器,要求阻带衰减20dB,截止频率200Hz,给定采样频率1000Hz。

% cheby2函数设计高通滤波器 freqz(b,a,m,fs) fs=1000;

n=8;

9

第6章 数字滤波器设计与实现

Rs=20;

Wn=200*2/fs;

[b,a]=cheby2(n,Rs,Wn,'high') m=256;

freqz(b,a,m,fs)

程序运行结果如图6-3所示,ChebyshevⅡ型滤波器的频率响应在阻带内为等波纹。

图6-3 利用cheby2函数设计的高通滤波器频率响应

4. ellip函数

ellip函数用于设计椭圆数字滤波器,相对于Butterworth滤波器和Chybeshev滤波器而言,椭圆滤波器具有更陡峭的滚降特性,即在给定的阶数和波纹要求下,椭圆滤波器能够获得最窄的过渡带宽,但在通带和阻带内都为等波纹形式。其调用格式如下: ? [b,a] = ellip(n,Rp,Rs,Wn)

? [b,a] = ellip(n,Rp,Rs,Wn,'ftype') ? [z,p,k] = ellip(n,Rp,Rs,Wn)

? [z,p,k] = ellip(n,Rp,Rs,Wn,'ftype') ? [A,B,C,D] = ellip(n,Rp,Rs,Wn)

? [A,B,C,D] = ellip(n,Rp,Rs,Wn,'ftype')

函数参量Rp为通带波纹,Rs为阻带衰减,单位都是dB,其余参量同butter函数。

提示:截止频率Wn仍是归一化之后的频率

例6-9设计一个8阶低通椭圆滤波器,要求阻带衰减40dB,通带波纹3dB,截止频率300Hz,给定采样频率1000Hz。

% ellip函数设计高通滤波器

fs=1000; n=8; Rs=40; Rp=3;

Wn=300*2/fs;

[b,a]=ellip(n,Rp,Rs,Wn,'low') m=256;

freqz(b,a,m,fs)

程序运行结果如图6-4所示,可见椭圆滤波器的过渡带较Butterworth和Chebyshev滤波

1 0

6.2 IIR滤波器设计

器都要窄很多,但在通带和阻带内都为波纹状。

图6-4 利用ellip函数设计的低通滤波器频率响应

6.2.1.2 变换函数

除了上面的几种完全设计函数之外,还可以通过变换函数完成基于模拟原型方法的数字滤波器设计。这里主要包括以下几个部分:

? 选择滤波器的阶数; ? 设计模拟原型滤波器 ? 模拟域频率变换;

? 模拟滤波器到数字滤波器的变换

接下来将对实现以上每个部分功能的函数进行逐一介绍,最后再通过几个综合的例子展示如何基于变换函数的方法完成一个数字滤波器设计。

提示:滤波器阶数选择也可与完全设计函数相结合,设计数字滤波器。

1. 滤波器阶数的选择函数

阶数选择函数用来计算一个模拟滤波器或数字滤波器满足设计指标的最小阶数。针对上面提到的几种常见模拟滤波器类型,分别对应不同的选择函数来确定滤波器的阶数:

? 选择Butterworth滤波器阶数的函数buttord

? 选择ChebyshevⅠ型滤波器阶数的函数cheb1ord ? 选择ChebyshevⅡ型滤波器阶数的函数cheb2ord ? 选择椭圆滤波器阶数的函数ellipord 以上四个函数的调用格式分别如下: ? [n,Wn] = buttord(Wp,Ws,Rp,Rs) ? [n,Wn] = buttord(Wp,Ws,Rp,Rs,’s’) ? [n,Wn] = cheb1ord(Wp,Ws,Rp,Rs) ? [n,Wn] = cheb1ord(Wp,Ws,Rp,Rs,’s’) ? [n,Wn] = cheb2ord(Wp,Ws,Rp,Rs) ? [n,Wn] = cheb2ord(Wp,Ws,Rp,Rs,’s’)

11

第6章 数字滤波器设计与实现

[n,Wn] = ellipord(Wp,Ws,Rp,Rs) ? [n,Wn] = ellipord(Wp,Ws,Rp,Rs,’s’)

格式当中的输入参量Wp为通带截止频率,Ws为阻带截止频率,Rp为通带波纹,Rs为阻带衰减,Rp和Rs单位都是dB。‘s’表示模拟滤波器设计,缺省为数字滤波器设计。返回值n是求出的滤波器最小阶数,Wn为3dB频率。

?

提示:Wp和Ws都是归一化的频率,1值对应奈奎斯特频率,并且Wn与Wp和Ws是不同的。

例6-10设计一个低通ChebyshevⅠ型滤波器,要求阻带衰减至少50dB,通带波纹小于3dB,通带截止频率200Hz,阻带截止频率300Hz,给定采样频率1000Hz。

% cheb1ord函数选择滤波器阶数 fs = 1000;

Wp = 200*2/fs; Ws = 300*2/fs; Rp = 3; Rs = 50;

[n,Wn] = cheb1ord(Wp,Ws,Rp,Rs) [b,a] = cheby1(n,Rp,Wn); freqz(b,a,256,fs)

程序运行结果如图6-5所示。

图6-5 利用cheb1ord阶数选择函数辅助设计的低通ChebyshevⅠ型滤波器频率响应

2. 设计模拟原型滤波器的函数

在给定了滤波器阶数和相关特性指标之后,可利用该类函数设计出相应的模拟原型滤波器的系统函数,这类函数包括:

? Butterworth模拟低通滤波器原型函数buttap

? ChebyshevⅠ型模拟低通滤波器原型函数cheb1ap ? ChebyshevⅡ型模拟低通滤波器原型函数cheb2ap ? 椭圆模拟低通滤波器原型函数ellipap 以上四个函数的调用格式分别为: ? [z,p,k] = buttap(n)

? [z,p,k] = cheb1ap(n,Rp)

1 2

相关文章:

  • php __call实现多继承,PHP通过_call实现多继承
  • php加水印二维码,php给图片加水印的代码
  • 跨数据库查询oracle,跨数据库查询(oracle跨数据库查询)
  • centos oracle home目录,CentOS下查找文件安装路径
  • oracle 同步索引,oracle数据库连表查询视图索引)
  • 整理oracle数据字典,oracle结构梳理---数据字典
  • oracle项目是啥,Oracle 基础知识其中七个主要项目
  • constel matlab,基于MATLAB环境下16QAM调制及解调仿真程序说明.doc
  • oracle 00947,ORA-00947: Not enough values 没有足够的值
  • nginx php 413,Nginx出现413 Request Entity Too Large错误
  • oracle重启配置服务,重启系统的时候自动启动oracle服务-安装配置
  • ORACLE---添加控制文件,Oracle数据库添加和移动控制文件
  • linux mongodb服务启动命令行,liunx 后台启动mongodb服务
  • 英灵神殿服务器linux,Valheim英灵神殿linux版本更新教程 服务器内游戏更新方法
  • Linux获取norflash信息,linux ——Uboot模式下读取NORflash芯片数据
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • CentOS 7 修改主机名
  • CentOS7简单部署NFS
  • github指令
  • linux学习笔记
  • mysql 5.6 原生Online DDL解析
  • SpiderData 2019年2月23日 DApp数据排行榜
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 看域名解析域名安全对SEO的影响
  • 利用jquery编写加法运算验证码
  • 深度学习在携程攻略社区的应用
  • 数组大概知多少
  • 原生js练习题---第五课
  • 在Unity中实现一个简单的消息管理器
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (办公)springboot配置aop处理请求.
  • (笔试题)合法字符串
  • (二)PySpark3:SparkSQL编程
  • (七)理解angular中的module和injector,即依赖注入
  • (小白学Java)Java简介和基本配置
  • .mysql secret在哪_MySQL如何使用索引
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net core 连接数据库,通过数据库生成Modell
  • /bin/rm: 参数列表过长"的解决办法
  • /etc/shadow字段详解
  • /run/containerd/containerd.sock connect: connection refused
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • [ C++ ] STL_vector -- 迭代器失效问题
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [20170728]oracle保留字.txt
  • [Angular] 笔记 16:模板驱动表单 - 选择框与选项
  • [C++基础]-初识模板
  • [CareerCup][Google Interview] 实现一个具有get_min的Queue