Matlab及其应用.ppt

上传人:牧羊曲112 文档编号:5438976 上传时间:2023-07-07 格式:PPT 页数:74 大小:1.73MB
返回 下载 相关 举报
Matlab及其应用.ppt_第1页
第1页 / 共74页
Matlab及其应用.ppt_第2页
第2页 / 共74页
Matlab及其应用.ppt_第3页
第3页 / 共74页
Matlab及其应用.ppt_第4页
第4页 / 共74页
Matlab及其应用.ppt_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《Matlab及其应用.ppt》由会员分享,可在线阅读,更多相关《Matlab及其应用.ppt(74页珍藏版)》请在三一办公上搜索。

1、Matlab及其应用,1,Matlab及其应用,鲍文哈尔滨工业大学先进动力控制与可靠性研究所http:/,哈尔滨工业大学研究生教学课程,Matlab及其应用,2,1 课程内容简介,MATLAB基础基于matlab的数值分析绘制图形符号计算动态系统仿真:Simulink基础与其它程序交互:转换为c、编译、实时控制最优化方法,Matlab及其应用,3,2 Matlab的学习方法,必须做大量的练习,熟悉其中的函数联系和自己的课题相关,深刻的体会多看帮助文件,又一本好的参考书会提问题,寻求大家的帮助记住:Matlab可以做很多事情,Matlab及其应用,4,学会Matlab将改变你的一生,网络对你的改

2、变将远远的超过一台独立的计算机,Matlab及其应用,5,OK,Now begin,Matlab及其应用,6,MATLAB 基础及其应用,第一讲 MATLAB基础,哈尔滨工业大学动力工程控制与仿真研究所 baowen,概述 MATLAB基本使用 MATLAB的基本矩阵分析 矩阵操作 流程控制,Matlab及其应用,7,一、概述,MATLAB是一种交互式的以矩阵为基础的系统计算平台,它用于科学和工程的计算与可视化。它的优点在于快速开发计算方法,而不在于计算速度。,Matlab及其应用,8,1.1 MATLAB的出现,70年代中期,Cleve Moler和他的同事开发了LINPACK和EISPAC

3、K的Fortran子程序库 70年代末期,Cleve Moler 在新墨西哥大学给学生开线性代数,为学生编写了接口程序,这程序取名为MATLAB,即MATrix LABoratory1983年春天,工程师John Little与Moler、Steve Bangert一起开发了第二代专业版MATLAB1984年,MathWorks公司成立,MATLAB正是推向市场。,Matlab及其应用,9,1.2 学习Matlab的基本原因,不希望学生在编程上化太多时间,课程目的不是学习编程社会化的运行带来的好处:合理利用可以节约大量的时间为什么相同的时间别人比自己做出了更多的事情:硕士论文调查结果面向对象的

4、思想带来巨大的好处紧密结合科学的前沿From BBS:博士论文=Matlab+word,Matlab及其应用,10,1.3 Matlab的版本演化,Matlab 1.0Pc matlab-matlab 386Matlab3.5+simulinkMatlab 4.0:simlink内嵌Matlab 5.0:全面的面向对象Matlab 5.15.3Matlab 6.0Matlab 6.5:购并了MATRIXxMatlab 7.0:2004,Matlab及其应用,11,1.4 MATLAB特点,高度适应性、开放性:MATLAB的工具箱可以任意增减,任何人可以自己生成MATLAB工具箱可扩充性:MAT

5、LAB的函数大多为ASCII文件,可以直接编辑、修改基于矩阵运算的工作平台。多版本:windows/unix/dos/Macintosh极多的工具箱。,Matlab及其应用,12,1.5 Matlab能做什么,基本的数据处理优化和解方程动态过程仿真:实时的和非实时的数据来源:Excel、数据库、A/D等等嵌入式的控制:Pc/104和DSP神经元网络、小波分析、GA等等虚拟现实仿真,Matlab及其应用,13,Matlab产品家族,Matlab扩展支持在matlab中队系统的实施和开发。工具箱:专用的函数库,解决特定领域的问题。Simulink非线性系统仿真Blockset是专门为simulin

