收藏 分销(赏)

matlab培训教程PPT学习课件.ppt

上传人:快乐****生活 文档编号:9809951 上传时间:2025-04-09 格式:PPT 页数:173 大小:5.24MB 下载积分:20 金币
下载 相关 举报
matlab培训教程PPT学习课件.ppt_第1页
第1页 / 共173页
matlab培训教程PPT学习课件.ppt_第2页
第2页 / 共173页


点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,A,*,M,ATLAB,及其应用,授课教师,:,何俊杰,数学学院,email:hejj99,Application of Matlab,1,2,A,2,第一讲,Matlab,概述,前言,Matlab,软件概述,Matlab,的桌面环境及入门知识,A,3,1.1 Matlab,概述,内容,Matlab,发展历史,Matlab,产品家族,(,Matlab,family of products,),体系,Matlab,语言的特点。,目的,全面了解,Matlab,软件包,激发对,Matlab,软件的学习兴趣。,A,4,1.1.1 MATLAB,的历史及影响,70,年代中期,,,Cleve Moler,博土及其同事在美国国家基金会的帮助下,开发了,LINPACK,和,EISPACK,的,FORTRAN,语言子程序库,,这两个程序库代表了当时矩阵运算的最高水平。,到了,70,年代后期,,身为美国新墨西哥州大学计算机系系主任的,CIeve Moler,,在给学生上线性代数课时,为了让学生能使用这两个子程序库,同时又不用在编程上花费过多的时间,开始着手用,FORTRAN,语言为学生编写使用,LINPACK,和,EISPACK,的接口程序,他将这个程序取名为,MATLAB,,,其名称是由,MATrix,和,LABoratory,(矩阵实验室)两个单词的前三个字母所合成,。,在,1978,年,,,Malab,就面世了。这个程序获得了很大的成功,受到了学生的广泛欢迎。在以后的几年里,,Matlab,在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传。,Cleve Moler,A,5,将,MATLAB,商品化的不是,Cleve Moler,而是一个名叫,Jack Little,的人。当免费的,MATLAB,软件到,Stanford,大学,,Jack Little,正在该校主修,控制,,便接触到了当时,MATLAB,,直觉告诉他,这是一个具有巨大发展潜力的软件。因此他在毕业沒多久,就开始,用,C,语言重新编写了,MATLAB,的核心。,在,Moler,的协助下,于,1984,年成立,MathWorks,公司,首次推出,MATLAB,商用版。在其商用版推出的初期,,MATLAB,就以其优秀的品质(,高效的数据计算能力和开放的体系结构,)占据了大部分数学计算软件的市场,原来应用于控制领域里的一些封闭式数学计算软件包(如英国的,UMIST,、瑞典的,LUND,和,SIMNON,、德国的,KEDDC,)就纷纷被淘汰或在,MATLAB,上重建。,Jack Little,A,6,Cleve Moler,至今仍是该公司的首席科学家,,他以,60,多岁的高龄,还常常亲自进行撰写程序的工作,非常令人佩服。如果你有数值运算方面的高水平问题,寄到,MathWorks,后,大部份还是会由,Cleve Moler,亲自回答。在,1994,年,,Pentium,芯片曾发生,Fdiv,的,bug,,当时,Cleve Moler,是第一个以软件方式解决此,bug,的人,曾一时脍炙人口。,在公司初创的五年,,Jack Little,非常辛苦,常常身兼数职(董事长、总经理、推销、程序开发等),但公司一直稳定发展,从当初的一人公司,到,1993,年的,200,人,到,2000,年的,500,余人,到,2005,年公司员工达到了,1300,人,不但打败其他竞争软件,而且前景一片欣欣向荣。根据,Jack Little,个人说法,,MATLAB,早期成功的两大因素是:选用了,C,语言及选定,PC,为主要平台,这似乎和微软的成功有相互呼应之妙。,MathWorks,公司,目前仍然是私人企业,并未上市,这和,Jack Little,个人理念有关,他认为,MATLAB,的设计方向应该一直是以顾客的需求与软件的完整性为首要目标,,而不是以盈利为主要目的,因此,MATLAB,一直是在稳定中求进步,而不会因为上市而遭受股东左右其发展方向。这也是为什么,MATLAB,新版本总是姗姗来迟的原因,因为他们不会因为市场的需求而推出不成熟的产品。此外,由于,Jack Little,保守的个性,也使得,MathWorks,不曾跨足,MATLAB/Simulink,以外的行业,当前商场上纷纷扰扰的并购或分家,,MathWorks,完全是绝缘体。,A,7,1992,年,支持,Windows 3.x,的,MATLAB 4.0,版本推出,增加了,Simulink,,,Control,,,Neural Network,,,Signal Processing,等专用工具箱。,1993,年,11,月,,MathWorks,公司推出了,Matlab 4.1,,其中主要增加了符号运算功能。当升级至,Matlab 4.2c,,这一功能在用户中得到广泛应用。,1997,年,,Matlab 5.0,版本问世了,实现了真正的,32,位运算,加快数值计算,图形表现有效。,2001,年初,,MathWorks,公司推出了,Matlab 6.0,(,R12,)。,2002,年,7,月,推出了,Matlab 6.5(R13),,在这一版本中,Simulink,升级到了,5.0,,性能有了很大提高,另一大特点是推出了,JIT,程序加速器,,Matlab,的计算速度有了明显的提高。,2005,年,9,月,推出了,MAILAB 7.1(Release14 SP3),,在这一版本中,Simulink,升级到了,6.3,,软件性能有了新的提高,用户界面更加友好。值得说明的是,,Matlab V7.1,版采用了更先进的数学程序库,即,“,LAPACK,”,和,“,BLAS,”,。,目前,,Matlab,软件支持多种系统平台,如常见的,WindowsNT/XP,、,UNIX,、,Linux,等。,Matlab,版本的发展,A,8,MATLAB,就是这样经过了近,30,年的专门打造、,20,多年的千锤百炼,它以高性能的,数组运算(包括矩阵运算),为基础,不仅实现了大多数数学算法的,高效运行函数,和,数据可视化,,而且提供了非常高效的,计算机高级编程语言,,在用户可参与的情况下,,各种专业领域的工具箱,不断开发和完善,,MATLAB,取得了巨大的成功,已广泛应用于,科学研究、工程应用,用于数值计算分析、系统建模与仿真,。,早在,20,世纪,90,年代初,,欧美等发达国家的大学就将,MATLAB,列为一种必须掌握的编程语言。近几年来,国内的很多大学也将,MATLAB,列为了本科生必修课程。,与,Maple,、,Mathematica,数学计算软件相比,,MATLAB,以数值计算见长,而,Maple,等以符号运算见长,能给出解析解和任意精度解,而处理大量数据的能力远不如,MATLAB,。,MATLAB,软件功能之强大、应用之广泛,已成为为,21,世纪最为重要的科学计算语言,。可见学习掌握这一工具的重要性。,A,9,MATLAB,产品由若干模块组成,不同的模块完成不同的功能,其中有:,实际上,MATLAB,本身就是一个极其丰富的资源库,那么应该从哪一部分开始着手、学习使用,MATLAB,呢?这就有必要了解这一软件产品的体系结构。,MATLAB Compiler,这种编译器可以将,MATLAB,程序文件编译生成标准的,C/C+,语言文件,而生成的标准的,C/C+,文件可以被任何一种,C/C+,编译器编译生成函数库或可执行文件,以提高程序的运行效率。,1.1.2 MATLAB,产品的体系结构,MATLAB,MATLAB Toolboxes,MATLAB Compiler,Simulink,Simulink Blocksets,Real-Time Workshop(RTW),Stateflow,Stateflow Coder,由这些模块产品之间的关系可以图,1.1,表示。,图,1.1 MATLAB,产品体系结构,围绕着,MATLAB,这个计算核心,形成了诸多针对不同应用领域的算法程序包,被称为专用工具箱(,Toolbox,),这些工具箱的列表以及每个工具箱的使用详见,MATLAB,在线帮助文档。,MATLAB,本身所提供的工具箱大概有,40,多个,另外还有其他公司或研究单位开发提供的工具箱,这些工具箱的总数已有,100,多个,而且新的工具箱还在不断增加。如果你有特别的应用领域,可以首先到网上查找是否已有相关的工具箱,很可能已有人将你要做的应用程序作成工具箱了。,Simulink,是窗口图形方式的、专门用于连续时间或离散时间的动态系统建模、分析和仿真的核心。,Real-Time Workshop,是一种实时代码生成工具,它能够根据,Simulink,模型生成程序源代码,并打包、编译所生成的源代码生成实时应用程序。,从现有的,Simulink,和,Stateflow,自动生成,C,语言程序代码的功能、定点运算模块集(,Fixed-point Blockset,)与,C,语言程序代码到,VHDL,(,Very High Speed Integrated Circuit Hardware Description Language,,一种标准的硬件电路设计语言,)的自动转换功能,可以看出,高级的系統仿真或低级的芯片算法设计,都可用,MATLAB,、,Simulink,、,Stateflow,及相关的工具箱来完成。,Stateflow,是基于有限状态机理论针对复杂的事件驱动系统进行建模、仿真的工具。,Stateflow Coder,是基于,Stateflow,状态图生成高效、优化的程序代码。,围绕着,Simulink,仿真核心所开发的应用程序包,称为模块集(,Blocksets,),MATLAB,产品提供许多专用模块集,如,Communication Blockset,、,DSP Blockset,、,SimPowerSystem Blockset,、,Signal Processing Blockset,等,详见,MATLAB,在线帮助文档。,MATLAB,是,MATLAB,产品家族的计算核心与基础,是集高性能数值计算与数据可视化于一体的高效编程语言。,A,10,1.1.3,MATLAB,编程语言的特点,语法规则简单,。,尤其内定的编程规则,与其他编程语言(如,C,、,Fortran,等)相比更接近于常规数学表示。对于数组变量的使用,不需类型声明,无需事先申请内存空间。,MATLAB,语言主要有以下几个特点:,MATLAB,基本的语言环境提供了数以千计的计算函数,,,极大的提高了用户的编程效率。如,一个,fft,函数即可完成对指定数据的快速傅里叶变换,这一任务如果用,C,语言来编程实现的话,至少要用几十条,C,语言才能完成。,因此,,MATLAB,是一个简单易用、功能强大的高效编程语言。,平台无关性(可移植性),。,MATLAB,软件可以运行在很多不同的计算机系统平台上,如,Windows Me/NT/2000/XP,、很多不同版本的,UNIX,以及,Linux,。无论你在哪一个平台上编写的程序都可以运行在其它平台上,对于,MATLAB,数据文件也一样,是平台无关的。极大保护了用户的劳动、方便了用户。,其绘图功能也是平台无关的,。无论任何系统平台,只要,MATLAB,能够运行,其图形功能命令就能正常运行。,MATLAB,是一种脚本式,(,scripted,),的解释型语言,,,无论是命令、函数或变量,只要在命令窗口的提示符下键入,并,“,回车(,Enter,),”,,,MATLAB,都予以解释执行。,A,11,功能强大,数值运算优势,符号运算优势,(Maple),强大的,2D,、,3D,数据可视化功能,许多具有算法自适应能力的功能函数,A,12,语言简单、内涵丰富,语言及其书写形式非常接近于常规数学书写形式;,其操作和功能函数指令就是常用的计算机和数学书上的一些简单英文单词表达的,如:,help,、,clear,等;,完备的帮助系统,易学易用。,扩充能力、可开发能力较强,MATLAB,完全成了一个开放的系统,用户可以开发自己的工具箱,可以方便地与,Fortran,、,C,等语言接口,编程易、效率高,Matlab,以数组为基本计算单元,具有大量的算法优化的功能函数,A,13,1.2 MATLAB,的桌面环境及入门知识,启动与退出,MATLAB,命令窗口及使用,数值表示、变量、表达式,命令历史窗口,工作空间,获取在线帮助,A,14,1.2.1,启动与退出,MATLAB,启动,MATLAB,直接用鼠标双击桌面上,MATLAB7.1,图标,或,Windows,桌面的,“,开始,”,“,所有程序,”,“,MATLAB7.1,”,“,MATLAB7.1,”,。,退出,MATLAB,关闭,MATLAB,桌面,在命令窗口执行,quit,或,exit,命令,MATLAB,缺省桌面(见下页),A,15,菜单栏,工具栏,文件编辑窗口,工作空间,历史命令,窗口,Start,菜单,命令窗口,命令提示符,1.2.1,启动与退出,MATLAB,(续),A,16,1.2.2,命令窗口的使用,激活命令窗口。,“,”,与闪烁的光标一起表明系统就绪,等待输入。,命令窗口脱离,MATLAB,桌面。,简单计算,【,例,2.2-1】,计算,(,1,)在,MATLAB,命令窗口输入,以下内容:,(12+2*(7-4)/32,(,2,)按,【Enter】,键,指令执行。,(,3,)返回的计算结果:,ans=,2,A,17,1.2.2,命令窗口(续),说明,在命令窗口,【Enter】,键提交命令执行。,Matlab,所用运算符(如,+,、,-,、,等)是各种计算程序中常见的。,计算结果中的,“,ans,”,是英文,“,answer,”,的一种缩写,其含义就是,“,运算答案,”,。,ans,是,Matlab,的一个预定义变量。,A,18,1.2.2,命令窗口,(续),简单计算(续),【,例,2.2-2】,计算,sin(45,),sin(45*pi/180),Matalb,中正弦函数,sin,就是常见的正弦函数。,它的参数值是以,“,弧度,”,为单位的。,pi,也是,Matalb,的预定义变量。,pi=3.14159,Matlab,对字母大小写是敏感的。,【,例,2.2-3】,计算 的值,其中,x=4.92,。,sqrt(2*exp(4.92+0.5)+1),Matalb,中开平方,sqrt(x),,是英文,square root,的缩写,。,Matalb,中指数函数,exp(x),,常见的表达方式,。,ans=,0.7071,ans=,21.2781,A,19,1.2.2,命令窗口,(续),“,clc,”,清除窗口显示内容的命令,。,【,例,2.2-4】,计算 的值。,y=2*sin(0.3*pi)/(1+sqrt(5),y=,0.5000,【,例,2.2-5】,计算 的值。,y=2*cos(0.3*pi)/(1+sqrt(5),y=,0.3633,命令行编辑,“,”,键调回已输入过命令。,修改。,A,20,1.2.2,命令窗口,(续),【,例,2.2-5】,计算半径为,5.2m,的圆的周长和面积。,radius=5.2;%,圆的半径,area=pi*5.22,circle_len=2*pi*5.2,area=,84.9487,circle_len=,32.6726,以上两例,命令行中用到了等号,“,=,”,。,计算结果不再赋给,“,ans,”,,而是赋给用户指定的变量,y,、,area,、,circle_len,。,无论是预定义变量还是用户自定义变量都被存储在系统的工作空间内,即系统定义的一个存储窗口变量的内存空间。,Who,、,whos,命令用来显示工作空间的变量,clear,命令用来清除工作空间的变量。,A,21,1.2.2,命令窗口,(续),who,whos,Your variables are:,ans circle_len y,area radius,Name Size Bytes Class,ans 1x1 8 double array,area 1x1 8 double array,circle_len 1x1 8 double array,radius 1x1 8 double array,y 1x1 8 double array,Grand total is 5 elements using 40 bytes,A,22,1.2.2,命令窗口,(续),clear y,who,Your variables are:,ans circle_len,area radius,clear ans area,whos,Your variables are:,Name Size Bytes Class,circle_len 1x1 8 double array,radius 1x1 8 double array,Grand total is 2 elements using 16 bytes,A,23,1.2.2,命令窗口,(续),数值显示格式设置,缺省显示格式:简洁的短(,short g,)格式,窗口命令及语法格式:,format,显示格式关键字,如:,format long%15,位数字显示,常见通用命令,命令含义,clc,清除命令窗口的显示内容,clear,清除,Matlab,工作空间中保存的变量,who,或,whos,显示,Matlab,工作空间中的变量信息,dir,显示当前工作目录的文件和子目录清单,cd,显示或设置当前工作目录,type,显示指定,m,文件的内容,help,或,doc,获取在线帮助,quit,或,exit,关闭,/,推出,MATALB,A,24,1.2.3,工作空间,查看工作空间内存变量,可以由,who,、,whos,。,命名新变量。,修改变量名,删除变量,绘图,保存变量数据,装入数据,A,25,1.2.4,历史窗口,历史窗口:,首先,记录每次启动时间,并,记录在命令窗口输入命令,,此次运行期间,输入的所有命令被记录为一组,并以此次启动时间为标志。,使用历史窗口:,可以查看命令窗口输入过的命令或语句,可以选择一条或多条命令执行拷贝、执行、创建,M,文件等。,要清除历史记录,可以选择,Edit,菜单中的,Clear Command History,命令,A,26,当前目录窗口:,指,Matlab,运行时的工作目录。,只有在当前目录和搜索路径下的文件、函数才可以被运行和调用。,如果没有特殊指明,数据文件也将存放在当前目录下;,用户可以将自己的工作目录设置成当前目录,从而使得所有操作都在当前目录中进行。,1.2.5,当前目录窗口和搜索路径,A,27,搜索路径:,指,Matlab,执行过程中对变量、函数和文件进行搜索的路径。,在,File,菜单中选择,Set Path,命令或在命令窗口输入,pathtool,命令,出现搜索路径设置对话框:,!修改完搜索路径后,需要进行保存。,1.2.5,当前目录窗口和搜索路径(续),A,28,1.2.6,获取在线帮助,MATLAB,提供的帮助信息有两类,简单纯文本帮助信息,help,lookfor,(条件比较宽松),例:,inverse,窗口式综合帮助信息(文字、公式、图形),doc,helpwin,A,29,【,功能演示,-1】,求方程,的全部根。,p=2,0,-3,71,-9,13;,建立多项式系数向量,x=roots(p),;,求根,x=,-3.4914,1.6863+2.6947i,1.6863-2.6947i,0.0594+0.4251i,0.0594-0.4251i,A,30,【,功能演示,-2】,求解线性方程组,a=2,3,-1;8,2,3;45,3,9;,建立系数矩阵,a,b=2;4;23;,建立列向量,b,x=inv(a)*b,x=,0.5531,0.2051,-0.2784,A,31,syms x y z,建立符号变量,x,y,z=solve(2*x+3*y-z-2,8*x+2*y+3*z-4,45*x+3*y+9*z-23),x=,151/273,y=,8/39,z=,-76/273,符号计算,A,32,【,功能演示,-3】,求解定积分,求解,I=,quad(x.*log(1+x),0,1),ans=,0.250,或,syms x,nt(x*log(1+x),0,1),ans=,1/4,A,33,【,功能演示,-4】,多项式曲线拟合,考虑如下,x-y,一组实验数据:,x=1,2,3,4,5,6,7,8,9,10,y=1.2,3,4,4,5,4.7,5,5.2,6,7.2,注:,一次多项式拟合:,p1=polyfit(x,y,1),三次多项式拟合:,p3=polyfit(x,y,3),plot,原始数据、一次拟合曲线和三次拟合曲线,x2=1:0.1:10;,y1=polyval(p1,x2),y3=polyval(p3,x2),plot(x,y,*,x2,y1,:,x2,y3),A,34,由图可见,三次拟合结果较好。,拟合曲线图,第,2,讲,Matlab,数据及其运算,Matlab,数据类型非常丰富,除,数值型,、,字符型,等基本数据类型外,还有,结构体,、,单元,等更为复杂的数据类型。,各种数据类型都以矩阵形式存在,,矩阵,是,Matlab,最基本的数据对象,并且矩阵的运算是定义在,复数域,上的。,35,2,A,36,2.1,数值表示、变量及表达式,数值的记述,Matlab,的数只采用习惯的十进制表示,可以带小数点和负号,;,其缺省的数据类型为,双精度浮点型,(,double,)。,例如:,3 -10 0.001 1.3e10 1.256e-6,变量命令规则,变量名、函数名对字母的大小写是敏感的。如,myVar,与,myvar,表示两个不同的变量。,变量名,第一个字母必须是,英文字母,。,变量名可以包含,英文字母、下划线和数字,。,变量名,不能包含空格、标点,。,变量名最多可包含,63,个,字符(,6.5,及以后的版本)。,A,37,2.1,数值表示、变量及表达式(续),Matlab,预定义的变量,变量名,意义,ans,最近的计算结果的变量名,eps,MATLAB,定义的正的极小值,=2.2204e-16,pi,圆周率,inf,值,无限大,i,或,j,虚数单元,,sqrt(-1),NaN,非数,,0/0,、,/,说明,每当,MATLAB,启动完成,这些变量就被产生。,MATLAB,中,被,0,除不会引起程序中断,给出报警的同时用,inf,或,NaN,给出结果。,用户只能临时覆盖这些预定义变量的值,,Clear,或重启,MATLAB,可恢复其值。,A,38,2.1,数值表示、变量及表达式(续),运算符和表达式,运算,数学表达式,MATLAB,运算符,MATLAB,表达式,加,a+b,+,a+b,减,a-b,-,a-b,乘,axb,*,a*b,除,a/b,或,ab,/,或,a/b,或,ab,幂,ab,说明,Matlab,用,“,”,和,”,/,”,分别表示,“,左除,”,和,“,右除,”,。对标量而言,两者没有区别。对矩阵产生不同影响。,MATLAB,表达式的书写规则与,“,手写方式,”,几乎完全相同。,表达式按与常规相同的优先级自左至右执行运算。,优先级:指数运算级别最高,乘除次之,加减最低。,括号改变运算的次序。,A,39,2.1,数值表示、变量及表达式(续),复数及其运算,MATLAB,中复数的表达:,z=a+bi,,其中,a,、,b,为实数。,MATLAB,把复数作为一个整体,象计算实数一样计算复数。,【,例,2.3-1】,复数,z1=3+4i,,,z2=1+2i,z3=,,计算,z1=3+4*i,z2=1+2*i,z3=exp(i*pi/6),z=z1*z2/z3,z_real=real(z),z_image=imag(z),z_angle=angle(z),z_length=abs(z),A,40,2.2 Matlab,矩阵,(,数组,),的表示,数组的概念,一维数组变量的创建,二维数组变量的创建,数组元素的标识与寻访,数组运算,多维数组,A,41,2.2.1.,数组,(array),的概念,数组定义:,按,行,(row),和,列,(column),顺序排列的实数或复数的有序集,被称为,数组,。,数组中的任何一个数都被称为这个数组的,元素,,由其所在的行和列标识,这个标识也称为数组元素的,下标或索引,。,Matlab,将,标量,视为,11,的数组。,对,m,行、,n,列的,2,维数组,a,:,计为,mn,的数组,a,;,*,行标识、列标识均从,1,开始;,行标识从上到下递增;,列标识从左到右递增。,1,2,3,4,5,2,22,23,24,25,3,32,33,34,35,4,42,43,44,45,a(3,4)=34,row is first,a=,A,42,数组的分类,一维数组,,也称为向量,(vector),。,行向量,(row vector),、列向量,(column vector),。,二维数组,(,矩阵,matrix),。,多维数组,。,有效矩阵,:每行元素的个数必须相同,每列元素的个数也必须相同。,2.2.1.,数组,(array),的概念,A,43,2.2.1,、数组,(array),的概念(续),行向量,列向量,a(2,1)=3,a(1,2)=2,b(3)=3,c(2)=2,A,44,2.2.2,、创建一维数组变量,第一种方法:使用方括号“,”,操作符,【,例,2-1】,创建数组,(,行向量,)a=1 3 pi 3+5i,a=1 3 pi 3+5*i,%or a=1,3,pi,3+5*i,a=,1.0000 3.0000 3.1416 3.0000+5.0000i,所有的向量元素必须在操作符“,”,之内;,向量元素间用,空格,或英文的,逗点“,”,分开。,第二种方法:使用冒号“,:”,操作符,【,例,2-2】,创建以,110,顺序排列整数为元素的行向量,b,。,b=1:10,b=1 2 3 4 5 6 7 8 9 10,A,45,2.2.2,、创建一维数组变量,(续),【,例,2-3】,键入并执行,c=1:2:10,和,d=1:2:9,c=1:2:10,c=1 3 5 7 9,d=1:2:9,d=1 3 5 7 9,利用冒号“,:”,操作符创建行向量的基本语法格式:,x=Start:Increment:End,Start,表示新向量,x,的第一个元素;,新向量,x,的最后一个元素不能大于,End,;,Increment,可正可负,若负,则必须,StartEnd,;若正,则必须,Starta=1 2 3;b=2 3 4;,c=a;b;,c1=a b;,第二种方法:函数方法,函数,ones,(,生成全,1,矩阵,),、,zeros,(,生成全,0,矩阵,),、,reshape,“help elmat”,获得基本的矩阵生成和操作函数列表,【,例,3-4】,创建全,1,的,3x3,数组。,ones(3),【,例,3-5】,创建全,1,的,3x4,数组。,ones(3,4),A,52,2.2.3,、创建二维数组变量,(续),【,例,3-5】,reshape,的使用演示,a=-4:4,a=,-4-3-2-1 0 1 2 3 4,b=reshape(a,3,3),b=,-4 -1 2,-3 0 3,-2 1 4,数组元素的排列顺序,,从上到下按列排列,,先排第一列,然后第二列,,要求数组的,元素总数不变,。,A,53,2.2.,4,、数组元素的标识与寻访,数组元素的标识,“全下标(,index,)”标识,经典数学书采用“全下标”标识法:,每一维对应一个下标。,如对于二维数组,用“行下标和列下标”标识数组的元素,,a(2,3),就表示二维数组,a,的“第,2,行第,3,列”的元素。,对于一维数组,用一个下标即可,,b(2),表示一维数组,b,的第,2,个元素,无论,b,是行向量还是列向量。,“单下标”(,linear index,)标识,所谓“单下标”标识就是用一个下标来表明元素在数组的位置。,对于二维数组,“单下标”编号:设想把二维数组的所有,列,,按先后顺序首尾相接排成“一维长列”,然后自上往下对元素位置执行编号。,两种“下标”标识的变换,:,sub2ind,、,ind2sub,A,54,2.2.,4,、数组元素的标识与寻访(续),【,例,4-1】,单下标的使用,a=zeros(2,5);,a(:)=-4:5,a=,-4 -2 0 2 4,-3 -1 1 3 5,注意数组的排列顺序。,A,55,2.2.,4,、数组元素的标识与寻访(续),元素与子数组的寻访与赋值,【,例,4-3】,一维数组元素与子数组的寻访与赋值,a=linspace(1,10,5),a=,1.0000 3.2500 5.5000 7.7500 10.0000,a(3),%,寻访,a,的第,3,个元素,ans=,5.5000,a(1 2 5),%,寻访,a,的第,1,、,2,、,5,个元素组成的子数组,ans=,1.0000 3.2500 10.0000,A,56,2.2.,4,、数组元素的标识与寻访(续),a(1:3),%,寻访前,3,个元素组成的子数组,ans=,1.0000 3.2500 5.5000,a(3:-1:1),%,由前,3,个元素倒序构成的子数组,ans=,5.5000 3.2500 1.0000,a(3:end),ans=,5.5000 7.7500 10.0000,a(3:end-1),ans=,5.5000 7.7500,%,第,3,个及其后所有元素构成的子数组,函数,end,作为参数使用,返回最后一个元素的下标,A,57,a(1 2 3 5 5 3 2 1),ans=,1.0000 3.2500 5.5000 10.0000 10.0000 5.5000 3.2500 1.0000,数组元素可以被任意重复访问,构成长度大于原数组的新数组。,a(6),?Index exceeds matrix dimensions.,下标值超出了数组的维数,导致错误,a(2.1),?Subscript indices must either be real positive integers or logicals.,下标值只能取正整数或逻辑值,2.2.,4,、数组元素的标识与寻访(续),A,58,2.2.,4,、数组元素的标识与寻访(续),a(3)=0,%,修改数组,a,的第,3,元素值为,0,a=,1.0000 3.2500 0 7.7500 10.0000,a(2 5)=1 1,a=,1.0000 1.0000 0 7.7500 1.0000,可以修改指定数组元素的值,一次可以修改多个数组元素的值,要修改的数组元素的个数应与送入数组的元素个数相同,A,59,2.2.,4,、数组元素的标识与寻访(续),【,例,4-3】,二维数组元素与子数组的寻访与赋值,a_2=zeros(2,4),%,创建,2x4,的全,0,数组,a_2=,0 0 0 0,0 0 0 0,a_2(:)=1:8,a_2=,1 3 5 7,2 4 6 8,a_2(2 5 8),%,单下标方式寻访多个元素,ans=,2 5 8,注意元素的排列顺序,A,60,2.2.,4,、数组元素的标识与寻访(续),a_2(2 5 8),=10 20 30,a_2=,1 3 20 7,10 4 6 30,a_2(:,2 3)=ones(2),%,双下标方式寻访并修改,a_2=,1 1 1 7,10 1 1 30,二维数组可以,“单下标”,方式或,“全下标”,方式访问、赋值;,“单下标”方式赋值时,,等号两边涉及的元素个数必须相等;,“全下标”方式赋值时,,等号右边数组的大小必须等于原数组中涉及元素构成的子数组的大小。,A,61,2.2.4,、数组元素的标识与寻访(续),a_2(:,end),ans=,7,30,a_2(:,end-1),ans=,1,1,a_2(:,end:-1:3),ans=,7 1,30 1,a_2(end,:),ans=,10 1 1 30,a_2(end,2:4),ans=,1 1 30,a_2(4 6)=6:7,a_2=,1 1 1 7,10 6 7 30,a_2(end,2:end-1),What is the result?,A,62,2.2.4,、数组元素的标识与寻访(续),【,例,4-4】,size,、,length,函数,a=ones(4,6)*6,m=size(a),len=length(a),b=1:5;,length(b),c=b,length(c),size,函数返回变量的大小,即变量数组的行列数,length,函数返回变量数组的最大维数,A,63,2.2.4,、数组元素的标识与寻访(续),双下标到单下标的转换,【,例,4-5】,sub2ind,函数,-,双下标转换为单下标,A=17 24 1 8;2 22 7 14;4 6 13 20;,A(:,:,2)=A-10,A(2,1,2),sub2ind(size(A),2,1,2),A(14),A,64,2.2.,4,、数组元素的标识与寻访(续),单下标到双下标的转换,【,例,4-6】,ind2sub,函数,-,双下标转换为单下标,b=zeros(3);,b(:)=1:9,IND=3 4 5 6,I,J=ind2sub(size(b),IND),A,65,2.2.5,、,多,维数组,多维数组的定义,在,MATLAB,的,数据类型,中,向量,可视为一维数组,,矩阵可视为,二,维数组,,,对于维数,(Dimensions),超过,2,的,数组均可视为,多维数组,(Multidimesional,Arrays,,,简称,N-D Arrays),。,A,66,2.2.5,、,多,维数组(续),将两个二维(平面)数组叠,在一起,就,构成三维数组,,,第三,维称为,页,(,Page),,如下,图所示,:,(3,4),(3,1),(3,2),(3,3),(2,4),(2,3),(2,2),(2,1),(1,4),(1,3),(1,2),(1,1),(1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4),页,列,页,行,A,67,2.2.5,、,多,维数组(续),三维数组,,可,对应,至一,个,X-Y-Z,三,维立体坐标,,如下,图所示,:,Z(,页,),Y(,列,),X(,行,),A,68,2.2.,5,、,多,维数组(续),三维数组元素的寻址:,可以,(,行、列、页,),来确定,。,以,维数为,342,的,三维数组为例,,其,寻址,方式如下,图所示,:,数组,A,是,三维数组,,其中,A(,:,:,1),代表第一,页,的,二维数组,,,A(,:,:,2),代表第,二页,的,二维数组,。,A,69,2.2.5,、,多,维数组(续),多维数组,的建立,建立一,个简单,的,多维数组,,可,直,接由,MATLAB,命令视窗内输入(使用“,”,操作符),例,:,由两个相同大小二维数组创建三维数组,A,(:,:,1),=1 0 2 5;4 1 8 7;3 2 6 3;,A(:,:,2)=3 5 4 1;2 6 2 1;4 2 3 0,A(:,:,1)=,1 0 2 5,4 1 8 7,3 2 6 3,A(:,:,2)=,3 5 4 1,2 6 2 1,4 2 3 0,A,70,执行命令:,whos A,,得到如下结果:,Name Size Bytes,Class,A 3x4x2,192,double array,Grand total is 24 elements using 192 bytes,2.2.5,、,多,维数组(续),A,71,2.2.6,、数组的算
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

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

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

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

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

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

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

客服