ImageVerifierCode 换一换
格式:PPT , 页数:207 ,大小:6.18MB ,
资源ID:14027681      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/14027681.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(MATLAB仿真在通信与电子工程中的应用.ppt)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

MATLAB仿真在通信与电子工程中的应用.ppt

1、单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,2,章,MATLAB,仿真,第,2,章,MATLAB,仿真,2.1,MATLAB,介绍,2.2,MATLAB,编程仿真,2.3,Simulink,仿真,2.1,MATLAB,介绍,2.1.1,MATLAB,的特点,MATLAB,是,MathWorks,公司开发的一种跨平台的,用于矩阵数值计算的简单高效的数学语言,与其它计算机高级语言如,C,,,C+,,,Fortran,,,Basic,,,Pascal,等相比,,MATLAB,语言编程要简洁得多,编程语句更加接近数学描述,可读性好,其强大的图形功能和可视化数据处理能力也是其它高

2、级语言望尘莫及的。对于具有任何一门高级语言基础的读者来说,学习,MATLAB,十分容易。,但是,要用好,MATLAB,却不是在短时间就可以达到的。这并不是因为,MATLAB,语言复杂难懂,而是实际问题的求解往往更多的是需要使用者具备数学知识和专业知识。,MATLAB,使得人们摆脱了常规计算机编程的繁琐,让人们能够将大部分精力投入到研究问题的数学建模上。可以说,应用,MATLAB,这一数学计算和系统仿真的强大工具,可以使科学研究的效率得以成百倍的提高。,目前,,MATLAB,已经广泛用于理工科大学从高等数学到几乎各门专业课程之中,成为这些课程进行虚拟实验的有效工具。在科研部门,,MATLAB,更

3、是极为广泛地得到应用,成为全球科学家和工程师进行学术交流首选的共同语言。在国内外许多著名学术期刊上登载的论文,大部,分的数值结果和图形都是借助,MATLAB,来完成的。,与其它高级语言相比较,,MATLAB,具有独特的优势:,(1),MATLAB,是一种跨平台的数学语言。采用,MATLAB,编写的程序可以在目前所有的操作系统上运行,(,只要这些系统上安装了,MATLAB,平台,),。,MATLAB,程序不依赖于计算机类型和操作系统类型。,(2),MATLAB,是一种超高级语言。,MATLAB,平台本身是用,C,语言写成的,其中汇集了当前最新的数学算法库,是许多专业数学家和工程学者多年的劳动结晶

4、使用,MATLAB,意味着站在巨人的肩膀上观察和处理问题,所以在编程效率,程序的可读性、可靠性和可移植性上远远超,过了常规的高级语言。这使得,MATLAB,成为了进行科学研究和数值计算的首选语言。,(3),MATLAB,语法简单,编程风格接近数学语言描述,是数学算法开发和验证的最佳工具。,MATLAB,以复数矩阵运算为基础,其基本编程单位是矩阵,使得编程简单,而功能极为强大。对于常规语言中必须使用许多语句才能实现的功能,如矩阵分解、矩阵求逆、积分、快速傅立叶变换,甚至串口操作、声音的输入输出等,在,MATLAB,中均用一两句指令即可实现。而且,,MATLAB,中的数值算法是经过千锤百炼的,比

5、用户自己编程实现的算法的可信度和可靠性都大为提高。,(4),MATLAB,计算精度很高。,MATLAB,中数据是以双精度存储的,一个实数采用,8,字节存储,而一个复数则采用,16,字节存储。通常矩阵运算精度高达,10,15,以上,完全能够满足一般工程和科学计,算的需要。与其它语言相比,,MATLAB,对计算机内存、硬盘空间的要求也是比较高的。,(5),MATLAB,具有强大的绘图功能。利用,MATLAB,的绘图功能,可以轻易地获得高质量的,(,印刷级,),曲线图。具有多种形式来表达二维、三维图形,并具有强大的动画功能,可以非常直观地表现抽象的数值结果。这也是,MATLAB,广为流行的重要原因之

6、一。,(6),MATLAB,具有串口操作、声音输入输出等硬件操控能力。随着版本的提高,这种能力还会不断加强,使得人们利用计算机和实际硬件相连接的半实物仿真的梦想得以轻易实现。,(7),MATLAB,程序可以直接映射为,DSP,芯片可接受的代码,大大提高了现代电子通信设备的研,发效率。,(8),MATLAB,的程序执行效率比其它语言低。,MATLAB,程序通常是解释执行的,在执行效率和速度上低于其它高级语言,当然如果对执行效率有特别要求,可以采用,C,语言编制算法,然后通过,MATLAB,接口在,MATLAB,中执行。事实上,,MATLAB,自带的许多内部函数均是用,C,语言编写并编译的,因此利