6、k建立的模块。,Matlab及其应用,14,Matlab是所有系统工具的基础,Matlab及其应用,15,设计自动化工具,Matlab及其应用,16,一般用途工具,Matlab及其应用,17,信号和图像处理,Matlab及其应用,18,控制系统设计和分析,Matlab及其应用,19,1.6 网络资源,USENET新闻组MATLAB的新闻组是comp.soft-sys.MATLAB。浏览器指向http:/http:/网络上的工具箱,Matlab及其应用,20,1.6 网络资源(2),BBS哈尔滨工业大学bbs:telnet:/上海交通大学bbs:清华大学bbs mathtoolswww服务Mat

7、lab 大观园:,Matlab及其应用,21,1.7 与MATLAB相似的软件,Mathmatica 数学计算功能。复杂符号计算,主要在理论界Mathcad 数学文字软件。直接写出报告Maple 符号计算功能强大SciLab 免费的matlab科隆体仿真软件:MATRIXx、VisSim等等,Matlab及其应用,22,二、MATLAB基础使用,2.1 MATLAB安装启动 Matlab的安装定制安装关于Java的问题:XP系统必须安装虚拟机安装pdf文件Matlab启动自动批处理 startup.m matlabrc.m,Matlab及其应用,23,2.2 Matlab菜单的含义,多窗口界面

8、Matlab的设置快速启动版本控制图形粘贴设置字体的改变,Matlab及其应用,24,2.3帮助的使用,help 命令:已知命令不知道用法lookfor命令:知道命令的关键词Matlab Help:命令查找,索引,说明书Demo有效的利用帮助,Matlab及其应用,25,2.3.1 怎样获得详尽的帮助信息,首先是MATLAB窗口中的help命令,它最常用、最快,往往也是最有效的。给出关键字就能找到相应的说明。Help命令简单易用,但是它要求准确给出关键字,如果记忆不准,就很难找到。这时就应该用第二种方案。Help Desk:这是MATLAB的HTML格式的帮助文档,有着很好的组织。可以在命令行

9、键入helpdesk,进入“Matlab Help Desk”。Help Desk的搜索可以使用不完全关键字,这样即使遇到记忆模糊的情况也可以很快查到。前面两种方法所得到的帮助信息常常是不够细致的,需要用第三种途径来补充,这就是电子版的使用手册。MATLAB里包含了大量关于MATLAB安装、使用、编程以及各种工具箱等的电子版手册,全部为PDF格式,具有搜索功能,因此也可以在指定的手册中搜索关键字,使用非常方便。,Matlab及其应用,26,2.4 Matlab变量,基本运算 变量逗号、分号的意义行内编辑、注释、运算规则变量要求变量区分字母的大小写名字不能超过19个字符,第19个字符后的字符被忽

10、略变量必须以字母开头,之后可以是任意字母、数字或者下滑线变量中不能含有标点符号。,Matlab及其应用,27,2.4.1 特殊变量,Matlab及其应用,28,2.4.2 复数,不需要特殊的处理。复数可以表示为:a=10-9i 复数运算不需要特殊处理,可以直接进行,Matlab及其应用,29,2.4.3 显示格式,MATLAB中所有的量为双字长浮点数,显示按下面显示规则:在缺省情况下,当结果为整数,作为整数显示;当结果为实数,以小数后4位的精度近似显示。如果结果中的有效数字超出了这一范围,以科学计数法显示结果。format命令改变显示格式,常用的的格式有long(16位)bank(2个十进制位

11、)hex(十六进制)short(缺省)short e(5位加指数)+(符号)long e(16位加指数)rat(有理数近似),Matlab及其应用,30,2.5 文件管理功能,who(whos)cd(chdir,pwd)dir(ls)typewhatwhichclc,edit!echoloadclear/packsavediary,Matlab及其应用,31,三、MATLAB的基本矩阵运算,3.1 简单矩阵输入命令行简单键盘输入用于很少数据输入矩阵的方向:,;NaN Inf文件形式输入可以用来读入试验数据大量的数据输入load数据文本文件:全部是数据,不含有数据mat文件:matlab自有的数

