欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    数字信号处理软件方法Matlab课件.ppt

    • 资源ID:3497324       资源大小:1.19MB        全文页数:67页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数字信号处理软件方法Matlab课件.ppt

    MATLAB是什么?,用于科学工程计算的高效率高级语言语言开发系统适合多学科、多种工作平台的功能强大的大型软件,1,MATLAB的主要构成,编程语言:以矩阵和数组为基本数据单位的编程语言;工作环境:一系列应用工具提供编写、调试程序的环境;图形处理:包括绘制图形和创建GUI等。数学库函数:包含丰富的数学函数和其他复杂功能函数;API:为MATLAB与其它语言编写的程序进行交互提供接口。,MATLAB语言特点(一):,采用统一的数据和变量对象矩阵,即数据是矩阵元素的数据,变量是矩阵变量;在生成矩阵对象时,不要求做明确的维数说明,有丰富的矩阵处理功能;功能强、易学易用,还可根据实际需要扩充功能;一条语句或一个函数相当于C语言中的一个子程序或一个处理功能;MATLAB还拥有各种实用的软件,提供了许多通信系统模型,能对系统直接进行仿真;,MATLAB语言特点(二):,用户可以自己编写函数,绘制系统响应曲线;MATLAB还具有符号运算功能,直接用符号算式进行演算;MATLAB提供了SIMULINK软件包,该软件包提供了通信和控制系统方块图的图形编程形式,这样利用通信系统方块图的图形对系统直接进行仿真,使得一个很复杂的系统仿真变得相当容易。,MATLAB采用了面向对象的技术,以矩阵作为基本数据结构和以矩阵运算为基础,集科学计算和图形可视化为一体。MATLAB是高层次的矩阵/数组语言,具有条件控制、函数调用、数据结构、输入输出、面向对象等程序语言特性。MATLAB还带有许多针对不同应用所开发的工具箱(Toolboxs)。,5,MATLAB语言特点(三):,MATLAB的其他主要特色:,面向对象特性,图形、窗口等都是对象,可以通过属性改变它们;矩阵自动动态伸缩,矩阵的阶数几乎可以任意大(只与虚拟内存有关);功能强大的图形处理与数字计算功能;系统扩充方便,可以随时向系统增加函数;可以自己设计自己需要的工具箱。,6,MATLAB语言重要性,MATLAB已成为各种系统仿真、数字信号处理、科学可视化的标准语言。MATLAB已确认为必须掌握的计算工具,是从理论通向实际的桥梁,是最可信赖的科技资源之一。,7,MATLAB软件特点可归纳如下:,简单易学;代码短小高效;计算功能非常强大;强大的图形表达功能;可扩展性能,8,MATLAB产品族可以用来进行如下工作:,*数值分析;*数值和符号计算;*工程与科学绘图;*控制系统的设计与仿真;*数字图像处理;*数字信号处理;*通讯系统设计与仿真;*财务与金融工程。,9,操作桌面的缺省外貌,10,命令窗口(指令窗)工作空间窗口(浏览器)当前路径(当前目录)窗口命令历史窗口(历史指令窗),通用操作界面,命令窗口(指令窗)(Command Window)工作空间窗口(浏览器)(Workspace Browser)命令历史窗口(历史指令窗)(Command History)当前路径(当前目录)窗口(Current Directory Browser)内存数组编辑器(Array Editor)M文件编辑/调试器(Editor/Debugger)帮助导航/浏览器(Help Navigator/Browser)图形窗口(Figure),11,数值、变量和表达式,(一)数值的记述(二)变量命名规则(三)MATLAB默认的预定义变量(四)运算符和表达式(五)复数和复数矩阵,12,(一)数值的记述,采用习惯的十进制表示,可带小数点或负号。以下记述都合法。3-99 0.001 9.456 1.3e-3 4.5e33,13,(二)变量命名规则,变量名、函数名是对字母大小写敏感的。Myvar myvar MyVar My VarSin SIN sin变量名的第一个字符必须是英文字母,最多可包含31个字符(英文、数字和下连符)。myvar201变量名中不得包含空格、标点,但可包含下连符。my_var_201(对)my,var 201(错),14,(三)MATLAB默认的预定义变量,每当MATLAB启动时,预定义变量(Predefined variable)就被产生。,15,建议:不要对预定义变量名重新赋值,以免产生混淆。,(四)运算符和表达式,经典教科书上的算术运算符在MATLAB中的表达方式。,16,MATLAB书写表达式的规则:,表达式由变量名、运算符和函数名组成。表达式将按与常规相同的优先级自左至右执行运算。优先级的规定是:指数运算级别最高,乘除运算次之,加减运算级别最低。括号可以改变运算的次序。书写表达式时,赋值符“=”和运算符两侧允许有空格,以增加可读性。,17,(五)复数和复数矩阵,MATLAB把复数作为一个整体处理,虚数单位用自定义变量i或j表示。复数z=a+bi=rei直角坐标表示和极坐标表示之间转换的MATLAB指令如下:real(z)z的实部a=rcosimag(z)z的虚部b=rsinabs(z)z的模r=(a2+b2)angle(z)z的相角=arctg(b/a)MATLAB的矩阵元素允许是复数、复变量和由它们组成的表达式。,18,经典教科书的直角坐标表示法z1=3+4i采用运算符构成的直角坐标表示法和极坐标表示法z2=1+2*iz3=2*exp(i*pi/6)z=z1*z2/z3,19,指令行中的标点符号,20,例:,a=10*2;b=a+5,c=a*b;d=c+a,A=1 2 3;4 5 6;7 8 9B=1,2 34,5,67 8 9C=1;2;3,21,命令窗口的常用控制指令,22,命令窗口中指令行的编辑,为方便操作,MATLAB不但允许用户在指令窗中对输入指令进行各种编辑和运行,而且允许用户对已经输入的指令进行回调、编辑和重运行。,23,Workspace Browser和Array Editor,一、Workspace Browser工作空间窗口简介列出数据的变量信息,包括变量名、变量数组大小(尺寸)、变量字节大小和变量类型。基本工作空间或简称为工作空间(Workspace)MATLAB在进行运算时,将变量存储在内存中,这些存储变量的内存空间称为基本工作空间,简称工作空间。暂时(临时)工作空间:每当MATLAB在调用执行某一函数时,即进入该函数的暂时工作空间(可视为基本工作空间的下层空间),函数在此空间进行运算,而不影响到基本空间内的变量,当函数执行结束后,MATLAB会同时删除函数的暂时工作空间,并回到基本空间。,24,二、内存变量查阅、删除的指令操作法,在指令窗中运用who,whos查阅MATLAB内存变量。who命令:查看现存于基本空间的变量whos命令:详细查看现存于基本空间的变量在指令窗中运用clear指令可以删除内存(工作空间内)的某一或所有变量如:clear A,clearall,25,Command History命令历史窗口,历史指令窗记录着用户在MATLAB指令窗中所输入过的所有指令。历史记录包括:每次开启MATLAB的时间,每次开启MATLAB后在指令窗中运行过的所有指令。历史指令窗具有多种应用功能:单行或多行指令的复制和运行、生成M文件等。,26,Current Directory、路径设置器,Current Directory当前路径窗口简介一 用户目录和当前目录设置二 借助当前路径窗口获取M和MAT文件信息 MATLAB的搜索路径和路径设置器搜索路径,27,在matlab提示符下输入x,matlab解释器将按照以下步骤处理:1 检查x是否为一个变量。2 检查x是否为一个内部函数。3检查当前文件夹下是否存在x.dll,x.mex,x.m依次执行。4 检查matlab搜索目录下是否存在x.dll,x.mex,x.m,依次执行 path(c:hello,path);,28,Editor/Debugger M文件编辑器简介,M文件编辑器不仅可以编辑M文件,而且可以对M文件进行交互式调试;不仅可处理带.m扩展名的文件,而且可阅读和编辑其他ASCII码文件。M编辑器的启动方法,29,M脚本文件编写初步,所谓M脚本文件是指:该文件中的指令形式和前后位置,与解决同一个问题时在命令窗中输入的那组指令没有任何区别。MATLAB在运行这个脚本时,只是简单地从文件中读取一条条指令,送到MATLAB中去执行。与在指令窗中直接运行命令一样,脚本文件运行产生的变量都驻留在MATLAB基本工作空间中。文件扩展名是“.m”。,30,M脚本文件编写初步,所谓M脚本文件是指:该文件中的指令形式和前后位置,与解决同一个问题时在命令窗中输入的那组指令没有任何区别。MATLAB在运行这个脚本时,只是简单地从文件中读取一条条指令,送到MATLAB中去执行。与在指令窗中直接运行命令一样,脚本文件运行产生的变量都驻留在MATLAB基本工作空间中。文件扩展名是“.m”。,31,帮助系统,帮助方式概述一“纯文本”帮助 二“导航/浏览器交互界面”帮助三PDF帮助四 其他帮助Help Navigator/Browser帮助导航/浏览器简介一 Contents帮助文件目录窗二Index帮助索引窗三Search搜索窗四Favorites书签窗,32,思考:,一、指令clear,clf,clc各有什么用处?二、在MATLAB指令表达式中,标点符号“空格”和“逗号”各有什么作用?在哪些情况下,两者的作用相同?在哪些情况下,两者的作用不同?举例说明。,33,MATLAB编程基础,数据类型、数据结构和函数数值、比较和逻辑计算符号计算M文件脚本和函数MATLAB绘图,34,MATLAB编程基础数据类型、数据结构和函数,35,MATLAB定义了数值、字符、逻辑、符号和函数指针等多种数据类型MATLAB定义了矩阵、数组、单元数组和结构等多种数据结构函数是MATLAB的基本功能单元,调用方式为 函数名(参数1,参数2,),MATLAB编程基础数值、比较和逻辑计算,36,MATLAB的数值运算,MATLAB编程基础数值、比较和逻辑计算,37,MATLAB中的关系运算符,MATLAB编程基础数值、比较和逻辑计算,38,MATLAB的逻辑运算,MATLAB编程基础符号计算,数值法描述信号是工程专业的基础,符号方法描述信号的优点:理论性强,简单直观符号变量的定义:var=sym(str)或 syms var1 var2 符号表达式到数值变量的转换:subs(f,x,y)%用y替换掉表达式f中x,39,MATLAB编程基础 M文件(脚本和函数),MATLAB使用M语言进行编程(解释性语言)M语言文件其文件的扩展名为.m(脚本和函数)函数主要有两类,a内建(Build-in)函数,各类工具箱。b自己开发的函数(文件名为*.m或*.mex)运行meditor的方法:edit 或“File”菜单中“New”子菜单,40,脚本文件,脚本文件是指:该文件中的指令形式和前后位置,与解决同一个问题时在命令窗中输入的那组指令没有任何区别。MATLAB在运行这个脚本时,只是简单地从文件中读取一条条指令,送到MATLAB中去执行。与在指令窗中直接运行命令一样,脚本文件运行产生的变量都驻留在MATLAB基本工作空间中。文件扩展名是“.m”。,41,42,meditor的运行界面,流 程 控 制,选择结构 当人们判断某一条件是否满足,根据判断的结果来选择不同的解决问题的方法时,就需要使用选择结构。和C语言类似,MATLAB的条件判断可以使用if语句或者switch 语句。循环结构 在解决很多问题的时候需要使用循环结构,例如求解数列的和或者进行某种迭代法求解数值方程时,都需要循环结构配合完成计算。在MATLAB中包含两种循环结构,一种是循环次数不确定的while循环,而另一种是循环次数确定的for循环。,43,提高运算性能,M语言和其他的高级语言不同,由于采用了解释型语言,所以M语言的执行效率肯定低于编译型语言(例如C语言)。然而,随着MATLAB版本的不断升级,再加之合理利用MATLAB向量运算等特点可以较大幅度地提高M语言代码的执行效率。在本小节结合一些具体的例子来讲述M语言编程以及MATLAB软件本身在提高程序执行效率方面的一些特性。,44,45,1向量化运算 首先,希望牢记这样一点,MATLAB最初的目的是提供便利的矩阵数据操作能力。所以在大多数的应用程序中,不要使用循环结构操作矩阵的元素,应直接使用矩阵元素的索引或者矩阵运算的函数,这样做不仅能够提高代码的执行效率,而且还能够提高程序的可读性,这就是所谓的向量化的运算,也就是说,尽量将使用while循环或者for循环的语句结构转换成等价的向量或者矩阵运算,以提高程序的运算速度。,46,例子 向量化运算array_vs_loops.m。001Mass=rand(5,10000);002Length=rand(5,10000);003Width=rand(5,10000);004Height=rand(5,10000);005006rows,cols=size(Mass);007008disp(char(10),使用数组运算:)%char(10)回车009tic%t1=cputime010Density=Mass./(Length.*Width.*Height);011toc%t2=cputime012013disp(char(10),使用循环结构:)%sprintf(%sn,使用吗,sd)014tic;015for I=1:rows016 for J=1:cols017 Density(I)=Mass(I,J)/(Length(I,J)*Width(I,J)*Height(I,J);018 end019end020toc,例子比较了循环结构和数组运算的执行效率,程序中分别在010行使用数组运算和在015019行使用循环结构完成了同样的工作。程序的运行结果如下:array_vs_loops使用数组运算:elapsed_time=0使用循环结构:elapsed_time=0.0100,47,2预分配存储空间 另外一种能够提高运算效率的方法就是进行内存变量存储空间的预分配,首先察看例子。,例子 内存预分配的例子 pre_allocate.m。001disp(char(10),使用内存预分配:)002pre_allo=zeros(10000,1);003tic;004for I=1:10000005 pre_allo(I)=rand(1);006end 007toc008009disp(char(10),不使用内存预分配:)010tic;011for J=1:10000012 not_pre_allo(J)=rand(1);013end014toc,例子的执行结果如下:pre_allocate使用内存预分配:elapsed_time=0.0900不使用内存预分配:elapsed_time=0.3410,48,上面两种不同的运算惟一的区别就是程序002行,执行这行语句之后,MATLAB自动分配了10 000个连续的内存空间用于存储数据,MATLAB将一次创建足够的存储空间,然后依次赋值。而后者not_pre_alloc变量没有进行相应的操作,所以带来了两次运算结果的不同。在不使用内存预分配的运算中,MATLAB是如何进行操作的呢?当I=1时,MATLAB将使用一小块长度为一个单元大小的内存保存一位随机数。当I=2时,MATLAB寻找一块两单元大小的内存区,一个单元放第一个随机数,第二个放另外一个随机数。当I=10000 时,MATLAB 寻找一块容纳10000单元的内存区存放以前的9999个随机数,同时把最新的一个随机数加入进去。代码运行的结果造成了存储空间的浪费,降低了程序的执行速度。所以,在编写M语言程序的时候需要尽量使用内存的预分配,而少使用或者不使用数组内存空间的自动扩充方式。,M 文 件 调 试,M语言文件的编辑器meditor不仅仅是一个文件编辑器,同时还是一个可视化的调试开发环境。在M文件编辑器中可以对M脚本文件、函数文件进行调试,以排查程序的错误。M文件的调试不仅可以在文件编辑器中进行,而且还可以在命令行中结合具体的命令进行,但是过程相对麻烦一些,所以重点讲述在M文件编辑器中进行可视化调试的过程。一般地来说,应用程序的错误有两类,一类是语法错误,另外一类是运行时的错误。其中,语法错误包括了词法或者文法的错误,例如函数名称的拼写错误等。而运行时的错误是指那些程序运行过程中得到的结果不是用户需要的情况。但是,由于M文件是一种解释型语言,语法错误和运行时的错误都只有在运行过程中才能发现,所以程序的调试往往是在程序无法得到正确结果时进行程序修正的惟一手段。,49,M语言的断点(Breakpoints),为了能够有效地处理各种情况,M语言的断点类型除了类似C语言的用户定义的断点外,还有几种自动断点,分别为*Stop if Error。*Stop if Warning。*Stop if NaN or Inf。*Stop if All Errors。这些自动断点可以在程序中设置,当程序运行过程中发生了错误或者警告,则程序运行中断,进入调试状态,50,M文件编辑器的Breakpoints菜单,51,调试程序的按钮,52,函 数 文 件,M函数文件和脚本文件不同,函数文件不仅有自己特殊的文件格式,不同的函数还分别具有自己的工作空间。同其他高级语言类似,M函数文件也有局部变量和全局变量。,53,54,例子 函数文件示例average.m。001function y=average(x)002%AVERAGE 求向量元素的均值003%语法:004%Y=average(X)005%其中,X 是向量,Y为计算得到向量元素的均值006%若输入参数为非向量则出错007008009m,n=size(x);010%判断输入参数是否为向量 011if(m=1)|(n=1)|(m=1,在MATLAB命令行中,键入下面的指令运行例子的代码:z=1:99;y=average(z)y=50,函数文件基本结构,*函数定义行*在线帮助*注释行*M语言代码,55,例子 函数文件示例average.m。001function y=average(x)002%AVERAGE 求向量元素的均值003%语法:004%Y=average(X)005%其中,X 是向量,Y为计算得到向量元素的均值006%若输入参数为非向量则出错007008009m,n=size(x);010%判断输入参数是否为向量 011if(m=1)|(n=1)|(m=1,函数定义行,这一行代码中包括关键字function、函数输出参数y、函数的名称average和函数的输入参数x。需要注意的是函数的名称,函数的名称定义要求必须以字符开头,后面可以用字符、数字和下划线的组合构成函数名称。MATLAB对函数名称的长度有限定,读者可以在自己的MATLAB中,通过执行namelengthmax函数获取相应的数值。假设该函数返回的数值为N,若函数的名称长度超过了N,则MATLAB使用函数名称的前N个字符作为函数名称。一般推荐将函数名称用小写的英文字符表示,同时函数的M文件名称最好和函数名称保持一致,若文件名称和函数名称不一致,则调用函数的时候需要使用文件名称而非函数名称。,56,函数注释行,M函数文件的在线帮助为紧随在函数定义行的注释行。在例子中,average函数的在线帮助为002006行的注释行。若在MATLAB命令行中键入下面的指令:help average(average是文件名)在MATLAB的命令窗口中就会出现:,57,AVERAGE 求向量元素的均值语法:Y=average(X)其中,X是向量,Y为计算得到向量元素的均值若输入参数为非向量则出错,58,其中,在线帮助中比较重要而且特殊的是在线帮助的第一行,在MATLAB中将这行注释称为H1帮助行,它是在线帮助的第一行,若使用lookfor函数查询函数时,仅查询并显示函数的H1帮助行,例如,在MATLAB命令行中键入下面的指令:lookfor average在MATLAB的命令窗口中就会出现:AVERAGE 求向量元素的均值MEAN Average or mean value.由于H1帮助行的特殊作用,所以在用户自己定义M函数文件时,一定要编写相应的H1帮助行,对函数进行简明、扼要的说明或者解释。例子的010、012、015行代码分别是程序具体的注释行,这些注释行不会显示在在线帮助中,主要原因就是这些注释行没有紧随在H1帮助行的后面,从010行开始一直到文件的结尾都是M函数文件的代码行,这些代码行需要完成具体的算法,实现用户的具体功能。代码行就是用户开发的算法M语言的实现。,子函数和私有函数,同一个M函数文件中可以包含多个函数。如果在同一个M函数文件中包含了多个函数,那么将出现在文件中的第一个M函数称为主函数(primary function),其余的函数称为子函数(subfunction)。M函数文件的名称一般与主函数的名称保持一致,其他函数都必须按照函数的基本结构来书写,每一个函数的开始都是函数定义行,函数的结尾是另一个函数的定义行的开始或者整个M文件的结尾(最后一个子函数的结尾就是文件结束符)。不过,子函数不像主函数,一般子函数没有在线帮助,子函数的作用范围有限,它只能被那些在定义子函数的M文件中定义的函数(包括主函数和其他子函数)调用,不能被其他M文件定义的函数调用。,59,私有函数,在MATLAB中有一类函数被称为私有函数,这类函数被放置在名称为private的子目录中。每一个函数文件都是标准的M语言函数文件,没有特殊的关键字。但是,这些函数仅能被那些位于private子目录的上一层目录中的函数调用。例如,假设在MATLAB的搜索路径中包含路径ProjectA,那么所有位于 ProjectAprivate路径下的函数,只能在其上一层路径 ProjectA中的函数文件中调用。由于私有函数作用范围的特殊性,不同父路径下的私有函数可以使用相同的函数名。由于MATLAB搜索函数时优先搜索私有函数,所以如果同时存在私有函数名func1.m和非私有函数名func1.m,则私有函数func1.m被优先执行。创建私有函数的方法非常简单,只要将那些需要设置为私有的函数都拷贝到一个private子目录中,则这些函数就能被那些位于父层目录中的M函数调用了。,60,私有函数和子函数比较,61,局部变量和全局变量(1),同C语言类似,在M语言函数中也存在局部变量和全局变量。所谓局部变量,就是那些在M函数内部声明并使用的变量。这些变量仅能在函数调用执行期间被使用,一旦函数结束运行,则这些变量占用的内存空间将自动被释放,变量的数值也就不存在了。这是由于MATLAB的解释器在解释执行函数的时候,为不同的函数创建不同的工作空间,函数彼此的工作空间相互独立,一旦函数执行完毕,则函数的工作空间就不存在了。,62,局部变量和全局变量(2),使用全局变量时,需要小心留意,因为全局变量可以在任何的函数中进行读写,这样,可能在比较复杂的程序中查找全局变量错误的时候就非常的麻烦。global xyz;%声明全局变量xyz10;,63,局部变量和全局变量(3),在MATLAB中还有一类变量被声明为persistent,本书将其称之为保留变量,这类变量类似于C语言函数中被声明为static类型的变量。这类变量在函数退出的时候不被释放,当函数再一次被调用的时候,这些变量保留上次函数退出时的数值。被声明为persistent的变量具有以下特征:*变量仅能在声明变量的函数内使用,其他函数不能直接使用这些变量。*函数执行退出后,MATLAB不清除这些变量占用的内存。*当函数被清除或者重新编辑后,保留的变量被清除。,64,MATLAB编程基础 MATLAB绘图,MATLAB基本绘图plot,stem,subplot,ezplot,hold on 交互式绘图,65,小 结,MATLAB提供了一种高级编程语言M语言,这种语言的语法结构与C语言非常类似,任何熟悉C语言的用户学习使用M语言都不会有任何障碍。尽管M语言是一种解释性的编程语言,但是随着MATLAB版本的不断升级,以及充分利用MATLAB提供的各种编程技巧,能够有效提高M语言应用程序的执行效率,使M语言成为了工程领域中最适合进行算法开发验证的编程语言。,66,MATLAB基础编程,谱分析系统分析滤波器设计,数字信号处理软件方法MATLAB基础练习.doc,

    注意事项

    本文(数字信号处理软件方法Matlab课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开