7、用,MATLAB,内部函数的程序部分运行速度并不比其它语言中相应函数低。,本书给出的程序和例子均在,MATLABReleaseR13,(,6.5.1,)(,完全安装)版本下验证通过,。,2.1.2,MATLAB,快速入门,1.,MATLAB,的启动和退出,本书以,Windows2000,下的,MATLAB6.5.1,为例,在其它,Windows,版本下操作是类似的。假定已经正确安装了,MATLAB,的,Windows,版本,从,Windows,的“开始,|,程序”菜单中找到,MATLAB,图标,单击该图标即可进入,MATLAB,环境。进入,MATLAB,后操作环境通常显示的是,MATLAB,的

8、命令窗口,在该窗口中可以输入各种,MATLAB,命令和语句,通过命令方式与,MATLAB,进行交互。虽然,MATLAB,也像通常的,Windows,程序一样提供了菜单和快捷工具栏,通过它们可以很方便地对,MATLAB,进行操作,但是建议读者尽可能使用命令方式去操作,MATLAB,,,虽然刚开始可能觉得不太方便,但是与菜单和快捷工具方式相比,命令方式的功能最为强大,也最能体现,MATLAB,的精髓,,而且命令方式本身也是跨平台的。,MATLAB,命令窗口中,输入命令的提示符为“,”,。,在,MATLAB,命令窗口中,键入命令“,quit”,或“,exit”,并按回车键,(,回车,),,即可退出,

9、MATLAB,环境。,2.,在,MATLAB,中如何获取帮助,MATLAB,几乎涉及了所有工程领域的数学问题,没有一本书能够完全覆盖读者所需要解决的问题。因为,MATLAB,帮助文档是惟一完全覆盖,MATLAB,功能函数的权威技术文件,所以,善于,利用,MATLAB,的帮助文档将是非常重要的。,在,MATLAB,命令窗口中,使用命令“,intro”,可以进入,MATLAB,简介演示。而使用命令“,demo”,可以打开,MATLAB,的演示窗口,其中包含了大量,MATLAB,程序的演示实例,对于初学者具有很高的参考价值。如果读者需要打开,MATLAB,的帮助文档,使用命令“,helpwin,”,

10、即可。如果要用浏览器打开,html,形式的帮助文档,可使用命令“,doc”,。,若需要打开,MATLAB,某条命令或函数用法的,html,帮助文档,则只需输入命令,doc,命令或函数名回车,即可。,如果要在命令窗口中显示帮助信息,则只需输入命令“,help”,即可。若需要了解,MATLAB,某条命令或函数的用法,使用命令,help,命令或函数名回车,即可。例如,要查询自然对数函数命令“,log”,的用法,应使用命令,helplog,回车,另外,,MATLAB,帮助文档还以,PDF,电子文件格式提供,存放在,MATLAB,的安装目录中,读者可以用,AcrobatReader,等软件阅读。读者也可

