MATLAB讲义第五、六章
控制系统matlab仿真讲义

MatLab讲义五:Root-locus Design

MatLab 講義五:Root-locus Design一、根軌跡的基本觀念K 為控制增益 G(S)為轉移函數H(S)為回授函數閉迴路轉移函數)()(1)()()(S H S KG S KG S R S C +=∴極點滿足1+KG(S)H(S)=0 → KS H S G 1)()(-=若S1是閉迴路的極點,即S1必須滿足1. 大小關係:||1)1()1(|K S H S G = R K ∈必為實數2. 相位關係:∠G(S1)H(S1)=±(2q+1)π 0≦K<∞ ± 2q π -∞<K<0 二、根軌跡的作圖規則假設控制系統的開路轉移函數(包括系統增益K )為)()())...()(())...(()()(211S Q S P KP S P S P S Z S Z S K S H S KG n m =+++++= 1. 根軌跡的起始點(K=0)位於開路系統的極點-Pj 2. 根軌跡的終止點(K=±∞)位於開路系統的有限零點-Zi 及n-m 個無限零點上。
3. 當K 趨近±∞時,根軌跡除了m 個分支收斂於開路系統的有限零點外,其餘n-m 個分支點收斂於某些漸近線,漸近線共有n-m 條,與實軸交於A σ,mn Z P nj mi i j a ----=∑∑==11)()(σ。
漸近線角度0,20,)12(<-±=>-+±=k mn q k m n q A A π; θ πθ 4. 根軌跡兩分支或兩分支以上相交的點稱為分離點。
分離點滿足0)()(=dSS H S dG 5. 根軌跡與S 平面上虛軸的交點,可由系統閉迴路方程式)()()(S KP S Q S +=∆建立羅斯表,令某列為零為K ,代入輔助方程解得純虛根即為所求。
二、根軌跡的推廣觀念與變化型1. 由特性方程式→改寫為1+KG(S)=0,定義G(S)為單位開迴路轉移函數,利用此來做根軌跡。
《MATLAB教程及实训》第五章ppt5

例5-12 根据输入参数的个数将例5-11中参数个数使用 varargin和varargout函数,绘制不同线型的曲线,绘制的 曲线与图5-6相同。 function varargout=ex5_12(varargin) x=0:10; lin=length(varargin); %取输入参数个数 在命令窗口中输入 y=lin*ones(11,1); 调用命令: hold on >> y=ex5_12('y','o') if lin==0 varargout = plot(x,y) [2] elseif lin==1 y= plot(x,y,varargin{1}) 2 else >> ex5_12('y','o') plot(x,y,[varargin{1} varargin{2}]) varargout = end [2] varargout{1}=lin ans = 2
5.3.2 函数的输入输出参数
1. 参数的传递 函数的参数传递是将主调函数中的变量值 传给被调函数的输入参数 (1)函数参数传递的是数值 (2)被调函数的输入参数是存放在函数 的工作空间中,与MATLAB的工作空间是 独立的,当调用结束时函数的工作空间被清 除,输入参数也被清除。
2. 输入输出参数的个数
例5-2 使用switch结构判断学生成绩的等级,90分以上 为优,80~90为良,70~80为中,60~70为及格,60分以 下为不及格。
>> score=98; >> s1=fix(score/10); >> switch s1 case {9,10} s='优' case 8 s='良' case 7 s='中' case 6 s='及格' otherwise s='不及格' end
MATLAB经典教程(全)PPT课件

MATLAB的优势
易于学习、使用灵活、高效的数值计 算和可视化功能、强大的工具箱支持。
发展历程
从最初的数值计算工具,逐渐发展成 为一款功能强大的科学计算软件,广 泛应用于工程、科学、经济等领域。
MATLAB工作环境与界面
MATLAB工作环境
包括命令窗口、工作空间、命令历史窗口、当 前文件夹窗口等。
界面介绍
详细讲解MATLAB界面的各个组成部分,如菜 单栏、工具栏、编辑器窗口等。
基本操作
介绍如何在MATLAB环境中创建、保存、运行脚本和函数,以及如何进行基本 的文件操作。
基本数据类型与运算
矩阵大小
使用`size`函数获取矩阵的行数 和列数。
矩阵元素访问
通过下标访问矩阵元素,如 `A(i,j)`表示访问矩阵A的第i行第j 列元素。
矩阵基本操作
包括矩阵的加、减、数乘、转置 等操作。
矩阵运算及性质
矩阵乘法 满足乘法交换律和结合律,但不满足 乘法交换律。
矩阵的逆
对于方阵,若存在一矩阵B,使得 AB=BA=I(I为单位矩阵),则称B 为A的逆矩阵。
Hale Waihona Puke 03 数据分析与可视化数据导入、导出及预处理
数据导入
介绍如何使用MATLAB导入各种格式的数据文件, 如.csv、.txt、.xlsx等。
数据导出
讲解如何将MATLAB中的数据导出为常见的数据文件格式,以 便于数据共享和交换。
数据预处理
阐述数据清洗、数据变换、数据规约等预处理技术,为后续的数 据分析和可视化奠定基础。
01
02
MATLAB基础及应用课件(下)第5-8章

图5-5 拟合曲线
第5章 MATLAB数值计算
第5章 MATLAB数值计算
5.4.4 图形窗口的拟合和统计工具
第5章 MATLAB数值计算
在图5-6中的“绘制拟合图”中选择拟合方 法(可同时选多种);
“显示方程”复核框可以选择是否在图形上 显示拟合多项式;
“绘制残差图”复核框选中时会产生第二幅 图形,该图形显示了每一个数据点与计算出来的 拟合曲线之间的距离。
例如选择“线性”和“三次方”拟合方法, 同时选中两个复核框,产生图形如图5-7所示。
MATLAB的图形窗口中提供了简单方便的数 据拟合和基本统计工具。
数据拟合工具可以对所绘制的曲线使用多种 方法进行拟合;
基本统计工具可提供最小值、最大值、平均 值、中位值、标准差、数据范围等统计运算。
1.数据拟合工具
第5章 MATLAB数值计算
使用数据拟合工具首先需要创建一幅图形,在 命令行窗口输入以下程序:
两个矩阵x和y的相关系 数
第5章 MATLAB数值计算
5.2 数值运算 一、 多项式
名称
创建多项 式
求根
求值
多项式乘 法
多项式除 法
多项式求 导
函数格式 P=[ a0 a1 a2 …an-1
an] P=poly(A) roots(P) polyval(P,A)
polyvalm(P,m)
说明
P为多项式(以下各函数中P均为多项式),a0 a1 a2 … an-1 an为按降幂顺序排列的多项式系数 A为向量。创建以向量A中元素为根的多项式
Matlab详细学习讲义

《MA TLAB软件应用》讲义[第2 / 16次课]第1章基础准备及入门一点名二作业讲评三复习提问MATLAB界面由几大组件组成?MATLAB的搜索路径主要有什么应用途径?四上机练习内容启动MATLAB。
在D盘根目录下,以“学号_姓名”的格式创建文件夹,并在Matlab中将该目录设置为Current Folder。
(利用MA TLAB Toolbar中Current Folder组合框后的按钮)。
以下为本章教学必须掌握的知识点。
在MA TLAB的Command Window中练习以下代码,并观察系统输出,并逐行进行注释。
本次课结束后将代码文件上传。
在MA TLAB程序界面中进行以下操作:1 上机实习内容提示及要求启动MATLAB后,依次练习MA TLAB的菜单项、工具栏和Command Window、Current Folder、Command History、Workspace等主要组件的基本功能,按指定内容在MA TLAB程序界面下进行操作练习。
2 上机实习内容在MATLAB程序界面中进行以下操作:1) Command Window指令窗口在集成窗体和独立窗体之间切换(Undock/Dock按钮)2) 在Command Window中运行以下指令,掌握换行符(...)的使用>> (12+2*(7-4))/3^2>> S=1-1/2+1/3-1/4+1/5-1/6+1/7-1/8>> S=1-1/2+1/3-1/4+…+1/5-1/6+1/7-1/83)在Command Window中分别输入以下数值,并按回车,观察MA TLAB的输出(数值如3, -99, 0.001, 9.456, 1.3e-3, 4.5e33, eps, 等)4)以下实例涉及变量的定义规则,在Command Window中分别输入并按回车,观察MA TLAB的输出结果.输出结果为错误提示时,分析出现错误的原因.>> xyz_4=32.75>> var1=3.09e-5*1028>> 4xyz=32.75>> 4*xyz=198.28>>4,xyz=198.285) 在Command Window中输入下列数学常数,并按回车:eps, i, j, Inf, inf, intmax, NaN, nan, pi, realmax, realmin,观察并分析系统的输出。
MATLAB学习课件第五章