12、据格式,Matlab及其应用,32,2语句生成矩阵,线性等间距格式矩阵,使用from:step:tolinspace命令a=linspace(1,10,5);logspace命令b=logspace(0,2,10)矩阵连接c=a b;zeros ones eye randn,Matlab及其应用,33,3.引入特殊的文件格式,引入输入:import wizard可以引入的文件格式:文本文件:.txt.dat图片文件:.gif.bmp.jpg.avi声音:.wav.au电子表格:.csv.xls.wk1,Matlab及其应用,34,直接读入特殊格式文件:文本类型,Matlab及其应用,35,直接

13、读入特殊格式文件:二进格式,Matlab及其应用,36,3.2 矩阵运算,矩阵的转置用符号来表示和实现非共轭转置.矩阵的四则运算+-*/点乘:.*右除:./左除:.矩阵的乘方矩阵乘方.元素对元素的乘方矩阵的范数norm 1-范数 2-范数 无穷范数条件数 cond,Matlab及其应用,37,3.3 矩阵的超越函数,MATLAB中exp、sprt、sin、cos等命令可以直接使用在矩阵上,这种运算只是定义在矩阵的单个元素上,即分别对矩阵的每个元素进行运算。MATLAB中也提供了基本的三角函数。注意其中的取整,Matlab及其应用,38,3.3 矩阵的超越函数,Matlab及其应用,39,3.4

14、 关系和逻辑运算,1 关系操作符MATLAB常用的关系操作符有:(大于)、=(大于或等于)、=(等于)、!=(不等于)。MATLAB的关系操作符可以用来比较两个大小相同的数组,或者比较一个数组和一个标量。在与标量比较时,结果和数组大小一样。a=1:9;b=a4b=0 0 0 0 1 1 1 1 1c=a(a4)c=5 6 7 8 9,Matlab及其应用,40,2 逻辑操作符,逻辑操作符定义了一种与或非的关系表达式。MATLAB的逻辑操作符有&(与)、|(或)、(非)。例如:c=(a4)c=1 1 1 1 0 0 0 0 0c=(a4)&(a7)c=0 0 0 0 1 1 0 0 0,Matl

15、ab及其应用,41,四、矩阵操作,4.1 矩阵下标MATLAB通过确认下标,可以对矩阵进行插入子块、提取子块和重排子块的操作。为了提取矩阵a的第n行、第m列的元素值,使用a(n,m)可以得到。同样,将矩阵a的第n行、第m列的元素值赋为r,使用a(n,m)=r这样的命令。需要注意的是,如果在提取矩阵值时,行或列的值大于矩阵的大小,则出错;而在矩阵赋值时,如果行或者列超出矩阵的大小,则MATLAB自动扩充矩阵的规模,使得可以赋值,扩充部分以零填充。,Matlab及其应用,42,4.1 矩阵下标,利用矩阵下标,MATLAB还提供了子矩阵功能。同样是上面的a(n,m),如果n和m是向量,而不是标量,则

16、将获得指定矩阵的子块.同样,矩阵的子块还可以被赋值。如果在取子块时,n或m是“:”,则返回指定的所有行或列。如果在矩阵子块赋值为空矩阵(用表示),则相当于消除相应的矩阵子块.矩阵的序号编址:按列计数。,Matlab及其应用,43,4.2矩阵大小,在MATLAB命令行中,使用whos命令可以察看到所有变量的大小。为了获得矩阵或者向量的大小,MATLAB还提供了两个有用的函数size和length。size按照下面的形式使用:m,n=size(a,x)。一般的,函数的输入参量x不是用,这是当只有一个输出变量时,size返回一个行向量,第一个数为行数,第二个数为列数;如果有两个输出变量,第一个返回量