11、以通过介绍,MATLAB,的若干网站获取和交流应用,MATLAB,的心得体会。,3.,在,MATLAB,命令窗口中计算数学表达式,MATLAB,语言是一种解释性语言,它提供了方便的演算纸式的数学计算方式。在,MATLAB,命令窗口中输入数学表达式,然后回车即可得出计算结果。,MATLAB,的数学表达式与数学公式表达极为相似,也非常类似于,C,语言的表达。例如,计算表达式,2,sin(0.3)/(1+KF(5KF),的值,在,MATLAB,命令窗口中输入以下语句并回车就能得到结果。,2*,sin(0.3*pi)/(1+,sqrt,(5),回车,ans,=,0.5000,以上语句中,“,pi”,是

12、MATLAB,已定义的常数,即圆周率,;“,ans,”,是表达式计算结果的默认存储变量。,MATLAB,定义的常数中,常用的有以下一些:,ans,最新表达式计算结果的默认存储变量,inf,表示正无穷大,+,NaN,非,数,例如,0/0,将得到非数,i,或,j,虚数单位,即,eps,从,1.0,到下一个最大浮点数的距离,常用来作为浮点计算相对误差使用,pi,圆周率,realmin,MATLAB,所能表示的最小正实数,realmax,MATLAB,所能表示的最大正实数,MATLAB,中常用的算术运算符有,+,、,-,、*、,/,、,、,、,等,含义如下:,+,数量加法,矩阵加法,-,数量减法,矩

13、阵减法,*数量乘法,矩阵乘法,.*,数组乘法,/,数量除法,矩阵右除,数量除法,(,左除,),矩阵左除,./,数组除法,矩阵乘方,.,数组乘方,矩阵的共轭转置,对于一个复数而言将得到其共轭复数,.,矩阵转置,(,不共轭,),关于这些算术运算符的详细用法以及示例,可以用,docarithmeticoperators,回车,打开,html,格式的帮助文档查看。,4.,在,MATLAB,命令窗口中输入简单矩阵,例如,输入矩阵,时可以采用下面的方法:,A=,1,2,3;4,5,6;7,8,9,回车,A=,1 2 3,4 5 6,7 8 9,(,2-1),MATLAB,中可以采用逗号或空格来分隔矩阵中的

14、列元素,而采用分号或回车符来分隔矩阵的行,整个矩阵包含在方括号“”内。采用命令“,whos,”,可以查看用户在,MATLAB,工作空间,(,内存,),中所存储的变量情况。使用命令“,workspace”,就可以打开工作空间浏览器窗口,双击其中的变量可以对其值进行修改。,命令“,clear,变量名”可以清除相应的变量,而命令“,clear”,则清除所有用户自定义的变量。系统的默认变量是不会被“,clear”,清除的。为了避免前面的程序对后续程序的影,响,通常在程序的开始使用“,clear”,语句来复位,MATLAB,的内存空间。,使用命令“,clc,”,可以清除命令窗口中的显示字符。使用命令“,

15、home”,可以使得命令窗口中提示符光标回到窗口的左上角。这两个命令仅仅影响屏幕的显示,不会清除内存中的变量。,5.,MATLAB,的语句和变量,MATLAB,语句可以有两种形式:,(,1),表达式;,(,2),变量名表达式。,在第一种形式中,表达式计算的值将存放于默认变量“,ans,”,中;而在第二种形式中,表达式的值将存放于变量名所指定的变量中。,MATLAB,中多条语句可以在一行内书写,以逗号“,”,或分号“,;”,相互隔开。如果是以分号隔开的,则计算结果不显示在屏幕上,否则回车后,将显示计算结果。例如,计算,1+2+3+100,的值以及,100,的阶乘,100!,。,s=,1:100,

16、sum(s),p=prod(s),回车,ans,=,5050,p=,9.3326e+157,MATLAB,中的变量是区分大小写的,变量、函数名必须以字母开头,其后最多可接,19,个字母、数字或下划线。例如:,a,和,A,是不同的变量,,p121-6,,,yinyue3,是合法的变量名,而,3,sd,则是非法的变量。在变量或函数的命名时,应该养成良好的命名习惯,命名不要和,MATLAB,中的系统函数或变量相同。特别地,如果计算中存在复数运算,那么就应该避免采用“,i”,和“,j”,作为,循环变量。,MATLAB,中可以方便地进行复数运算,例如计算,,,其中,,a=15+j3,,,b=5e,j2

17、可在命令窗口中输入:,a=15+j*3,b=5*exp(j*2),(a.2+b).(1/5),回车,6.,绘制简单的函数曲线,MATLAB,提供了极为便利的数据可视化手段,可以作出任意函数的图像。作为快速入门,在此以一个二维作图为例,作出函数,y,=e,-,x,/10,sin,x,在,x,-1,10,范围的图像。,x=-1:0.1:20;,%,定义,x,的范围和步进回车,y=exp(-x./10).*sin(x);%,计算函数值回车,plot(x,y);grid;%,作出函数图像,并在坐标上画出网格回车结果如图,2-1,所示。注意,在程序语句中,以百分号“,%”,开始的是注释部分。关于“

18、plot”,的详细用法和例子可以用“,docplot,”,命令查看帮助文档。,图,2-1,函数,y=e,-x/10,sinx,在,x,-1,10,范围的图像,7.,编写简单的,MATLAB,程序,MATLAB,是解释性语言,输入一行语句后回车,就会立即执行得出结果。如果要实现比较复杂的功能,单靠一条一条地在命令窗口中输入指令执行,效率是很低的。如何解决这个问题呢?为此,MATLAB,提供了扩展名为“,.,m”,的文本文件,在文件中事先写入一行行的,MATLAB,命令,存盘后从,MATLAB,的命令窗口调入执行(类似于,DOS,下的批处理),这种文件称为底稿文件或,MATLAB,脚本文件。,用

19、前面作图的三条语句为例,在文本编辑器中输入这些语句,然后将文件存盘,例如命名文件名为“,my1stprg.m”,,,保存于,MATLAB,的默认工作路径中。然后回到,MATLAB,命令窗口,在提示符“,”,下键入文件名,(,可以省略扩展名,),后回车,即可运行程序得到结果,即,my1stprg,回车在任何一种纯文本编辑器中均可以书写,MATLAB,程序,只要以“,.,m”,为扩展名保存,即可在,MATLAB,中调用运行。,MATLAB,命令窗口中,在提示符“,”,后输入的命令语句要回车才能执,行,本书以后的例子中,将省略回车字样,在此提醒读者注意。,2.1.3,MATLAB,程序设计,1.,M

20、文件简介,MATLAB,除了如前所述的在命令窗口进行的直接交互的指令操作方式外,另外一种更为重要的工作方式就是,M,文件的编程工作方式。,M,文件有两种形式,一种是脚本文件,另一种是函数文件。,M,文件的扩展名为“,.,m”,。,M,文件可以通过任何纯文本编辑器进行编辑,,MATLAB,中也,有自带的文本编辑器,使用“,edit”,命令即可开启。,2.,程序控制流语句,任何计算机语言,只要利用顺序结构、循环结构以及分支结构,就可以完成任何程序功能。在,MATLAB,中也有这三种基本的程序结构。但值得注意的是,由于,MATLAB,语言矩阵计算功能十分强大,常常仅使用顺序结构借以矩阵的逻辑运算就

21、可以完成计算任务。由于循环结构和分支结构在,MATLAB,语言中的运行速度相对较慢,因此在算法优化的编程中应当尽可能避免使用,而代之以矩阵运算,从而提高程序运行速度,简化程序代码,并使得程序代码更加接近于数学表达。当然,采用矩阵编程的编程方法需要读者具有更多的关于线性代数和矩阵数学的知识和思维方式。,顺序结构是,MATLAB,中最常用的程序结构,也是执行效率最高的程序结构。顺序结构的语句是按照书写的前后顺序来执行的。,MATLAB,用于循环结构的语句有两种:“,forend”,循环和“,whileend”,循环。,1),forend,语句,利用“,helpfor,”,或“,docfor,”,可

22、以获得关于该语句的使用手册。“,forend”,语句适用于循环次数确定的情况,将循环变量的初值、判别和变化放在循环开头。“,forend”,语句的调用形式是:,forv,=,表达式,语句,1;,语句,n;,end,例如,最简单的,forend,循环:,fork=1:10,x(k)=k.2;,end,事实上,采用矩阵思想也可以获得相同的结果,但编程更加简单明了:,k,=1:10;,x,=,k,.2,x,=,149162536496481100,绝大部分循环都可以遵从这样的方法变成向量化,(,矩阵化,),的算法,避免采用循环语句,从,而大大提高程序的执行效率。,2),whileend,语句,对于循

