您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第九章MATLAB编程20150511
1第九章MATLAB编程MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。MATLAB是一款高效的工程计算软件,将计算、可视化和编程功能集成在简单易用的界面环境中。问题和求解可用大家熟悉的数学方法去描述。在该部分内容中,我们将介绍如何使用MATLAB软件进行编程的基础知识,包括MATLAB界面环境使用、矩阵与数组运算、程序设计的控制流语句、函数与M文件操作,MATALB绘图。在案例编程实现中,以大家熟悉的数学方法去描述问题和求解[1]。第一节MATLAB简介一、界面使用本章使用的版本是MATLABR2012b,其界面环境简单友好易用.下图是MATLAB的主界面如图1所示。最左边窗口是CurrentFolder窗口,用来显示当前工作目录下的所有文件,通常函数文件或数据文件都默认保存在当前工作目录,可以更改此目录以保存文件。也可以将这个窗口关闭,只要点击该窗口上的关闭按钮则可;中间窗口是CommandWindow命令窗口,它是MATLAB界面窗口的重要组成部分,大部分的人交互操作都是通过CommandWindow完成的。在该窗口中输入命令,然后回车,即可执行命令。右侧下方是CommandHistory(历史命令窗口),系统将每次执行指令保存起来,并按顺序显示在此CommandHistory窗口中。如果需要用到以前的命令,可以在CommandHistory窗口中查到,可按日期查找,可以选择单条历史命令,2也可以同时选择多条历史记录。然后右选择复制,将其粘贴到CommandWindow窗口中执行。也可将其作为文本复制到Word文档或txt文档中。如果双击历史记录中的命令,则系统会立即执行被双击的命令一次。最右侧有上方是Workspace窗口,用查看保存在工作空间的各变量,可以方便地查看各变量的相关信息如变量名、行列数、各元素中的最大值与小值,以及该变量在内存分配的字节数等。图1一打开MATLAB则在CommandWindow中会出现“”,此符号表示MATLAB软件已准备好了,正在待命令的输入。图2如输入指令:rank(A)A=[123]然后回车,则出现运算结果:A=123此指令表示输入一个一行三列的矩阵(即行向量),并将此矩阵(向量)保3存在变量A中。关于矩阵及向量向量,在第二节中详细解释。指令执行完毕之后,会发现左下方的CommandHistory窗口中会多出现一行刚刚输入的指令。如图2所示。同时Workspace窗口也会多出一行,如图3所示。Workspace是用来显示可用的各种变量。图4显示了变量A和它的值、最小元素、最大元素及类型等信息,拉动滚动条即可显示出来。图3图4在上任一处右击,然后在弹出菜单上选择需要查看的相关信息。如图5所示。图5由于MATLAB功能强大且应用广泛,限于篇幅原因,本章所介绍的内容非常有限,要熟悉使用MATLAB,还需要参看其它书籍,尤其是学会勤查软件自带的帮助文档。MATLAB提供了强大的帮助功能,其内容丰富,形式多样。进入MATLAB帮助文档界面后,点击相应的连接即可。在本章后续部分,将结合实例来讲解MATLAB环境的使用。第二节矩阵与数组运算一、矩阵与数组的概念在MATLAB中,数组和矩阵本身是没有区别的,在内存中是一样的。只是针对不同的运算方式,将其为数组运算或矩阵运算。如果运算是按元素对应进行的,则称为数组运算。如果按线性代数学中的方式运算,则称为矩阵运算。MATLAB中数据是以数组形式来组织的,这将大大提高计算速度根据需要。根据需要,可分别创建一维数组和二维数或多维数组。以下举例说明数组的运算方式和矩阵的运算方式4例1计算下列两个矩阵的相乘和相加运算:1211,3402AB在MATALB界面中的CommandWindow窗口中输入如下指令,然后回车:A=[12;34]%输入的矩阵保存在变量A中A=1234B=[-11;02]%输入的矩阵保存在变量B中B=-1102C=A*B%矩阵方式运算,即按线性代数中的矩阵相乘方式计算C=-15-311A.*B%数组方式运算,即逐元素对应相乘ans=-1208说明:1、MATLAB中,矩阵或向量按元素逐个输入的方法,就是将所有元素放在一对方括号内,行与行之间以分号“;”隔开,每一行中各元素之间以空格或逗号隔开。2、MATLAB指令输入时,必需在英文状态下输入,否则会出错;3、如果一条指令以分号“;”作为结束符,则运算结果并不显示在CommandWindow窗口中,但保存在Workspace中,并通过Workspace窗口进行查看。如果没有分号,则将结果显示在CommandWindow中;4、百分号“%”表示注释,从%开始到行未为方便人阅读所加的注释,不是指令中的一部分;5、本书中凡MATLAB指令都用加粗字体;6、“=”称为赋值符号,如果表达式的值没有赋值给某个指定的变量名,则将表达式的值赋值给的变量名ans,当下一行指令也没有指定将表达式的值赋值给某个指定变量时,将用下一行指认令的执行结果覆盖ans的值。7、MATLAB中变量无需要声明就可直接使用。8、矩阵运算方式下运算符左侧没有小黑点:“*”,数组运算方式下运算符左侧有小黑点中:“.*”,其它运算符也是如此,只要运算符左侧有小黑点的就是数组方式运算,否则就矩阵方式运算。二、矩阵与数组的创建一、逐个元素输入法。例2输入元素生成矩阵。A=[123;456];A=123456二、步长生成法一组数组。5使用冒号“:”,如m:n,在m和n之间以步长为1生成一个一维数组;例3指定步长生成数组。A=2:6A=23456如果指定步长,则应采用如下形式:m:d:n其中d代表步长,最后一个元素是m加上步长的整数倍,不一定是n例4指定步长生成数组。A=2:3:7A=25A=2:3:9A=258三、定数线性采样法生成一维数组。A=linspace(a,b,n)在a和b之间按等间隔采样生成元素为n的一维数组。包括端点。例5指定区间和元素个数生成数组。linspace(1,5,4)ans=1.00002.33333.66675.0000四、特殊矩阵(数组)的生成方法:1、ones(m,n),生成m行n列,且元素全是1的矩阵2、zeros(m,n),生成m行n列,且元素全是0的矩阵3、eye(m,n),生成m行n列的矩阵,当m和n不相等时,左上角方阵为单位矩阵,m和n相等时,可用eye(n)生成一个n阶的单位矩阵。例6生成单位矩阵eye(3,5)ans=100000100000100eye(5,3)ans=100010001000000eye(3)ans=1000100014、随机矩阵的创建例7生成随机矩阵rand('state',0)%把均匀分布伪随机发生器置为0状态v=rand(2,3)%产生一个2×3的随机矩阵v=0.95010.60680.891360.23110.48600.76215、魔方矩阵(行和、列和与对角和都相等,为小于等于元素个数的互不相同的整数)例8生成魔方矩阵。m=magic(3)%产生一个3阶魔方矩阵m=816357492三、矩阵元素的访问操作以下以举例的方式说明矩阵的访问操作如下:例9访问和操作元素。v=[1234567];%生成一个行向量v(3)%查询第三个元素的值ans=3v(3)=23%将第三个元素的值设为23v=12234567v([126])=[111216]%将下标为1、2、6的三元素值设为11、12、16v=11122345167v(4:end)%查询第4至最后元素之间的所有元素ans=45167v(1:5)%查询第1至5个元素ans=11122345m=[123;456]%产生一个新矩阵mm=123456m(2,3)%查询第2行第3列位置上的元素ans=6m(:,2)%查询第2列元素上所有行的元素ans=25m(2,:)%查询第2行上所有列的元素ans=456m(2,[12])%查询第2行上的第1、2列位置上的元素ans=45m(1,[23])=[8899]%将第1行上的第2、3列上的元素分别设为88和99m=718899456m(2,2)=518%将第2行2列位置上的元素设为518m=1889945186四、常用的运算符和运算函数在该部分,列出一些比较常用的,稍作说明,其它的以列表形式给出,以便查询。其它更多的运算函数请参看帮助系统。一、数组(矩阵)运算表1运算符与运算函数运算函数名实现功能运算函数名plus或+加minus或-减times或.*数组乘法mtimes或*矩阵乘法rdivide或./数组右除mrdivide或/矩阵右除ldivide或.\数组左除mldivide或\矩阵左除power或.^数组求幂mpower或^矩阵求幂cumprod累计求乘积cumsum累计求和diff计算差分prod计算数组乘积sum计算数组元素的和fix向零方向圆整ceil向数轴正向圆整floor向数轴负向圆整round向最近的整数圆整mod(a,b)a除以b的余数dot计算点积cross计算叉积1、加法:c=a+b或c=plus(a,b),参数a和b要求有相同的行列数2、减法:c=a-b或c=minus(a,b),参数a和b要求有相同的行列数3、数组方式的乘法(Arraymultiply):c=a.*b或c=times(a,b)逐元素相乘,且参数a和b要求有相同的行列数4、矩阵方式的乘法(Matrixmultiplication):C=A*B按线性代数中的矩阵乘法进行运算A的列数必须等于B的行数5、数组方式右除(Rightarraydivision):x=A./B或x=rdivide(A,B)逐元素相除,要求参数A,B的行列数相同。例如:例10组数方式右除矩阵。A=[2468;3579];B=10*ones(2,4);%ones(2,4)生成2行4列且元素全是1的矩阵,x=A./Bx=0.20000.40000.60000.80000.30000.50000.70000.90006、数组方式左除(Leftarraydivision):8x=B.\A或x=ldivide(B,A)逐元素相除,要求参数A,B的行列数相同。例如:例11组数法左除矩阵。A=ones(2,3);B=[123;456];x=B.\Ax=1.00000.50000.33330.25000.20000.166
本文标题:第九章MATLAB编程20150511
链接地址:https://www.777doc.com/doc-2123685 .html