17、为行数,第二个返回数为列数。当使用x时,x=1返回行数,x=2返回列数,这时只有一个返回值。length返回行数或者列数的最大值,即length(a)=max(size(a)。,Matlab及其应用,44,4.3 矩阵操作函数,MATLAB提供了一组执行矩阵操作的函数,例如flipud(a)使得矩阵上下翻转,fliplr(a)使得矩阵左右翻转,rot90(a)使得矩阵逆时针翻转900等等。,Matlab及其应用,45,4.4逻辑矩阵,逻辑矩阵是大小和对应矩阵相同,而元素为0或者1的数组。逻辑数组一般由关系算子创建。可以使用逻辑矩阵来取得矩阵的部分元素值,得到矩阵中所有大于3的值。使用逻辑矩阵也

18、可以对矩阵的部分赋值。,Matlab及其应用,46,4.5 矩阵查找和排序,子矩阵的查找使用find命令完成,它返回关系表达式为真的下标。例如:a=10:20;find(a15)ans=7 8 9 10 11矩阵的排序使用sort函数,它将矩阵按照升序排列。,Matlab及其应用,47,5矩阵的查找和排序,子矩阵的查找使用find命令完成,它返回关系表达式为真的下标。矩阵的排序使用sort函数,它将矩阵按照升序排列。应用:去奇异点:a(find(astd(a)*3)嵌入数据:在指定大小的数据后加入数据替换:替换指定大小的数据段,Matlab及其应用,48,6 字符串处理,MATLAB 真正强有

19、力的地方在于它的数值处理能力。然而,经常希望操作文本,例如把标号和标题放在图上。在MATLAB 里,文本当作特征字符串或简单地当作字符串。字符串内的单引号是由两个连续的单引号来表示。字符串连接可以直接从数组连接中得到。,Matlab及其应用,49,字符串函数,eval(string)作为一个MATLAB 命令求字符串的值eval(try,catch)blanks(n)返回一个n 个零或空格的字符串deblank 去掉字符串中后拖的空格feval 求由字符串给定的函数值findstr 从一个字符串内找出字符串isletter 字母存在时返回真值isspace 空格字符存在时返回真值isstr 输

20、入是一个字符串,返回真值lasterr 返回上一个所产生MATLAB 错误的字符串strcmp 字符串相同,返回真值strrep 用一个字符串替换另一个字符串strtok 在一个字符串里找出第一个标记,Matlab及其应用,50,类型转换,char x=77 65 84 76 65 66;char(x)int2str 四舍五入为整数转换为字符串num2str 将数字转换为字符串mat2str 将矩阵的数据转换为字符串str2num,Matlab及其应用,51,7 单元结构,单元结构:cell把不同属性的数据纳入一个变量中类似于具有下标的矩阵和多维数组,但这些下标不是用圆括号,而是用大括号括起来

21、的。pp=cellstr(asd testetet sfsdfsdfdfgsdgsg sfdfgfdfgf)显示内容:pp(1)和pp1的区别清空一个单元数据:pp(3)=和pp3=的区别,Matlab及其应用,52,8 结构体,结构体将某一类相关的信息纳入一个统一的变量名字管理。先建立一个结构体:a.b=1构建一个结构体的数组:pp(m,n)=struct(a)删除一个变量:pp=rmfield(pp,b),Matlab及其应用,53,四、脚本,对于简单问题,使用直接输入命令简单有效;对稍复杂和多次重复的应用,直接输入命令比较麻烦。MATLAB提供了逻辑解决方案,它允许用户把多个命令放在一个

22、简单的文本文件中,如同在MATLAB中键入命令一般,这种文件称为脚本文件,由于脚本文件以m为扩展名,它常称为M文件。脚本文件为文本形式的,对跨平台处理十分有利。使用脚本文件,可以把命令保存在磁盘上,便于以后的访问;同时对使用大的数组也带来的方便;增加注释可以为脚本中的命令作文挡以免以后忘记。,Matlab及其应用,54,4.1 流程控制,为了便于应用,MATLAB提供了一些流程控制的命令。这些命令对脚本编写带来了一些方便,但是需要注意的是,尽量不要使用这些流程控制命令,尤其是循环控制命令。1 for循环for循环允许一组命令以固定的次数重复,它的一般形式是for x=array command

23、endfor 和end之间的命令串按数组array的每一列执行一次,直到n次后终止。,Matlab及其应用,55,For循环应当注意的一些方面,for循环不能使用内部重新赋值循环变量而终止;for循环内部接受任何有效的MATLAB数组;for循环可以嵌套;只要有矩阵形式可以解决的问题,不要使用for循环。使用for循环的算法执行很慢,一个好的MATLAB算法部应当出现循环语句。Tic/toc循环可以使用break跳出,但只跳出所在的循环,不跳出整个嵌套结构。,Matlab及其应用,56,2while循环,与for循环以固定的次数求一组指令相反,while循环以不定的次数求一组语句的值。Whil

24、e循环的一般形式为:while expression commondsend只要表达式expression里的所有元素为真,就执行命令串commands。通常表达式求值给一个标量值,单数组值也同样有效。,Matlab及其应用,57,3 if-else-enf结构,很多情况下,命令的序列必须根据关系的检验有条件的执行,它由if-else-end结构提供。它的结构如下:if expression1 commands1elseif expression2 commands2elseif else commandsend,Matlab及其应用,58,If-Then-Else,在执行过程中,MATLAB

25、依次检查各个表达式,只执行第一个表达式为真的命令串,接下来的关系表达式不检验,跳过其余的if-else-end结构,而且,最后的else命令可有可无。,Matlab及其应用,59,try-catch结构,可以进行错误的处理,提高计算的可靠性try 可能出错的语句catch 错误处理end,Matlab及其应用,60,4.2 函数,把一个比较大的任务分解为多个比较小的任务,它们之间通过调用实现参数传递,小任务可以是函数。1 函数调用常见的函数调用形式为:out1,out2,=function(in1,in2,)一个函数可以嵌套,也可以调用其它的函数,甚至调用自己(也就是递归调用)。函数文件,函数

26、名称和文件名必须相同。,Matlab及其应用,61,函数,需要注意函数文件的放置位置,一般自己的函数文件放在当前目录;如果对一个专题有了足够多的函数,可以生成一个工具箱,放在一个固定的目录下,并在MATLAB中加入这个目录路径即可。使用函数可以加快计算速度。MATLAB首次执行一个函数时,它将打开的文件编译为存储器内部形式,加速了执行速度。普通的m文件不被编译,在每次编译时,文件将逐行解释执行。函数的前一部分注释为帮助行,在使用help命令是看到的为这些注释行。,Matlab及其应用,62,2 参数传递,MATLAB函数的输入输出数目都可以变化,通过这个特性,可以实现一些自定义的功能。函数的输

27、入输出参数数目可以通过变量nargin和nargout获得。函数调用中可以使用少于规定的输入输出参数数目,但是不能更多。在MATLAB中,参数具有自己的专有工作空间。函数中的参数和命令行参数不在一个空间中,它们的唯一联系为函数的输入输出变量。输入参数在函数中是可读的,但任何改动不会传递回上一级空间。使用global命令可以将变量说明为全局的,则在函数、命令行等都可以共享这些变量。在实际应用中,应当尽量避免使用全局变量。,Matlab及其应用,63,3 函数注意,函数可以按少于函数M 文件中所规定的输入和输出变量进行调用,但不能用多于函数M 文件中所规定的输入和输出变量数目。如果输入和输出变量数

28、目多于函数M 文件中function 语句一开始所规定的数目,则调用时自动返回一个错误。当调用一个函数时,所用的输入和输出的参量的数目,在函数内是规定好的。函数工作空间变量nargin 包含输入参量个数;函数工作空间变量nargout 包含输出参量个数。事实上,这些变量常用来设置缺省输入变量,并决定用户所希望的输出变量。在M 文件函数里,变量nargout 可用来检验输出参量的个数,并按要求修正输出变量的创建。,Matlab及其应用,64,3 函数注意,函数有它们自己的专用工作空间,它与MATLAB 的工作空间分开。函数内变量与MATLAB 工作空间之间唯一的联系是函数的输入和输出变量。如果函

29、数任一输入变量值发生变化,其变化仅在函数内出现,不影响MATLAB 工作空间的变量。函数内所创建的变量只驻留在函数的工作空间,而且只在函数执行期间临时存在,以后就消失。因此,从一个调用到下一个调用,在函数工作空间变量存储信息是不可能的。,Matlab及其应用,65,3 函数注意,当调用一个函数时,输入变量不会拷贝到函数的工作空间,但使它们的值在函数内可读。然而,改变输入变量内的任何值,那么数组就拷贝到函数工作空间。进而,按缺省,如果输出变量与输入变量相同,例如,函数x=fun(x,y,z)中的x,那么就将它拷贝到函数的工作空间。因此,为了节约存储和增加速度,最好是从大数组中抽取元素,然后对它们

30、作修正,而不是使整个数组拷贝到函数的工作空间。,Matlab及其应用,66,3 函数注意,如果变量说明是全局的,函数可以与其它函数、MATLAB 工作空间和递归调用本身共享变量。为了在函数内或MATLAB 工作空间中访问全局变量,在每一个所希望的工作空间,变量必须说明是全局的。实际编程中,无论什么时候应尽量避免使用全局变量。要是用了全局变量,建议全局变量名要长,它包含所有的大写字母,并有选择地以首次出现的M 文件的名字开头。如果遵循建议,则在全局变量之间不必要的互作用减至最小。,Matlab及其应用,67,3 函数注意,MATLAB 以搜寻脚本文件的同样方式搜寻函数M 文件。例如,输入 cow

31、,MATLAB 首先认为cow 是一个变量。如果它不是,那么MATLAB 认为它是一个内置函数。如果还不是,MATLAB 检查当前cow.m 的目录或文件夹。如果它不存在,MATLAB 就检查cow.m 在MATLAB 搜寻路径上的所有目录或文件夹。从函数M 文件内可以调用脚本文件。在这种情况下,脚本文件查看函数工作空间,不查看MATLAB 工作空间。从函数M 文件内调用的脚本文件不必用调用函数编译到内存。函数每调用一次,它们就被打开和解释。因此,从函数M 文件内调用脚本文件减慢了函数的执行。,Matlab及其应用,68,3 函数注意,当MATLAB 运行时,它缓存了存储在Toolbox 子目

32、录和Toolbox 目录内的所有子目录中所有的M 文件的名字和位置。这使MATLAB 很快地找到和执行函数M 文件。被缓存的M 文件函数当作是只读的。如果执行这些函数,以后又发生变化,MATLAB 将只执行以前编译到内存的函数,不管已改变的M 文件。而且,在MATLAB 执行后,如果M 文件被加到Toolbox 目录中,那么它们将不出现在缓存里,因此不可利用。所以,在M 文件函数的使用中,最好把它们存储在Toolbox 目录外,或许最好存储在MATLAB 目录下,直至它们被认为是完备的。当它们是完备时,就将它们移到一个只读的Toolbox 目录或文件夹的子目录内。最后,要确保MATLAB 搜索

33、路径改变,以确认它们的存在。,Matlab及其应用,69,3 函数注意,MATLAB 函数error 在命令窗口显示一个字符串,放弃函数执行,把控制权返回给键盘。这个函数对提示函数使用不当很有用,如在以下文件片段中:if length(val)1error(VAL must be a scalar.)end这里,如果变量val 不是一个标量,error 显示消息字符串,把控制权返回给命令窗口和键盘。,Matlab及其应用,70,脚本,echoinput x=input();keyboard returnpausedebug:matlab edittic/toc,Matlab及其应用,71,五、稀疏矩阵,sparse 转换一个矩阵为稀疏矩阵speyesprand(n,m,d)/sparandnfullspygplot,Matlab及其应用,72,如何在网络上找一个工具箱,Matlab及其应用,73,如何自己做一个工具箱,Matlab及其应用,74,思考题,进行下列计算,给出不使用for和while等循环语句的计算方法;1 2.求出y=x*sin(x)在0 x100的每个峰值,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号