MATLAB讲义第五、六章
- 格式:doc
- 大小:133.00 KB
- 文档页数:12
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)為單位開迴路轉移函數,利用此來做根軌跡。
《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教案》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 的基础知识、高级功能、案例研究、实战项目和未来趋势等方面的内容。
第一章 Matlab 基本介绍一、数学建模常用软件简介数值计算 Matlab符号计算 Maple , Mathematica统计软件 SPSS, SAS优化软件 LINGOOFFICE 软件 Word , Excel二、matlab 界面介绍1、command window (命令窗口)2、wordspace (工作空间)3、command history (历史命令窗口)4、菜单(1)File->import data(2)View->desklayout->default(3)Help三、一些常用命令1、clc (清空命令窗口)2、clear (清空工作空间变量)3、save (保存工作空间中变量到指定文件)4、load (导入文件中数据)(注:双击数据文件也可)5、help (帮助)6、doc (查询帮助文档)第二章 数值计算一、数据类型1、主要四大类数据类型:数值型,字符串,符号型(代数式),逻辑型1⎧⎪⎧⎨⎨⎪⎩⎩、浮点数值型长整2、整型短整 字符串 name=’lisan ’a=’x ’符号型 用syms , sym 定义逻辑型 取值只能为0或1,即真或假2 常用运算符数值运算:+ , - ,* , / , \, ^,.*, ./, .^关系运算 (运算结果为逻辑型,即0或1)>,<,>=,<=,==,~=逻辑运算(运算结果为逻辑型,即0或1)与或非,&,|,~any, all基本数学函数三角sin ,asin,cos,acos,tan,atan,cot,acot指数exp,log,log2,log10,sqrt其他abs,real,imag,sign,mod,floor,ceil特殊字符, ; . : [] () @ %2、变量命名规则(1)以字母开头,可包含字母、数字、下划线,不超过31位字符。
(2)区分大小写。
3、常量i, j 虚数单位pi , 圆周率eps,infNaN4、数字的输入输出格式format 格式参数shortlongrat5、字符串(1)字符串生成name=’lisan’a=char(‘l’,’i’)size(name) 查看字符串长度length(name) 查看字符串长度(2)字符与数组之间的转换double 字符转换为ASC码num2str 数字转化为字符str2num 字符转位数字a=’2’b=a*2b=double(a)*2b=str2num(a)*2(3)字符串操作相关函数。
《Matlab仿真应用详解》一、基本概念1.1、什么是计算机仿真1、仿真定义基本思想:仿真的基本思想是利用物理的或数学的模型来类比模仿现实过程,以寻求过程和规律。
它的基础是相似现象,相似性一般表现为两类:几何相似性和数学相似性。
当两个系统的数学方程相似,只是符号变换或物理含义不同时,这两个系统被称为“数学同构”。
仿真的方法可以分为三类:(1)实物仿真。
它是对实际行为和过程进行仿真,早期的仿真大多属于这一类。
物理仿真的优点是直观、形象,至今在航天、建筑、船舶和汽车等许多工业系统的实验研究中心仍然可以见到。
比如:用沙盘仿真作战,利用风洞对导弹或飞机的模型进行空气动力学实验、用图纸和模型模拟建筑群等都是物理仿真。
但是要为系统构造一套物理模型,不是一件简单的事,尤其是十分复杂的系统,将耗费很大的投资,周期也很长。
此外,在物理模型上做实验,很难改变系统参数,改变系统结构也比较困难。
至于复杂的社会、经济系统和生态系统就更无法用实物来做实验了。
(2)数学仿真。
就是用数学的语言、方法去近似地刻画实际问题,这种刻画的数学表述就是一个数学模型。
从某种意义上,欧几里德几何、牛顿运动定律和微积分都是对客观世界的数学仿真。
数学仿真把研究对象(系统)的主要特征或输入、输出关系抽象成一种数学表达式来进行研究。
数学模型可分为:●解析模型(用公式、方程反映系统过程);●统计模型(蒙特卡罗方法);●表上作业演练模型然而数学仿真也面临一些问题,主要表现在以下几个方面:●现实问题可能无法用数学模型来表达,即刻画实际问题的表达式不存在或找不到;●找到的数学模型由于太复杂而无法求解;●求出的解不正确,可能是由模型的不正确或过多的简化近似导致的。
(3)混合仿真。
又称为数学—物理仿真,或半实物仿真,就是把物理模型和数学模型以及实物联合在一起进行实验的方法,这样往往可以获得较好的效果。
2、计算机仿真计算机仿真也称为计算机模拟,就是利用计算机对所研究系统的结构、功能和行为以及参与系统控制的主动者——人的思维过程和行为,进行动态性的比较和模仿,利用建立的仿真模型对系统进行研究和分析,并可将系统过程演示出来。
MATLAB王春兴编物理与电子科学学院2009.9第一章MATLAB简介MA TLAB的原意为MATrix LABoratory,即矩阵实验室,是由在数值线性代数领域颇有影响的Cleve Moler博士首创的。
后来由Moler博士等一批数学家和软件专家组建了MathWorks软件公司,专门从事MATLAB的扩展与改进。
MA TLAB不仅具有强大的数值计算能力,而且具有数据图示功能和符号运算功能。
特别是大量的工具箱,扩展了应用领域,是高校学生、教师、科研人员和工程计算人员的最好选择,是数学建模必不可少的工具。
1.1MATLAB的主要特点1.功能强大MATLAB以复数矩阵作为基本编程单元,可以方便地处理诸如矩阵变换及运算、多项式运算、微积分运算、线性与非线性方程求解、常微分方程求解、偏微分方程求解、插值与拟合、特征值问题、统计及优化问题。
2.语言简单MATLAB语句书写简单,表达式的书写如同在稿纸中演算一样,允许用户以数学形式的语言编写程序,控制语句同C语言相近,并提供了强大的帮助功能。
3.扩充能力强MATLAB本身就像一个解释系统,用户可以方便地看到函数的源程序,也可以方便地开发自己的程序。
另外,MATLAB可以方便地和FORTRAN、C等语言进行接口,还和Maple有很好的接口。
4.编程易从形式上看,MATLAB程序文件是一个纯文本文件,扩展名为M,调试方便。
1.2MATLAB的窗口1.启动MATLAB2.工具栏3.命令窗口MATLAB的输入命令和输出结果的窗口,在这里输入的命令会立即执行并输出结果。
可用UP键盘将以前执行的命令调出。
1.3MATLAB的通用命令1.管理命令和函数:2.管理变量和工作空间3.控制命令窗口4.使用文件和工作环境5.启动和退出MA TLAB第二章数值计算2.1数字及运算1.数值MA TLAB中采用十进制数,并可用科学表示法,虚数用i或j 表示。
5 -39 0.0025 1.52e-20 6.9e13 3.0i -3+4i浮点数的范围大致为10-308~10308。
第五、六章 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。