23、环次数不能预先确定,而是由某个逻辑条件来控制循环次数的情况,,MATLAB,提供了“,whileend”,来实现。和“,forend”,语句类似,“,whileend”,语句也允许嵌套。,“,whileend”,语句的一般形式是:,whilev,=,表达式,语句,1;,语句,n;,end,例如,求当整数,n,的阶乘值是一个,50,位数的第一个数时,,n,为多少?(程序,jiechen50.m,),n=1;%n,的初值,whileprod,(1:n)1e50,break;end%,满足条件,则跳出循环,end,n%,显示结果,n=,42,“,switch”,语句来实现多重分支结构。其用法是:,s

24、witch,开关表达式,case,表达式,1,语句,语句,case,表达式,1,表达式,2,表达式,3,语句,语句,otherwise,语句,语句,end,3.,数据和文件的输入输出,1)“,input”,指令,“,input”,指令提示用户从键盘输入数据、字符串或表达式,并接受该输入。“,input”,指令的调用格式有两种:,user-entry=input(prompt)%,输入数据或表达式,user-entry=input(prompt,s)%,输入字符串,例如:,a=input(,请输入矩阵或表达式,赋值到,a:)DW%,输入数据的例子,请输入矩阵或表达式,赋值到,a:,12;34,a

25、12,34,a=input(,请输入矩阵或表达式,赋值到,a:)DW%,输入表达式的例子,请输入矩阵或表达式,赋值到,a:sin(1)+8,a=,8.8415,s=input(,请输入一个字符串,:,s)DW%,输入字符串的例子,请输入一个字符串,:,thisisastring,s=,thisisastring,2)“pause”,指令,“,pause”,指令可以使程序暂停运行,等待用户按任意键继续。“,pause”,指令主要用于程,序调试或显示中间结果。“,pause(n)”,指令使得程序暂停执行,n,秒。,3),利用文件输入输出数据,指令“,save”,和“,load”,用于,MATL