4
5.1 概述
根据程序运行方式的不同,可以将MATLAB程序设计分为
两种方式:
一种是在命令窗口中逐条输入命令,另一种是将相关
的命令存储在一个M文件中。
前者称为命令行方式,又称为指令驱动模式。后者称
为M文件的程序运行方式。
命令行方式 M文件编程方式 命令逐条解释执行 自动一次执行完文件中所有命令 简单,直观 不直观 速度慢,执行过程不能保留, 速度快,可以重复执行文件 不能重复执行
25
2、while语句
while语句的一般格式为: while 表达式 循环体语句 end while语句为条件循环语句,循环次数不确定,只要循环条件
表达式的结果非零,语句体就重复执行,直到循环条件表达 式的结果为零,则跳出循环
26
5.3.4 程序流的控制
与控制程序执行过程相关的语句主要有break语句、
5.3 MATLAB程序结构
MATLAB程序的控制结构有3种:
顺序结构、选择结构和循环结构。
按照程序设计的观点, 任何算法功能都可以通过由程序模
块组成的三种基本程序结构的组合来实现。
11
5.3.1 顺序结构
顺序结构是指程序按程序语句或模块在执行流中的顺序逐
个执行,直到执行到程序的最后一个语句。
函数式M文件 接受输入参数,有返回值 文件中定义变量为局部变量, 文件执行完毕时,局部变量 清除,不保留在工作空间
要通过函数调用的方式调用 才能运行 用户需要自定义某种具体算 法时使用
5.2.3 M文件操作
对M文件常用的操作有:打开M文件、新建M文件、编辑
M文件、保存M文件和运行M文件等。
10
例5.8:判断读取矩阵是否正确。 解:程序如下 n=4; a=magic(3) try a_n=a(n,:), %取a的第n 行元素 catch a_n=a(end, : ), %如取a的第n 行出错,则改取a的最后一行 end lasterr %显示出错原因 执行结果如下; a= 8 1 6 3 5 7 4 9 2 a_n = 9 2 ans = Attempted to access a(4,:); index out of bounds because size(a)=[3,3].
《Matlab教案》课件