26、AB,与磁盘的数据交换。“,save”,指令将,MATLAB,工作空间的数据存入磁盘;“,load”,指令则将数据从磁盘送入到,MATLAB,工作空间。举例说明如下:,clear;,A=,1,2;3,4,;,b=81;,save(c:,mymatlabdat,.mat,A,b);%,将变量,A,和,b,保存在文件,C:,mymatlabdat,.m,at,中,clear%,清除内存变量,whos,%,查看,应该无变量显示,load(c:,mymatlabdat,.mat);%,调入数据文件,c:,mymatlabdat,.mat,whos,%,显示调入的变量,Name Size,BytesCl

27、ass,A,2x2 32doublearray,b1 x1 8doublearray,Grandtotalis5elementsusing40bytes,4.,MATLAB,编程特点,MATLAB,有两种工作方式:一种是在命令窗口进行的指令操作方式,前面我们所使用的大部分就是这种方式;另外一种是,M,文件编程方式,这种方式特别适合于复杂问题的求解,是,MATLAB,高级应用的一种常用方式。,MATLAB,编程中,要特别注意程序的书写风格,一个好的程序,必须思路清晰,注释详细,而且是运行速度较快的。,M,文件编程中开头的注释行将作为该程序的帮助信息,可以在命令窗口中用“,help”,命令显示出来

28、例如,编程计算函数,f,(,x,)=,x,3,+,x,+,ln,x,sin,x,+,当,x,=1,3,5,时的值。,编写脚本文件,calcfx,.m,如下:,程序,2-1,%,这是开头的注释行,可以用,help,命令显示,%,程序,calcfx,.m,的功能是计算表达式,clear;%,清除,MATLAB,内存空间,这一命令常用于脚本文件的首句,%,以避免前面命令在内存空间形成的变量的意外影响,k=1;%,数组下标变量,在,MATLAB,编程中,注释要尽可能详尽,!,Int,-F=inline(t,t);%,用,inline,函数建立积分的被积函数,for x=,1,3,5,f-x(k)=x

29、3+x+log(x)*sin(x)+quad8(,Int,-F,0,x);%,计算表达式值,k=k+1;%,数组下标加,1,end,f-x%,显示计算结果,文件编辑存盘后,在,MATLAB,命令窗口执行,:,helpcalcfx,这是开头的注释行,可以用,help,命令显示,程序,calcfx,.m,的功能是计算表达式,calcfx,f-x=,2.5000 34.6550 140.9567,5.,MATLAB,函数编程,如果,M,文件的第一行是以关键字“,function”,开头的,则就是函数文件。函数文件是,MATLAB,程序设计的主流,,MATLAB,自身所带的许多函数,(,指令,),都是

30、由相应的函数文件来定义的。函数文件好像一个黑箱,将数据送进去,经过函数处理,然后将结果数据输出。函数文件和脚本文件在内存使用上存在重要的区别,函数文件内部所定义的变量仅仅在该函数文件内部有效,函数返回后这些内部变量将自动被清除,也就是说,函数内部所定义的变量仅在函数内部起作用,是局部变量。,而脚本文件中所定义的变量,在使用“,clear”,命令清除之前,始终存在于工作空间当中,是全局变量。另外,函数文件的文件名必须和函数名相同,而且注意切记不要和,MATLAB,已经定义的系统函数和其它自定义的函数同名。下面是函数编程的例,子,函数的文件名与函数名相同,为,stat.m,。,程序,2-2,fun

31、ction,mean,stdev,=stat(x),n=length(x);%,求输入向量,x,的长度,mean=sum(x)/n;%,求平均值,stdev,=,sqrt,(sum(x-mean).2/n);%,求均方根值,6.,测定程序执行时间和时间分配,利用“,tic”,和“,toc,”,指令可以对程序段的执行时间进行测定,从而估计出程序执行效率,并找出改进程序、提高效率的方法。“,tic”,用于计时开始,而“,toc,”,用于计时结束并显示计时结果。,MATLAB,还提供了对程序执行的耗时剖析功能“,profile”,指令。用户通过调用该功能函数,可以轻松地观察程序中各条语句的执行耗时情

32、况,从而为提高程序运行效率的改进,思路提供参考依据。,(,详细情况请参见在线帮助。,),7.,提高程序执行速度的原则,MATLAB,是一种解释性语言,它与,C,语言等编译性语言有着相当大的区别,如果按照,C,语言的思路去编写,MATLAB,程序,那么执行效率肯定不是很理想。要提高编程的执行效率,则一定要根据,MATLAB,的特点来编写程序,具体有以下原则:首先,在编程中要尽量避免采用循环语句。利用向量化语句来代替循环语句可以大大提高程序运行速度。如果不得不采用多重循环,那么内循环的次数应该尽可能多于外循环的次数。其次,在使用大型数组或矩阵之前对其进行初始化,即采用指令“,zeros”,或“,o

33、nes”,对矩阵定维,这样可以减少,MATLAB,在内存分配过程中的耗时,大大提高速度。,第三,应该优先考虑使用,MATLAB,的内在函数。,MATLAB,的内在函数是采用,C,语言优化构造的,并固化在,MATLAB,的内核中,其运行速度可以和,C,语言的速度等价,而用户自行编制的,M,文件则是在,MATLAB,中解释执行的。另外,采用更先进更有效的算法也可,以提供计算效率。快速傅立叶变换就是一个典型的例子。,2.2,MATLAB,编程仿真,2.2.1,时间连续信号与系统的计算机仿真问题,时间连续的确定信号在物理上是一个随时间变化的(电压或电流)波形,在数学上表示为一个时间连续的函数,f,(,

34、t,),。,时间连续信号也称为模拟信号。而时间离散的确定信号在数学上可以表示为一个确定的序列,f,n,。,如果以满足取样定理的取样速率对时间连续函数,f,(,t,),进行取样,就可以得到对应的时间离散序列,f,n,,,而将时间离散序列,f,n,通过取样定理所规定的理想低通滤波器后,就能够,恢复连续信号,f,(t),。,换句话说,在满足取样定理的前提下,,f,(t),与,f,n,是一一对应的关系。对时间离散序列,f,n,进行幅度值上的离散化(这个过程称为量化)就得到了数字信号,。,数字信号通常以二进制编码的形式存储在计算机中。因此,利用计算机所表达的时间连续信号,f,(t),实质上是其所对应的数

35、字信号,。,本质上,计算机不能直接处理模拟信号,计算机中的信号处理均是对数字信,号的处理。而由取样定理保证了它与模拟信号处理之间的一一对应关系。,连续系统可以用微分方程来描述,离散系统可以用差分方程来描述。当系统为无记忆系统时,微分方程或差分方程退化为代数方程。因此,对系统进行仿真的过程就数学意义而言,就是求解这些微分方程、差分方程或代数方程的过程。,为了对连续系统进行仿真,首先需要建立其数学模型,然后利用计算机求解这些数学模型,从而得出数学模型的数值解。计算机对数学模型的求解过程就是对系统的仿真过程。由于连续系统是通过微分方程来建模的,因此对此的计算机仿真本质上就是微分方程的数值求,解问题。

36、通常,对连续系统进行计算机仿真的过程是:,(,1),建立数学模型:就是将物理模型转换为数学模型的过程。对于电子电路而言,就是利用电路的拓扑、元件的属性,列出网孔方程或节点方程,并简化为标准形式的计算机可求解的一阶微分方程组(即状态方程)的过程。对于线性时不变系统来说,就是建立其传递函数模型,并简化为计算机易于求解的线性一阶微分方程组(即状态方程)的过程。而对于,一般的系统,通常可建模为一组非线性的微分方程组。,(,2),选择适合的计算机求解方法求解仿真模型。不同的微分方程求解算法的精度和适用范围均有所不同。,(,3),编写,MATLAB,仿真程序或建立,Simulink,模块方框图,调试并运行

37、程序。,(,4),得出数值解,即仿真结果,对仿真结果进行分析,以确定结果的可靠性和有效性,。,图,2-2,一个二阶电路系统,下面我们举例说明。对于一个二阶系统,电路如图,2-2,所示,试利用,MATLAB,编程仿真求解:,(,1),零状态响应:系统在,t,=-1,秒时刻的初状态为零,输入信号为阶跃信号,f,(t)=,u,(t),,,输出为电容电压,试对时间,t=,-1,10,秒的输出信号波形进行仿真求解。,(,2),零输入响应:系统在,t,=-1,秒时刻电容电压为,u,C,=1V,,当,t=-1,秒时刻信号输入二端闭合,试对时间,t,=,-1,10,秒的输出信号波形进行仿真求解。,(,3),全