《MATLAB教案》PPT课件第一章:MATLAB概述1.1 MATLAB简介介绍MATLAB的历史和发展解释MATLAB的含义(Matrix Laboratory)强调MATLAB在工程和科学计算中的应用1.2 MATLAB界面介绍MATLAB的工作空间解释MATLAB的菜单栏和工具栏演示如何创建、打开和关闭MATLAB文件1.3 MATLAB的基本操作介绍MATLAB的数据类型演示如何进行矩阵运算解释MATLAB中的向量和矩阵运算规则第二章:MATLAB编程基础2.1 MATLAB脚本编程解释MATLAB脚本文件的结构演示如何编写和运行MATLAB脚本强调注释和代码的可读性2.2 MATLAB函数编程介绍MATLAB函数的定义和结构演示如何创建和使用MATLAB函数强调函数的重用性和模块化编程2.3 MATLAB编程技巧介绍变量和函数的命名规则演示如何进行错误处理和调试强调代码的优化和性能提升第三章:MATLAB数值计算3.1 MATLAB数值解算介绍MATLAB中的数值解算工具演示如何解线性方程组和不等式解释MATLAB中的符号解算和数值解算的区别3.2 MATLAB数值分析介绍MATLAB中的数值分析工具演示如何进行插值、拟合和数值积分解释MATLAB中的误差估计和数值稳定性3.3 MATLAB优化工具箱介绍MATLAB优化工具箱的功能演示如何使用优化工具箱进行无约束和约束优化问题解释MATLAB中的优化算法和参数设置第四章:MATLAB绘图和可视化4.1 MATLAB绘图基础介绍MATLAB中的绘图命令和函数演示如何绘制二维和三维图形解释MATLAB中的图形属性设置和自定义4.2 MATLAB数据可视化介绍MATLAB中的数据可视化工具演示如何绘制统计图表和散点图解释MATLAB中的数据过滤和转换4.3 MATLAB动画和交互式图形介绍MATLAB中的动画和交互式图形功能演示如何创建动画和交互式图形解释MATLAB中的图形交互和数据探索第五章:MATLAB应用案例5.1 MATLAB在信号处理中的应用介绍MATLAB在信号处理中的基本概念演示如何使用MATLAB进行信号处理操作解释MATLAB在信号处理中的优势和应用场景5.2 MATLAB在控制系统中的应用介绍MATLAB在控制系统中的基本概念演示如何使用MATLAB进行控制系统分析和设计解释MATLAB在控制系统中的优势和应用场景5.3 MATLAB在图像处理中的应用介绍MATLAB在图像处理中的基本概念演示如何使用MATLAB进行图像处理操作解释MATLAB在图像处理中的优势和应用场景《MATLAB教案》PPT课件第六章:MATLAB Simulink基础6.1 Simulink简介介绍Simulink作为MATLAB的一个集成组件解释Simulink的作用:模型化、仿真和分析动态系统强调Simulink在系统级设计和多领域仿真中的优势6.2 Simulink界面介绍Simulink库浏览器和模型窗口演示如何创建、编辑和运行Simulink模型解释Simulink中的块和连接的概念6.3 Simulink仿真介绍Simulink仿真的基本过程演示如何设置仿真参数和启动仿真解释Simulink仿真结果的查看和分析第七章:MATLAB Simulink高级应用7.1 Simulink设计模式介绍Simulink的设计模式,包括连续、离散、混合和事件驱动模式演示如何根据系统特性选择合适的设计模式解释不同设计模式对系统性能的影响7.2 Simulink子系统介绍Simulink子系统的概念和用途演示如何创建和管理Simulink子系统解释子系统在模块化和层次化设计中的作用7.3 Simulink Real-Time Workshop介绍Simulink Real-Time Workshop的功能演示如何使用Real-Time Workshop进行代码解释代码对于硬件在环仿真和嵌入式系统开发的重要性第八章:MATLAB Simulink库和工具箱8.1 Simulink库介绍Simulink库的结构和分类演示如何访问和使用Simulink库中的块解释Simulink库对于模型构建和功能复用的意义8.2 Simulink工具箱介绍Simulink工具箱的概念和功能演示如何安装和使用Simulink工具箱解释Simulink工具箱在特定领域仿真和分析中的作用8.3 自定义Simulink库介绍如何创建和维护自定义Simulink库演示如何将自定义块添加到库中解释自定义库对于个人和组织级模型共享的重要性第九章:MATLAB Simulink案例分析9.1 Simulink在控制系统中的应用介绍控制系统模型在Simulink中的构建演示如何使用Simulink进行控制系统设计和分析解释Simulink在控制系统教育和研究中的应用9.2 Simulink在信号处理中的应用介绍信号处理模型在Simulink中的构建演示如何使用Simulink进行信号处理仿真解释Simulink在信号处理领域中的优势和实际应用9.3 Simulink在图像处理中的应用介绍图像处理模型在Simulink中的构建演示如何使用Simulink进行图像处理仿真解释Simulink在图像处理领域中的优势和实际应用第十章:MATLAB Simulink项目实践10.1 Simulink项目实践流程介绍从需求分析到模型验证的Simulink项目实践流程演示如何使用Simulink进行项目规划和实施解释Simulink在项目管理和协作中的作用10.2 Simulink与MATLAB的交互介绍Simulink与MATLAB之间的数据交互方式演示如何在Simulink中使用MATLAB函数和脚本解释混合仿真模式对于复杂系统仿真的优势10.3 Simulink项目案例分析具体的Simulink项目案例演示如何解决实际工程问题解释Simulink在工程教育和项目开发中的应用价值《MATLAB教案》PPT课件第十一章:MATLAB App Designer入门11.1 App Designer简介介绍App Designer作为MATLAB中的应用程序开发环境解释App Designer的作用:快速创建跨平台的MATLAB应用程序强调App Designer在简化MATLAB代码部署和用户交互中的优势11.2 App Designer界面介绍App Designer的用户界面和工作流程演示如何创建新应用和编辑应用界面解释App Designer中的组件和布局的概念11.3 App Designer编程介绍App Designer中的MATLAB编程模式演示如何使用App Designer中的MATLAB代码块解释App Designer中事件处理和应用程序生命周期管理的重要性第十二章:MATLAB App Designer高级功能12.1 App Designer用户界面设计介绍App Designer中用户界面的定制方法演示如何使用样式、颜色和主题来美化应用界面解释用户界面设计对于提升用户体验的重要性12.2 App Designer数据模型介绍App Designer中的数据模型和模型视图概念演示如何创建、使用和绑定数据模型和视图解释数据模型在应用程序中的作用和重要性12.3 App Designer部署和分发介绍App Designer应用程序的部署和分发流程演示如何打包和发布应用程序解释如何为不同平台安装和运行App Designer应用程序第十三章:MATLAB App Designer案例研究13.1 图形用户界面(GUI)应用程序设计介绍使用App Designer设计的GUI应用程序案例演示如何创建交互式GUI应用程序来简化MATLAB脚本解释GUI应用程序在数据输入和结果显示中的作用13.2 数据分析和可视化应用程序设计介绍使用App Designer进行数据分析和可视化的案例演示如何创建应用程序来处理和显示大型数据集解释App Designer在数据分析和决策支持中的优势13.3 机器学习和深度学习应用程序设计介绍使用App Designer实现机器学习和深度学习模型的案例演示如何将MATLAB中的机器学习和深度学习算法集成到应用程序中解释App Designer在机器学习和深度学习应用部署中的作用第十四章:MATLAB App Designer实战项目14.1 App Designer项目规划和管理介绍App Designer项目的规划和管理方法演示如何组织和维护大型应用程序项目解释项目管理和版本控制对于团队协作的重要性14.2 App Designer与MATLAB的集成介绍App Designer与MATLAB之间的数据和功能集成演示如何在App Designer中调用MATLAB函数和脚本解释集成MATLAB强大计算和分析能力的重要性14.3 App Designer项目案例实现分析具体的App Designer项目案例实现过程演示如何解决实际工程项目中的问题解释App Designer在工程项目实践中的应用价值第十五章:MATLAB App Designer的未来趋势15.1 App Designer的新功能和技术介绍App Designer的最新功能和技术发展演示如何利用新功能和技术提升应用程序的性能和用户体验强调持续学习和适应新技术的重要性15.2 App Designer在跨平台开发中的应用介绍App Designer在跨平台应用程序开发中的优势演示如何创建适用于不同操作系统的应用程序解释跨平台开发对于扩大应用程序市场的重要性15.3 App Designer的未来趋势和展望讨论App Designer在未来的发展趋势和潜在应用领域激发学生对于应用程序开发和创新的兴趣强调持续探索和创造新应用的重要性重点和难点解析本文档为您提供了一份详尽的《MATLAB教案》PPT课件,内容涵盖了MATLAB 的基本概念、编程基础、数值计算、绘图和可视化、应用案例、Simulink的基础知识、高级应用、库和工具箱的使用、案例分析以及项目实践、App Designer 的基础知识、高级功能、案例研究、实战项目和未来趋势等方面的内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第五、六章 IIR 滤波器的设计滤波器结构:一、系统函数的表示法及其转换 1、表示方法 (1)传递函数法若NMz N a z a z M b z b b z H ----++++++=)()2(1)()2()1()(11则a=[1 a(2) a(3)… a(N)]b=[b(1) b(2)… b(M)] (2)零极点增益法若∏∏-=--=---=101101)1()1()(N k kM i iz zzz kz H则 零点向量 Z=[z 1 z 2 z M -1];极点向量 P=[z 1,z 2,…,z N -1] k 为系统增益。
(3)部分分式法 若)(1)1()1()(1)()1(1)1()(N M nz N M k k zn p n r z p r z H ----+-+++-++-=则极点向量 p=[p(1) p(2) … p(n)]其对应系数向量 r=[r(1) r(2) … r(n)]余数多项式系数向量 k=[k(1) k(2) … k(M-N+1)] (4)二阶分式法把H(z)划成二阶因式∏∏==----++++==Nk Nk k k k k k k k z zz z z H z H 112211022110)()(αααβββ 则其二阶因式为:b01 b11 b21 1 a11 a21 b02 b12 b22 1 a21 a22 Sos= …b0N b1N b2N 1 a1N a2N 2、各表示方法的转换:(1)由传递函数转换为零极点增益(tf2zp ) 对应,由零极点增益转换为传递函数(zp2tf ) 调用方法:[z,p,k]=tf2zp(b,a) [b,a]=zp2tf(z,p,k)――a,b 的长度要相等,不等的话要补零(2)由零极点增益转换为二次分式(zp2sos ) 对应,由二次分式转换为零极点增益(sos2zp )调用方法:[sos,g]=zp2sos(z,p,k),g 为整个系统的增益,即H(z)=g*H1(z)*H2(z)…*HN(z)调用方法:sos2zp(z,p,k) =[sos,g],g 为整个系统的增益,默认为1。
(3)二次分式转换为传递函数(sos2tf) 调用方法:[b,a]=sos2tf(sos)对应,由传递函数转换为二次分式 (tf2sos),调用方式: [sos,g]=tf2sos(b,a)例1:>> b=[1 3 5 0]; >> a=[1 8 1 3]; >> [z,p,k]=tf2zp(b,a) z =0 -1.5000 + 1.6583i -1.5000 - 1.6583i p =-7.9216 -0.0392 + 0.6141i -0.0392 - 0.6141i k = 1例2:差分方程:16y(n)+12y(n-1)+2y(n-2)-4y(n-3)-y(n-4)=x(n)-3x(n-1)+11x(n-2)-27x(n-3)+18y(n-4)程序:>> b=[1 -3 11 -27 18]; >> a=[16 12 2 -4 -1]; >> [sos,g]=tf2sos(b,a) sos =1.0000 -3.00002.0000 1.0000 -0.2500 -0.1250 1.0000 0.0000 9.0000 1.0000 1.0000 0.5000 g =0.0625则其级联结构方程为:21221215.0191125.025.012310625.0)(-------+++∙--+-∙=zz z z z z z z H 由此可画出其结构图。
例3:H(z)=1+16.0625z-4+z -8>> b=[1 0 0 0 16.0625 0 0 0 1]; >> [sos,G]=tf2sos(b,1) sos =1.0000 -2.8284 4.0000 1.0000 0 0 1.0000 2.8284 4.0000 1.0000 0 0 1.0000 -0.7071 0.2500 1.0000 0 0 1.0000 0.7071 0.2500 1.0000 0 0 G = 1其传递函数应写成:H(z)=(1+2.83z -1+4z -2)(1-2.83z -1+4z -2)(1+0.71z -1+0.25z -2)(1-0.71z -1+0.25z -2)滤波器的设计: 一、模拟滤波器的设计1、巴氏模拟原型滤波器的设计:NCj H 211)(⎪⎪⎭⎫ ⎝⎛ΩΩ+=Ω用buttap 函数,用于设计N 阶归一化(Ωc=1)巴氏模拟低通滤波器。
调用格式: [z0,p0,k0]=buttap(N)其中:N ――为巴氏滤波器阶数z0,p0,0k ――为归一化滤波器的零点、极点、增益 所设计的N 阶巴氏模拟原型滤波器的归一化传递函数为: )()2)(1()()()(pN s p s p s ks P s Z s H ---==若要设计未归一化(Ωc ≠1)巴氏低通滤波器,则要用Ωc 乘以p0、z0,而分子k0乘以ΩN c,因为极点有N 个。
例1:设计阶数为3,5,10,15的巴氏模拟原型滤波器。
并画出幅频响应曲线。
程序for i=1:4;switch icase 1N=3;case 2N=5;case 3N=10;case 4;N=15;end;[z,p,k]=buttap(N);[b,a]=zp2tf(z,p,k);[h,w]=freqs(b,a,n);Ah=abs(h);subplot(2,2,i),plot(w,Ah);axis([0 2 0 1]);xlabel('w/wc');ylabel('|H(jw)|.^2'); title(['filer N=',num2str(N)]);grid;end;2、巴氏滤波器的最小阶数的求法:巴氏模拟原型滤波器的阶数越大,响应曲线在通带内越平缓,在阻带内的衰减越大。
如何选择一个合适的阶数,使其刚好能实现系统的最优性能,而实现不复杂。
阶数选择函数buttord:调用方式:[N,OmegaC]=buttord(OmegaP,OmegaS,Rp,Rs,’s’)N――返回的滤波器最小阶数Wc――3dB频率OmegaP , OmegaS――通带、阻带截止频率,为归一化频率,范围为[0,1],对应π。
Rp,Rs――通带、阻带内的衰减s――表示设计的是模拟滤波器例1:设通带、阻带截止频率fp=5kHz、fs=12kHz,通带、阻带最大衰减Rp=1dB,Rs=30dB,要求设计巴氏低通滤波器。
>> OmegaP=2*pi*5000;OmegaS=2*pi*12000;>> Rp=1;Rs=30;>> [N,OmegaC]=buttord(OmegaP,OmegaS,Rp,Rs,'s')%确定阶数NN =5OmegaC =3.7792e+004>> [z0,p0,k0]=buttap(N)%确定传递函数z0 =[]p0 =-0.3090 + 0.9511i-0.3090 - 0.9511i-0.8090 + 0.5878i-0.8090 - 0.5878i-1.00001>> p=p0*OmegaC;%去归一化>> k=k0*OmegaC^Nk =7.7094e+022>> p=p0*OmegaCp =1.0e+004 *-1.1678 + 3.5943i-1.1678 - 3.5943i-3.0575 + 2.2214i-3.0575 - 2.2214i-3.7792>> b=k*real(poly(z))b =7.7094e+022>> a=real(poly(p))a =1.0e+022 *0.0000 0.0000 0.0000 0.0000 0.0007 7.7094由结果可见,因为Ωc相当大,ΩN达1022数量级,致使向量ca中的其它系数无法显示。
因此最好仍用归一化系数表示滤波器传递函数。
即归一化传递函数为:>> b0=real(poly(z0))1>> a0=real(poly(p0)) a0 =1.0000 3.2361 5.2361 5.2361 3.2361 1.00001)37792(2361.3)37792(2361.5)37792(2361.5)37792(2361.3)37792(1)(2345+++++=ss s s s s H a 为检验此滤波器在Ωp 、Ωs 处的幅频特性,可用freqs 函数,调用格式:H =freqs(b,a,w)b,a ――滤波器分子、分母系数向量w ――自变量的频率向量,不允许取标量,故至少要同时取两个频点 若b 、a 取归一化值b0、a0,w 也应归一化为w/OmegaC ,即 H= freqs(b0,a0,w/ OmegaC )本例中,取OmegaP,OmegaS 作为w,即w=[OmegaP,OmegaS],并对其归一化为w/OmegaC>> b0=real(poly(z0)) b0 = 1>> a0=real(poly(p0)) a0 =1.0000 3.2361 5.2361 5.2361 3.2361 1.0000>> w=[5000,12000]*2*pi/37792; >> H=freqs(b0,a0,w);键入freqs(b,a),就可得出系统的频率特性二、IIR 数字滤波器的设计 1、冲激响应不变法采用impinvar 函数[bz,az]=impinvar(b,a,fs,tol)bz,az ――转换的分子分母向量 fs ――采样频率,默认值为1Hztol ――误差容限,表示转换后的离散系统函数是否有重复的极点。
实现思路:先把Ha(s)的分子分母向量ba,aa 利用residue 函数转换为极点留数Ra,pa 及直接项Ga,再把模拟滤波器的极点映射为数字极点pd=e pa*T ,得到H(z)的极点留数形式,再用residuez 把H (z )转换为传递函数形式。
function [bd,ad]=impinvar_my(ba,aa,Fs)[Ra,pa,Ga]=residue(ba,aa);%把模拟滤波器系数向量变为极点留数形式 T=1/Fs;pd=exp(pa*T);Rd=Ra*T%将模拟极点留数转换为数字极点留数 [bd,ad]=residuez(Rd,pd,Ga)%将极点留数形式转换为传递函数形式 bd=real(bd),ad=real(ad)例1:利用脉冲响应不变法,把651)(2+++=s s s s H 转换为数字滤波器,T =0.1。