38、响应:系统在,t,=-1,秒时刻电容电压为,u,C,=1V,,,输入信号为阶跃信号,f,(,t,)=,u,(,t,),,试,对时间,t,=,-1,10,秒的输出,信号波形进行仿真求解。,解,(,1),设电感电流为,i,L,(,t,),,,电容电压为,u,C,(,t,),,,根据电路,列出,KVL,方程:,(2-2),改写为标准形式:,令电路的状态变量,i,L,(,t,)=,x,1,(t),,,u,C,(,t,)=,x,2,(,t,),,,输入信号为,f,(,t,),则微分方程简写为,写出该微分方程的,MATLAB,函数。注意,这一组微分方程组就是该二阶电路的状态方程,对于同一个物理系统,如果选

39、取的状态变量不同,所得到的状态方程也就不同,但都表达了该,物理系统的状态信息。,(2-3),按照,MATLAB,的固定写法,编写出该微分方程组的,MATLAB,函数(函数文件名为,funcforex123.m,),如下:,程序,2-3,functionxdot,=funcforex123(t,x,flag,R,L,C),xdot,=zeros(2,1);%,矩阵初始化,xdot,(1)=-R/L*x(1)-1/L*x(2)+1/L*f(t);%,方程,1,xdot,(2)=1/C*x(1);%,方程,2,functionin,=f(t)%,输入信号,in=(t0)*1;%,阶跃信号,然后,利用

40、MATLAB,提供的求解微分方程的指令对该微分方程组求解。,MATLAB,提供的求解微分方程的算法有多个,如“,ode45”,、“,ode23”,、“,ode15s”,等,不同的算法适用的场合稍有不同。例如,通过“,ode45”,函数求解,,MATLAB,程序(程序名为,ex123.m,),如下:,程序,2-4,%,filenameex123.m,L=1;%,电感值,C=0.1;%,电容值,forR,=,1.535,%,仿真电阻值分别为,1.5,,,3,,,5,欧姆的情况,t,x,=ode45(funcforex123,-1,10,0;0,R,L,C);,%,也可采用,ode23,,,ode

41、15s,等求解,figure(1);plot(t,x(:,1);,holdon,;,xlabel,(,timesec,);,text(0.9,0.17,leftarrowi,-L(t);grid;,figure(2);plot(t,x(:,2);,holdon,;,xlabel,(,timesec,);,text(0.5,0.3,leftarrowu,-C(t);grid;,end,运行程序后,得到的电感电流、电容电压波形仿真结果如图,2-3,(,a,)、,(b,),所示。,图,2-3,电感电流、电容电压零状态响应波形仿真结果,(,a),电感电流单位阶跃响应(零状态响应)波形仿真结果;,(,b

42、),电容电压单位阶跃响应(零状态响应)波形仿真结果,(,2),当,t=-1,秒时刻信号输入二端闭合,相当于输入信号为零,因此修改,MATLAB,函数,funcforex123.m,如下:,程序,2-5,functionxdot,=funcforex123(t,x,flag,R,L,C),xdot,=zeros(2,1);%,矩阵初始化,xdot,(1)=-R/L*x(1)-1/L*x(2)+1/L*f(t);%,方程,1,xdot,(2)=1/C*x(1);%,方程,2,functionin,=f(t)%,输入信号,in=0;%,信号始终为零,并修改,ex123.m,的“,ode45”,语句,

43、将系统状态改为,0,,,1,,程序如下:,程序,2-6,%,filenameex123.m,L=1;%,电感值,C=0.1;%,电容值,forR,=,1.535,%,仿真电阻值分别为,1.5,,,3,,,5,欧姆的情况,t,x,=ode45(funcforex123,-1,10,0;1,R,L,C);,%,也可采用,ode23,,,ode15s,等求解,figure(1);plot(t,x(:,1);,holdon,;,xlabel,(,timesec,);,text(0.9,0.07,leftarrowi,-L(t);grid;,figure(2);plot(t,x(:,2);,holdon

44、xlabel,(,timesec,);,text(0.5,0.3,leftarrowu,-C(t);grid;,end,然后运行,得到的波形仿真结果如图,2-4,所示。,图,2-4,电感电流、电容电压零输入响应波形仿真结果,(,a),电感电流零输入响应波形仿真结果;,(,b),电容电压零输入响应波形仿真结果,(,3),对于全响应情况,可相应修改,MATLAB,函数,funcforex123.m,如下:,程序,2-7,functionxdot,=funcforex123(t,x,flag,R,L,C),xdot,=zeros(2,1);,%,矩阵初始化,xdot,(1)=-R/L*x(1)

45、1/L*x(2)+1/L*f(t);%,方程,1,xdot,(2)=1/C*x(1);%,方程,2,functionin,=f(t)%,输入信号,in=(t0)*1;%,信号阶跃,而,ex123.m,的“,ode45”,语句中仍然将系统状态改为,0,,,1,。运行后得到的波形仿真结果,如图,2-5,所示。,图,2-5,电感电流、电容电压全响应波形仿真结果,(,a),电感电流全响应波形仿真结果;,(,b),电容电压全响应波形仿真结果,由此可见,一旦从物理系统中建立了其数学模型,也即得出系统的微分方程描述之后,给定其边界条件,就可得出其数值解,求解的过程就是仿真的过程。在,MATLAB,中,我们

46、可以方便地修改微分方程函数以及求解指令的参数,从而得出系统的零输入响应、零状态响应以及全响应等各种状态下的输出信号。读者可以将这个例子中的输入信号修改为一个宽度为,0.3,s,的矩形脉冲,然后观察其响应波形。,(,提示:只需修改,funcforex123.m,中语句“,in=(t0)*1;”,为“,in=(t0)*1-(t0.3)*1,;”,即可。),本例演示了对于一个动态电路瞬态响应的仿真过程。仿真的关键在于建立正确的数学模型,。,对于任何电子电路,都可以根据电路理论的知识得出其数学模型,即一阶微分方程组,也称为状态方程。接下来以,MATLAB,所规定的格式编写状态方程的描述函数,然后选择合

47、适的求解方式求解,也就完成了对电路的仿真。最后,对所得出的仿真波形进行分析。,需要强调的是,微分方程的,MATLAB,函数格式是固定的,必须按,MATLAB,所规定的格式来编写。本例中,需要将方程参数“,R;L;C”,传入。传入参数前的标志变量“,flag”,是必需的,以符合求解函数“,ode45”,的要求。微分方程的,MATLAB,函数引导语句的格式为,functionxdot,=,方程函数名(,t,x,flag,附加参数),其中,“,t”,为时间变量矩阵,“,x”,为方程的状态变量矩阵,“,xdot,”,为状态变量对时间的一阶导数矩阵。在,MATLAB,中,对微分方程的求解有多种算法可供利

48、用。通常有“,ode23”,、“,ode45”,以及“,ode15s”,等等,这些函数的调用方式完全相同,但针对的方程类型有所不同。其中,“,ode23”,和“,ode45”,分别采用二阶三级,RKF,算法和四阶五级,RKF,算法,适用于一般微分方程的求解;“,ode15s”,则适用于刚性微分方程的求解。所谓刚性方程,指的是方程的某些解(这些解是时间“,t”,的函数)变化缓慢,而另外一些解变化快速,两者形成明显对比的这样一类方程。“,ode15s”,同时也适合于一般微分方程的求解。关于其它解法和使用,方法详见,MTALAB,的在线手册。,以“,ode45”,为例,其用法是:,t,x,=ode4

49、5(,方程函数名,仿真时间范围,状态变量初始值,算法选项,附加参数,),例如,以默认算法选项计算微分方程组,funcforex123.m,,,仿真时间从,-1,s,到,10,s,,,状态变量初始值为:电感电流,x1(0)=0A,,,电容电压,x2(0)=1V,,,附加,参数为,R=1.5,,,L=1H,,,C=0.1F,则解法写为,t,x,=ode45(funcforex123,-1,10,0;1,1.5,1,0.1);,另外需要注意的是,为了达到算法快速有效,,MATLAB,中的状态方程的求解函数是自适应步长的,即其数值结果中时间自变量,t,的离散取值是非均匀的,在解变化剧烈的地方取值点密,

50、而在解变化缓慢的曲线段相对取值会稀疏一些。在信号处理中,进一步对求解信号进行分析时,往往又需要在时间上均匀取样间隔点上的波形函数值。我们可以采用一维插值的办法来解决。读者可以阅读插值命令“,interp1”,的在线帮助进一步了解这方面的信息。,下面介绍求解系统的冲激响应的方法。由于输入冲激信号是超越函数,不适于作数值计算,因此首先求系统的阶跃响应,然后对其进行微分得到冲激响应。为了应用差分函数“,diff”,进行近似微分,首先需要通过插值将被微分的数据在时间上均匀化,然后再利用差分函数,“,diff”,进行近似微分,从而得出系统的冲激响应波形。,例如,对于电路如图,2-2,所示的一个二阶系统,

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服