




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1/3321世纪高等院校计算机系列教材MATLAB 7.X程序设计第1章 MATLAB概述3/33学习目标(1)了解MATLAB的发展历程和特点; (2)掌握MATLAB的安装过程;(3)掌握MATLAB的工作环境。4/331.1 MATLAB的发展历程和特点1 操作系统 : DOS Windows2 版本:1992年 4.0 版1997年 5.0版1999年 5.3 版2000年 6.0版(Release 12)2002年 6.5版2004年 7.0版(Release 14)1.1.1 MATLAB的发展历程5/331.1.2 MATLAB的特点1. 计算功能强2人机界面好3. 编程效率高4
2、绘图功能强5可扩展性强6/331.2 MATLAB的安装与启动 1. 把MATLAB 7.0安装盘放入CD-ROM,一般会自动运行安装程序,如果不运行,可以进入光盘双击setup.exe文件,初始化完成,会出现对话框: 1.2.1 MATLAB的安装7/33 2. 单击Next按钮,出现一个对话框,分别输入名字、单位和安装序列号。输入后,单击Next,出现是否接受协议的对话框。8/333. 在是否接受协议的对话框中单击yes和Next,出现安装形式对话框,第一项是典型安装,一般选择默认。第二项是定制安装,可以选择产品和文件。9/334.选择典型安装后,需选择安装路径,一般默认为c盘MATLAB
3、7。如果选择定制安装后,单击Next,出现选择安装路径和选择产品和文件的对话框,在选择产品和文件部分可选择用户需要安装的MATLAB和工具箱。10/335) 安装到约70%,需要在CD-ROM中放入第二章光盘,继续安装。6) 安装完毕后,要重新启动计算机。11/33 如果用户需要卸载MATLAB时,单击开始菜单,依次选择程序、MATLAB、Uninstall MATLAB执行命令,将会出现Uninstall Product List对话框示,选择需要卸载的内容,然后单击Next。单击yes,开始卸载。 12/331.2.2启动与退出MATLAB系统1. MATLAB系统的启动启动MATLAB系
4、统有3种常见方法:1)单击Windows开始菜单,依次选择程序MATLAB7.0MATLAB7.0即可启动MATLAB系统。这是最常用的一种方式。2) 运行MATLAB系统启动程序matlab.exe。3)如果用户在桌面上建立了快捷方式,也利用快捷方式启动MATLAB系统。13/332. MATLAB系统的退出要退出MATLAB系统,也有3种常见方法:1)在MATLAB主窗口File菜单中选择Exit MATLAB命令。2) 在MATLAB命令窗口输入Exit或Quit命令。3) 单击MATLAB主窗口的关闭按钮。14/331.3 MATLAB工作环境主要窗口:命令窗M文件编辑/调试器历史命令
5、窗当前目录浏览器工作空间浏览器内存数组编辑器交互界面分类目录窗帮助导航/浏览器图形窗 15/331.3.1 命令窗口命令窗口是命令行语句和命令文件执行的主要窗口。在命令窗口中直接输入命令或MATLAB函数,系统自动反馈结果。16/3317/331.3.2 M文件编辑/调试器18/331.3.3 图形窗图形窗的打开方式有三种:1)在主窗口上依次选择FileNew Figure或Open file操作时,选择打开图形文件。2) 在命令窗口输入figure命令。3) 执行结果为图形的语句。19/33% sin_x.m: This m-file calculates and plots the % f
6、unction sin(x) for 0 = x = 6.x = 0:0.1:6;y = sin(x);plot(x,y); 20/3321/331.3.4 工作空间浏览器 工作空间窗口是MATLAB的一个变量管理中心,可以显示变量的名称、尺寸、字节和类别等信息,同时用不同的图标表示矩阵、字符数组、元胞数组、构架数组等变量类型。22/3323/3324/331.3.5 历史命令窗 历史命令窗口中显示已执行过的命令,用户可以根据需要设置命令的多少,单击窗口的右上角的箭号会独立显示该窗口,在该窗口的某一命令上单击鼠标右键会弹出菜单。25/33下拉菜单的功能:Copy 将所选历史命令拷贝到剪贴板Ev
7、aluateSelection 运行所选历史命令CreateM-File 打开编辑器,将所选历史命令复制到编辑器DeleteSelection 删除所选历史命令(不确认是否删除)DeletetoSelection 从头删除到所选历史命令(不确认是否删除)DeleteEntireHistory 清除全部历史命令(将弹出对话框确认是否清除)26/331.3.6 MATLAB帮助系统1 帮助导航/浏览器 选择view菜单中的Help菜单项或选择Help菜单中的MATLAB Help菜单项可以打开帮助浏览器。27/3328/332 help命令 help功能:列出帮助主题,内容为函数库和工具箱的名称和
8、功能简介。 help 函数库名功能:列出指定的函数库中所有函数的名称和功能简介。 help 函数名功能:指定的函数的帮助信息,即语法、参数说明和例子。 29/333 lookfor命令lookfor 关键词功能:搜索出一系列与给定关键词相关的命令和函数。4 模糊查询 输入命令的前几个字母,然后按Tab键,就可以列出所有以这几个字母开始的命令和函数。需要注意的是,lookfor和模糊查询查到的不是详细信息,通常还需要在确定了具体函数名称后用help命令显示详细信息。30/331.3.7 MATLAB搜索路径基本的搜索过程是:1)检查该命令是不是一个变量。2)检查该命令是不是一个内部函数。3)检查
9、该命令是否当前目录下的M文件。4)检查该命令是否MATLAB搜索路径中其他目录下的M文件。用户可以将自己的工作目录列入MATLAB搜索路径,从而将用户目录纳入MATLAB系统统一管理。31/33设置搜索路径的方法有:1) path命令 用path命令设置搜索路径。例如,将用户目录c:mydir加到搜索路径下,可在命令窗口输入命令: path(path,c:mydir)2) 用对话框设置搜索路径 在MATLAB的File菜单中选Set Path命令或在命令窗口执行pathtool命令。32/3333/3334/33第一章 小结(1)MATLAB语句输入和执行的方法;(2)通过工作空间浏览器查询变
10、量的方法;(3)MATLAB帮助系统的使用方法。 第2章 MATLAB 运算基础(1) MALAB 7.X程序设计36/59主要内容:变量的定义及赋值;数值数组、字符串数组、元胞数组和构架数组等数据类型;矩阵运算的定义和规则;数组运算的定义和规则。 MALAB 7.X程序设计37/591)矩阵:由mn个数组成的排成m行n列的一个矩形的数表,其中00矩阵为空矩阵()。数表中第i(1im)行第j(1jn)列的数据称为矩阵元素 2)标量 :11的矩阵,即为只含一个数的矩阵。3)向量:1n或n1的矩阵,即只有一行的或者一列的矩阵。只有一行的矩阵称为行向量,只有一列的矩阵称为列向量。数表中第i(1in)
11、个数据称为向量元素。4)数组:矩阵的延伸,一般指多维数组,其中标量、向量和矩阵都是数组的特例。2.1 概述2.1.1 数据术语 MALAB 7.X程序设计38/592.1.2 数据类型数据类型包括数值型、字符串型、元胞型、构架型等。数值型有单精度型、双精度型和整数型。整数型有uint8,uint16,uint32和uint64等无符号型和int8,int16,int32和int64等符号型整数。数值型数据可以用带小数点的形式和科学计数法表示,数值的表示范围是10-30910+309。-20、1.25、2.88e-56(表示2.8810-56)、7.68e204(表示7.6810204) 都是合
12、法的数据表示。一般在计算时采用双精度型,在输出时有多种数值显示格式可供选择。 MALAB 7.X程序设计39/59数值显示格式的设置通过format 命令, 格式如下:format short 默认设置,以5位数字形式输出 format long 以15位十进制数形式输出format short e 以5位十进制数加指数形式输出format long e 以16位十进制数加指数形式输出format short g 从format short和format short e 中自动选择最佳输出形式 MALAB 7.X程序设计40/59format long g 从format long和forma
13、t long e 中自动选择最佳输出形式format hex 以16位十六进制数形式输出format + 以正号、负号和零形式输出format bank 以两位小数形式输出format rat 以近似分数形式输出format loose 以稀疏格式(变量与执行结果之 间有空行)输出 format compact 以紧凑格式(变量与执行结果之 间无空行)输出 MALAB 7.X程序设计41/592.2 变量 变量的命名规则为:1 变量名必须以字母开头,变量名的组成可以是任意字母、数字或者下划线,但不能含有空格和标点符号。2 关键字和函数名不能作为变量名。3 变量名不能超过63个字符。4 变量名区
14、分字母的大小写,即大小写敏感。 大小写是否区分可以通过命令casesen on/off进行切换(如果不区分大小写,为casesen off ,否则为casesen on)。2.2.1变量的命名MALAB 7.X程序设计42/592.2.2变量的赋值变量的赋值通常有两种形式: 1 变量=表达式 2 表达式其中表达式是用运算符将有关运算量连接起来的式子,其结果是一个数组。形式1中,= 代表的是赋值操作,将表达式的值赋给MATLAB的变量;形式2中,将表达式的值赋给MATLAB的临时变量ans。MALAB 7.X程序设计43/59例2-1 在命令窗口输入下述语句,并按回车键执行,分别给变量a、b、c
15、赋值:a=1% a为标量b=0 1 % b为行向量c=1 2;3 4;5 6 % c为矩阵即二维数组MALAB 7.X程序设计44/592.2.3 特殊变量eps MATLAB定义的正的极小值2.2204e-16Realmax 最大的正实数1.7977e+308Realmin 最小的正实数2.2251e-308Pi 内建的值i, j 虚数单位i=j=-1Inf NaN 无法定义一个数目 Nargin 函数输入参数个数Nargout 函数输出参数个数Flops 浮点运算次数MALAB 7.X程序设计45/592.2.4内存变量的管理1 内存变量的显示与删除1)who 用于显示在MATLAB工作空
16、间中已 经驻留的变量名清单。2)whos 在给出变量名的同时,还给出它们 的大小、所占字节数及数据类型等 信息。3)clear 删除MATLAB工作空间中的变量。注 意,特殊变量不能被删除。 MALAB 7.X程序设计46/59例2-2 查询例2-1中语句执行后工作空间中 的变量情况。Name Size Bytes Class a 1x1 8 double array b 1x2 16 double array c 3x2 48 double arrayGrand total is 10 elements using 72 bytes 在命令窗口输入执行结果为:Your variables a
17、re:a b c在命令窗口输入执行结果为:whowhosMALAB 7.X程序设计47/592 工作空间浏览器工作空间浏览器窗口用于显示所有MATLAB工作空间中的变量名、数据结构、类型、大小和字节数,也可以对变量进行观察、编辑、提取和保存。MALAB 7.X程序设计48/593 内存变量文件 利用MAT文件可以把MATLAB工作空间中的一些有用变量长久地保留下来。MAT文件的生成和调入由save和load命令来完成1) save的格式为:save 文件名 变量名表 -append-ascii 功能:把工作空间中的变量存入磁盘。其中变量名表指出需存储的变量,append为数据填加方式,asci
18、i为数据形式。2) load的格式为:load 文件名 变量名表 -ascii功能:磁盘上存储的mat数据文件取回到MATLAB工作空间中。参数含义同save。 MALAB 7.X程序设计49/59例2-3: 例2-1中语句执行后,在命令窗口 依次输入下述命令:save %变量a,b和c保存在matlab.matSave mydata1.mat %变量a,b和c保存在 mydata1.matsave mydata2.mat a %变量a保存在 mydata2.matsave mydata3.mat a b %变量a和b保存在 mydata3.matsave mydata4.mat a b c%
19、变量a,b和c保存在 mydata4.matMALAB 7.X程序设计50/592.3 数值数组 2.3.1数值数组的建立1 赋值语句建立数组 矩阵的建立可以通过赋值语句实现,赋值符号左边为变量名,右边为矩阵元素。矩阵元素应用方括号()括住,元素可以是数值或表达式元素,表达式可以由数字、变量、运算符和函数等组成。 矩阵同行内的元素间用逗号或空格隔开,行与行之间用分号或回车键隔开。 MALAB 7.X程序设计51/59例2-4 在命令窗口输入语句: a=1,2,3;4,5,6;7,8,9 按回车键,命令就被执行,在MATLAB命令窗中显示以下结果:a = 1 2 3 4 5 6 7 8 9 如果
20、在上述输入语句末尾加上分号,则在命令窗口不显示结果。同理可以通过赋值语句建立向量。MALAB 7.X程序设计52/59例2-5 在命令窗口输入语句: x=-1.3 1+2+3 sqrt(5)%sqrt是求平方根函数按回车键,指令被执行,MATLAB命令窗中显示以下结果:x = -1.3000 6.0000 2.2361MALAB 7.X程序设计53/59例2-6 在命令窗口输入下述语句,建立复数数组: b=1+2*i,2+3*i;2-i,3-2*i执行结果为:b =1.0000 + 2.0000i 2.0000 + 3.0000i2.0000 - 1.0000i 3.0000 - 2.0000
21、i MALAB 7.X程序设计54/59elfun函数库中提供一系列复数函数:real 复数的实数部分real(b)imag 复数的虚数部分imag(b)abs 绝对值或模abs(b)angle 幅角 angle(b) 结果为弧度angle(b)*180/pi 结果为角度conj 共轭conj(b)MALAB 7.X程序设计55/592 简捷表达式等间隔向量赋值可以通过简捷表达式实现。下面介绍两种为等间隔向量赋值的方法: 1)两个冒号组成等增量语句 格式:t =初值:增量:终值说明: 初值、增量和终值分别表示开始值、步长和结束值。当增量可为负值,省略时则默认为增量为1;当增量省略或增量0而初值
22、0时为空向量,当增量0而初值终值时也为空向量。MALAB 7.X程序设计56/59例2-7 简捷表达式建立向量和矩阵t1=0:0.02:1 %产生0t11之间的行向量, 间隔为0.02t2=5:-1:2 %产生5t12之间的行向量, 间隔为-1。t4=2:-1:3 % 建立空矩阵t5=1:2:5;1:3:7 %建立矩阵MALAB 7.X程序设计57/592)使用linspace和logspace函数生成向量 linspace函数的格式: linspace(a,b,n) 功能:生成从a到b之间线性分布的n个元素的行向量。 logspace (a,b,n) 功能:生成从10a到10b之间按对数等分
23、的n个元素的行向量。 logspace函数的格式:MALAB 7.X程序设计58/59例 2-8 用linspace和logspace函数生成向量t1=linspace(0,2*pi,5)%从0到2*pi等分 成5个点linspace(1,8,8)linspace(1,8,1)t2=logspace(0,2,3)%从1到100(即 100到102)按对数等分成3个点MALAB 7.X程序设计59/593 内建函数1) 通用特殊矩阵函数库elmat提供的常用的通用特殊矩阵生成函数:zerosoneseyerandMALAB 7.X程序设计60/592)用于专门学科的特殊矩阵 (1)魔方矩阵 ma
24、gic(n) 功能:魔方矩阵的元素由1到nn 的自然数组成,其对角线上的元素为1;每行、每列及对角线上的元素之和均等于(n3+n)/2。魔方矩阵的每行、每列及两条对角线上的元素和都相等。对于n阶魔方阵,其元素由1,2,3,n2共n2个整数组成。MALAB 7.X程序设计61/59例2-9 产生2阶和3阶魔方阵。m1=magic(2) %产生2阶魔方阵m2=magic(3) %产生3阶魔方阵MALAB 7.X程序设计62/59(2) 范得蒙矩阵 vander(V)生成以向量V为基础向量的范得蒙矩阵,矩阵元素最后一列全为1,倒数第二列为一个指定的向量,其他各列是其后列与倒数第二列的点乘积。可以用一
25、个指定向量生成一个范得蒙矩阵。MALAB 7.X程序设计63/59例2-10 产生范得蒙矩阵。v1=vander(1;2;3;5)v2=vander(1:3)v3=vander(1:4)MALAB 7.X程序设计64/59(3)希尔伯特矩阵hilb(n) 生成n阶的希尔伯特矩阵invhilb(n) 求n阶的希尔伯特矩阵的逆 例2-11 求4阶希尔伯特矩阵及其逆矩阵。format rat %以有理形式输出H=hilb(4)invH=invhilb(4)MALAB 7.X程序设计65/59(4)托普利兹矩阵 功能:用向量x生成一个对称的托普利兹矩阵。矩阵元素除第一行第一列外,其他每个元素都与左上角
26、的元素相同。toeplitz(x,y) 功能:生成一个以x为第一列,y为第一行的托普利兹矩阵。其中x, y均为向量,两者不必等长。toeplitz(x)MALAB 7.X程序设计66/59例2-12 产生托普利兹矩阵。T1=toeplitz(1:4)T2=toeplitz(1:3,3:6)MALAB 7.X程序设计67/59(5) 伴随矩阵 compan(p) 功能:生成伴随矩阵,其中p是一个多项式的系数向量,高次幂系数排在前,低次幂排在后。例2-13 为了求多项式的x3-7x+6的伴随矩阵,可使用语句:p=1,0,-7,6;c=compan(p)MALAB 7.X程序设计68/59(6) 帕
27、斯卡矩阵n阶帕斯卡矩阵的生成函数的格式: pascal(n)例2-14 求(x+y)4的展开式。p1=pascal(4) p1 = 1 1 1 1 1 2 3 4 1 3 6 10 1 4 10 20 由执行结果可知,矩阵次对角线上的元素1,4,6,4,1即为展开式的系数。MALAB 7.X程序设计69/59(7)哈达玛矩阵n阶哈达玛矩阵的生成函数的格式: hadamard(n)例2-15 求2阶和4阶的哈达玛矩阵。h1=hadamard(2)h2=hadamard(4) MALAB 7.X程序设计70/594 通过MAT数据文件加载矩阵通过load命令或选择菜单FileImport Data
28、命令加载MAT数据文件来创建矩阵。5 在M文件中创建矩阵 M文件实际上是一种包含MATLAB代码的文本文件;通过在MATLAB命令窗口中运行M文件创建矩阵。MALAB 7.X程序设计71/592.3.2数组元素的标识1 向量的标识向量是由多个元素组成的,每个元素通过序号来标识。例2-16 演示向量的标志和重新赋值。x=1:2:7; y=x; y3=y(3) %引用y的第三个元素5 y5=y(end) %用end函数引用y的最后 一个元素7y(3)=10 %对y的第三个元素重新赋值MALAB 7.X程序设计72/592矩阵的标识两种标识方式: 全下标方式和单下标方式。1) 全下标方式 全下标方式
29、标识是指出行下标和列下标的方法标识,如一个mn的矩阵a的第i(1im)行第j(1jn)列的元素可表示为a(i,j)。MALAB 7.X程序设计73/59例2-17 演示矩阵元素的标识和扩充矩阵的 方法a=1 2;3 4;5 6; %建立一个23的矩阵a12=a(1,2) %引用a(1,2)的值a(3,3) %引用a(3,3)的值,(3,3) 超出矩阵的大小,出错a(3,3)=9 %扩充23的矩阵为33的 矩阵,并给a(3,3)赋值MALAB 7.X程序设计74/592) 单下标方式根据全下标换算出单下标的函数sub2ind格式: IND=sub2ind(siz,I,J) 功能:IND为返回的对
30、应的单下标,siz为以矩阵行数和列数构成的两个元素的向量,I和J分别为矩阵的某一行号和列号。根据单下标换算出全下标的函数ind2sub格式: I,J=ind2sub(siz,IND)功能:I和J分别为返回的矩阵的某一行号和列号,siz为以矩阵行数和列数构成的两个元素的向量,IND为单下标。MALAB 7.X程序设计75/59例2-18 演示矩阵元素的全下标标识和单下标标识的转换。i,j=ind2sub(3 3,5)% 33矩阵的第5个元素的全下标ind=sub2ind(3 3,3,3) % 33矩阵第三行、第三列元素的序号MALAB 7.X程序设计76/592.3.3 子数组 子数组是从数组中
31、取出一部分元素所构成的数组,通常可用全下标和单下标方式取子数组。 1 向量的一般情况如下:A(i) 数组A的第i个元素A(i:L:i+m) 数组A的第i个-第i+m个(下标增量为L)元素MALAB 7.X程序设计77/592 矩阵一般情况如下:A(:,j) 数组A的第j列全部元素A(i,:) 数组A的第i行全部元素A(i,j) 数组A的第i行第j列的元素A(:,j:L:j+n) 数组A的第j列-第j+n列(下 标增量为L)全部元素A(i:k:i+m,:) 数组A的第i行-第i+m行(下标 增量为k)元素A(i:k:i+m,j:L:j+n) 数组A的第i行-第i+m 行(下标增量为k)并在第j列
32、 -第j+n列(下标增量为L)全 部元素MALAB 7.X程序设计78/59例2-19 演示建立行向量并取子数组的方法。a1=1.1,-2.2,3.3,-4.4,5.5;a1(3) % 取a1的第三个元素a1(1 4) % 取a1的第一个和第四个元素a1(1:2:5) % 取a1的第一个、第三个和第五 个元素,等价语句为: a1(1:2:end)MALAB 7.X程序设计79/59例2-20 演示建立34的矩阵并取子数组的方法。a=1 2 3 4;5 6 7 8;9 10 11 12; a(1,:) a(:,end)a24=a(2,4) % 取a的第二行、第四列的元素a(1:2:4,:)a(:
33、,1:2:end)a1=a(1,2,2,3,4) a2=a(1,2,2,3,1) a3=a(3,1,:) a(1,3,2,4)=zeros(2) %对a(1,3,2,4)赋值MALAB 7.X程序设计80/592.3.4数组的赋值数组的赋值大致有两种方式:全元素方式和子数组方式。1 全元素方式 全元素方式赋值的一般格式: a(:)=b 功能:给矩阵a的所有元素赋值,矩阵b的元素总数必须等于矩阵a的元素总数,但行列数不一定相等。MALAB 7.X程序设计81/59例2-21 演示全元素方式赋值的方法a=zeros(2,3); b=1:6; a(:)=b执行结果如下:a = 1 3 5 2 4 6
34、MALAB 7.X程序设计82/592 子数组方式子数组方式赋值的一般格式1: a(s)=b功能:给矩阵a的部分元素赋值,s为单下标序号,b为向量,向量的元素个数必须等于数组a中s指定的元素个数。子数组方式赋值的一般格式2:A(i:k:i+m,j:L:j+n)=b 功能:给数组a的部分元素赋值,则数组b的行列数必须等于数组a的第i行-第i+m行(下标增量为k)并在第j列-第j+n列(下标增量为L)全部元素的行列数。MALAB 7.X程序设计83/59例2-22 演示子数组方式赋值方法。 a=zeros(2,3);a(5:6)=2 3 %给第5、6元素赋值 如果对a不作初始化,a(5:6)=2
35、3的赋值情况有何变化?a=zeros(3,4);a(1:2,1:3)=1 1 1;1 1 1 %给第一、二行元素赋值为全1MALAB 7.X程序设计84/592.3.5数组元素的删除数组元素的删除是简单地通过赋值为空(用表示)实现的。通过赋值为空,可以实现删除一行元素、一列元素、子数组和整个数组。注意区分空矩阵和零矩阵:空矩阵是00的数组,而零矩阵是元素为零的mn的数组。MALAB 7.X程序设计85/59例2-23 建立33的数组,实现数组元素的 删除。a=1 2 0;3 4 0;5 6 9; a(:,3)= %删除第三列元素a(2,:)= %删除第二行元素a(1)= %删除一个元素,则矩阵
36、变为行向量a= %删除所有元素为空矩阵MALAB 7.X程序设计86/592.3.6 多维数组1 三维数组的建立三维数组的建立方式和二维数组类似,大致有三种方式:1) 通过全下标元素赋值方式创建2) 由生成函数直接创建3) 由生成函数ones,zeros,rand和randn等直接创建多维数组。MALAB 7.X程序设计87/59例2-24 演示全下标元素赋值方式建立 三维数组的方法。 b=1 1;2 2; %先创建二维数组 b(:,:,2)=5 %扩展数组MALAB 7.X程序设计88/59例2-25 演示生成函数ones、zeros、rand和randn直接创建多维数组的方法。ones(2
37、,3,4)MALAB 7.X程序设计89/59函数cat的格式为:cat(维,p1,p2,)功能:按指定行列数放置模块数组生成多维数组。参数维是指沿着第几维连接数组p1、p2等。 函数repmat的格式为:repmat(p,行 列 页 )功能:在总元素的数目不变的前提下重新确定数组的行列数来重组数组。 其中第一个输入变量p是用来放置的模块数组,后面的变量行、列、页是要放在指定的各维。 MALAB 7.X程序设计90/59例2-26 演示cat和repmat函数的功能。a=1 2 ;3 4;b= 5 6;7 8;cat(1 ,a,b)a=1 2 ;3 4;b= 5 6;7 8;cat(2 ,a,
38、b)MALAB 7.X程序设计91/59a=1 2 ;3 4;b= 5 6;7 8;cat(3 ,a,b)repmat(magic(2), 2, 3)( repmat(magic(2), 2, 3)结果同下)repmat(5, 2, 3)MALAB 7.X程序设计92/592 多维数组的信息 函数ndims的功能是直接给出数组的维数,格式为: ndims(p) 其中,p为数组。函数size的功能是给出数组各维的大小,格式为: m,n,=size(p) %得出各维的大小 m=size(p,x)%得出某一维的大小 其中,p为多维数组;m为行数,n为列数;当只有一个输出变量时, x=1返回第一维(行
39、数),x=2返回第二维(列数),以此类推。numel的功能是给出数组的体积(元素的数目),格式为: n = numel(p ) 其中,p为数组。MALAB 7.X程序设计93/59例2-27 演示ndims,size和 numel函数的 功能。x = ones(1,8);n = length(x) % 建立任意的18的数组xy=zeros(3,5);d=size(y) % 建立任意的35的数组ym n=size(y),ndims(y),numel(y),mm=size(y,1),nn=size(y,2)z= rand(2,10,3); % 建立任意的2103的数组yn = length(z)第
40、2章 MATLAB 运算基础(2)MALAB 7.X程序设计95/742.4 稀疏数组 2.4.1 数组元素的存储数组元素有完全存储方式和稀疏存储方式两种存储方式。MALAB 7.X程序设计96/742.4.2稀疏数组的建立1 转换函数转换函数sparse的格式为: A=sparse(S)功能:将矩阵S转化为稀疏存储方式的矩阵A。当矩阵S是稀疏存储方式时,则函数调用相当于A=S。MALAB 7.X程序设计97/74 sparse(m,n)功能:生成一个mn的所有元素都是0的稀疏矩阵。 sparse(u,v,S)功能:建立一个max(u)行、max(v)列并以S为稀疏元素的稀疏矩阵,其中u,v,
41、S是3个等长的向量,S是要建立的稀疏矩阵的非0元素,u(i)、v(i)分别是S(i)的行和列下标。 MALAB 7.X程序设计98/74转换函数full的格式为: full(A)功能:返回和稀疏存储矩阵A对应的完全存储方式矩阵。MALAB 7.X程序设计99/74例2-28 演示sparse和full的功能。u=1:4;v=3:6;S=0.1 0.2 0.3 0.4;spa=sparse(u,v,S)a=full(spa)MALAB 7.X程序设计100/742 生成函数稀疏矩阵的生成函数: spconvert,spdiags,speye spconvert函数的格式为: B=spconver
42、t(A)功能:将矩阵A所描述的一个稀疏矩阵转化为一个稀疏存储矩阵B 。MALAB 7.X程序设计101/74例2-29 演示spconvert的功能。A=1 2 3 ;3 4 5;6 7 8;B=spconvert(A) %生成实数数组A=1 2 3 4;3 4 5 6 ;6 7 8 9;B=spconvert(A) %生成复数数组MALAB 7.X程序设计102/74 spdiags的格式为: A=spdiags(B,d,m,n)功能:返回带状稀疏矩阵A。 参数m,n为原带状矩阵的行数与列数。B为rp阶矩阵,这里r=min(m,n),p为原带状矩阵所有非零对角线的条数,矩阵B的第i列即为原带
43、状矩阵的第i条非零对角线, d为长度为p的向量。MALAB 7.X程序设计103/74例2-30 演示spdiags的功能。B=0.1 0 0;0 0.2 0;0 0 0.3;m=3;n=4;d=1 2 ;A=spdiags(B,d,m,n)MALAB 7.X程序设计104/74 函数eye,rand和 randn产生完全存储方式的矩阵,对应的稀疏矩阵函数是speye,sprand和sprandn。MALAB 7.X程序设计105/74例2-31 分析下列语句的功能。spa=speye(4,4) %建立44的稀疏存储单位矩阵spa(2,1)=-2 %增加元素spa(2,1)spa(2,2)=0
44、 %删除元素spa(2,2)MALAB 7.X程序设计106/742.5 矩阵和数组的运算矩阵运算规则是按照矩阵作为运算要素定义的,数组运算是按照矩阵元素作为运算要素定义的。标量运算是矩阵和数组的运算的特例。 MALAB 7.X程序设计107/742.5.1 矩阵和数组的算术运算 1 矩阵和数组的加减运算两个矩阵必须同型时才可以进行加减运算。如有一个是标量,则该标量与矩阵的每个元素进行加减运算。数组的加减运算法则与矩阵的加减运算法则相同。MALAB 7.X程序设计108/74例2-32 设 求 A2B。方法1:A=4 -3 1;2 0 5;B=1 2 0;-1 0 3;A-2*B方法2:A=4
45、 -3 1;2 0 5;B=1 2 0;-1 0 3;b=uminus(2*B) %,返回2*B的相反数A+bMALAB 7.X程序设计109/742 矩阵和数组的乘法运算矩阵的乘法运算符为*,定义为:设A=(aij)ms,B=(bij)sn,则A与B的乘积CAB=(cij)mn是 mn矩阵,其中cij( i= 1,2, , m ;j =1,2, ,n) 等于A的第i行与B的第j列对应元素的乘积之和。 数组的乘法运算符为.*,两个矩阵必须同型时才可以进行数组乘法运算。运算规则为:矩阵A和B中的对应元素相乘。 如果参加运算的矩阵其中有一个是标量时,矩阵和数组的乘法运算均为标量与矩阵的每个元素进行
46、乘法运算。 MALAB 7.X程序设计110/74例2-33 求乘积 AB 和 BA。A=1 0 3;2 1 0;B=4 1;-1 1;2 0;A*B,B*AMALAB 7.X程序设计111/74例2-34 求 (AB)T和BTAT(T为转置运 算)。A=1 -1 2;2 0 1;B=2 -1 0;1 1 3;4 2 1;(A*B)B*AMALAB 7.X程序设计112/743 矩阵和数组的除法运算矩阵除法运算的运算符为和/,分别表示左除和右除。矩阵除法的定义为:AB=A-1B A/B=AB-1其中A-1和B-1是矩阵A和B的逆,矩阵B的逆也可用函数inv求得。MALAB 7.X程序设计113
47、/74除法运算的运算符为.和./,分别数组为数组的左除和右除,表示数组的相应元素相除。两个矩阵必须同型时才可以进行数组除法运算。定义为:设A=(aij)mn,B=(bij)mn,则数组的右除为C=(cij)mn= (aij/ bij )mn,数组的左除为C=(cij)mn= (bij/ aij )mn。MALAB 7.X程序设计114/74例2-35 求解方程组A=2 2 -1 1;4 3 -1 2;8 3 -3 4;3 3 -2 -2;b=4 6 12 6;X=Ab %等价语句为 X=inv(A)*bMALAB 7.X程序设计115/742.5.2 矩阵和数组的乘方运算矩阵乘方运算的运算符为
48、,运算表达式为AB,矩阵乘方运算的含义是:AB表示方阵A自乘B次。数组乘方运算的运算符为.,运算表达式为A.B,其中A和B都可以是矩阵或标量。MALAB 7.X程序设计116/74数组乘方运算有下列形式:当A为矩阵,B为正整数时,则将aij自乘B次;当A为矩阵,B也为矩阵时,A和B矩阵必须同型,则将aij自乘bij次。当A为正整数,B为矩阵时,将Abij构成新矩阵的第i行第j列元素。 其中aij和bij分别表示矩阵A和B的第i行第j列元素。 MALAB 7.X程序设计117/742.5.3矩阵和数组的数学函数 常用的数学函数有三角函数、指数函数和整值函数等。 需要注意的是: MATLAB 6.
49、5以前的版本三角函数的自变量和反三角函数的返回值为弧度; MATLAB 7.0版本中提供了三角函数的自变量和反三角函数的返回值分别为角度和弧度的两类函数。 MALAB 7.X程序设计118/74例2-36 求30。、60。和90。的正弦、 余弦、正切和余切函数值。x=30:30:90;sind(x),cosd(x),tand(x),cotd(x) %三角函数的自变量为角度值MALAB 7.X程序设计119/74例2-37 求0.1,0.2,0.3,0.4,0.5,0.6 的反正弦、反余弦和反正切值。x=0.1:0.1:0.6;asin(x),acos(x),atan(x) %返回值为弧度asi
50、nd(x),acosd(x),atand(x) %返回值为角度MALAB 7.X程序设计120/74例2-38 求1到10的自然对数和常用 对数。x=1:10;log(x) %返回值为自然对数log10(x) %返回值为常用对数如果求2为底的对数呢?log10(x)/log10(2)MALAB 7.X程序设计121/742.6 字符串2.6.1字符串的定义MATLAB将字符串当作一个行向量,每个元素对应一个字符,一个字符占两个字节,并且每一字符(包括空格)以其ASCII码的形式存放,其标识方法和数值向量相同。MALAB 7.X程序设计122/74例2-39 建立任意的两个字符串,并查看字 符串
51、占用的字节信息。s1=Northeast Forest Uiversity %赋值方式建立字符串s1s2=Haerbin Heilongjiang %赋值方式建立字符串s2whos %查看字符串占用的字节信息MALAB 7.X程序设计123/74常用的字符串函数 length 计算字符串的长度(即组成字符的个数)class 判断某一个变量是否为字符串,返回char则表示为字符串findstr 寻找在某个长字符串中的子字符串,返回其起始位置deblank 删除字符串尾部的空格eval 以表达式方式执行字符串disp 显示字符串的内容MALAB 7.X程序设计124/742.6.2 字符串的连接和
52、替换 strcat(S1,S2,S3,.) 功能:返回S1,S2,S3的连接字符串 常用的字符串的连接和替换函数:strvcat(T1,T2,T3,.) 功能:返回T1,T2,T3,.的垂直连接字符串strmatch(S1,S2) 功能:在逐行搜索字符串s2,给出以s1开头的那些行的行号strrep(S1,S2,S3) 功能:把字符串s1的所有出现s2的地方替换为s3strtok (S) 功能:查找字符串S的第一个间隔符(空格符、指表符、回车符)前的内容MALAB 7.X程序设计125/74例2-40 分析下列语句的执行结果。test=This is a test!;position=find
53、str(test,is)array=strvcat(maxarray,min value,max value);result_1=strmatch(max,array)result_2=strrep(test,test,pest)token,remainder=strtok(This is a test!)MALAB 7.X程序设计126/742.6.3字符串比较函数strcmp(S1,S2) 功能:比较字符串是否相等。如果相同则返回1,否则为0。常用的字符串比较函数:strcmpi(S1,S2) 功能:在忽略大小写的情况下,比较字符串是否相等。如果相同则返回1,否则为0。strncmp(S1
54、,S2,N) 功能:比较两个字符串的前n个字符是否相等。如果相同则返回1,否则为0。strncmpi(S1,S2,N) 功能:在忽略大小写的情况下,比较字符串的前n个字符是否相等。如果相同则返回1,否则为0。MALAB 7.X程序设计127/74例2-41 分析下列语句的执行结果。str1=hello;str2=Hello;str3=help;c1=strcmp(str1,str2)c2=strcmpi(str1,str2)c3=strncmp(str1,str3,2)c4=strncmpi(str1,str3,2)MALAB 7.X程序设计128/742.6.4字符串转换函数upper(A)
55、 功能:把字符串A中的任一小写字母转换为相应的大写字母常用的字符串转换函数:lower(A) 功能:把字符串A中的任一大写字母转换为相应的小写字母double(X) 功能:转换字符串X为ASCII码char(X) 功能:将ASCII码X转换为字符串MALAB 7.X程序设计129/74int2str(X) 功能:将整数X转换为字符串num2str(X) 功能:将数值X转换成字符串mat2str(MAT) 功能:将数值矩阵MAT转换为可执行的形式MALAB 7.X程序设计130/74例2-42 分析下列语句的功能。x=5317;y=int2str(x)p=num2str(pi,7)p=num2s
56、tr(pi,%10.5e)a=1 2 3;4 5 6 ;b=mat2str(a)str=sprintf(The value of pi=%8.6f.,pi)MALAB 7.X程序设计131/742.7 元胞数组 2.7.1 元胞数组的建立元胞数组:一个数组里存放各种不同类型的数据。元胞数组中的基本组成是元胞,每一个元胞是用来存放各种不同类型的数据的单元。如果元胞中存放的数据为元胞数组,则为元胞数组的嵌套使用。MALAB 7.X程序设计132/741 赋值语句 赋值语句的右边为用符号标记的不同类型的数据。例2-43 建立元胞数组,并查看元素的信息。a=This is the first exam
57、ple.,hadamard(2);ones(3),North;EastMALAB 7.X程序设计133/74查看a的各个元素的信息:a1,1a1,2a2,1a2,2MALAB 7.X程序设计134/74例2-44 用为各元胞元素赋值的方法创建元 胞数组。b(1,1)=This is the second example.;b(1,2)=hilb(3);b(2,1)=zeros(2);b(2,2)=South;West;b % 查看b的内容MALAB 7.X程序设计135/742 由各元胞元素赋值创建创建元胞数组的函数为:cell(N) 创建空的NN的元胞数组cell(M,N) 或 cell (
58、M,N) 创建空的M N的元胞数组MALAB 7.X程序设计136/74例2-45 由各元胞元素赋值创建元胞。c=cell(2);c1,1=(This is the third example.);c1,2=compan(1 0 3);c2,1=3+4*i -5;-10*i 3-4*i;c2,2=; %元胞数组的第四个元素为空矩阵 C % 查看c 的内容MALAB 7.X程序设计137/74显示元胞数组的内容的函数:celldisp(C) 功能:显示元胞数组C的所有元素的内容celldisp,cellplot和cellfun:cellplot(C) 功能:以嵌套的格子的形式显示元胞数组C的所有
59、元素的结构d=cellfun(fun, c) 功能:返回判断元胞数组c 的元素数据类型和基本信息的数组d,其中fun为isreal,isempty, islogical,length,ndims和prodofsize。MALAB 7.X程序设计138/742.7.2 转换函数M=cell2mat(C) 功能:元胞数组转换为单精度矩阵,其中C为多维元胞数组,M为转换后得到的单精度矩阵。要求输入的元胞数组元素必须是同类型的数据。元胞数组与其他数组的转换函数: cell2mat,mat2cell和num2cell。C=mat2cell(X,M,N) 功能:矩阵分解为元胞数组。其中X为多维元胞数组,C
60、为转换后得到的矩阵。C=num2cell(A) 功能:转换数值数组为元胞数组。其中A为数值数组,C为转换得到的元胞数组。 MALAB 7.X程序设计139/74例2-46 元胞数组与其他数组的转换。x=1 2 3 4;5; 9 6 7 8; 10 11 2;cell2mat(x) %转换数值数组为单精度矩阵MALAB 7.X程序设计140/74X = zeros(3,4)+5;C = mat2cell(X,1 2,1 3) %矩阵分解为元胞数组A=1 2 3 4; 5 6 7 8; 9 10 11 12;C=num2cell(A) %转换数值数组为元胞数组MALAB 7.X程序设计141/74
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合成革的化学成分与结构考核试卷
- 危险品管理对噪声振动和辐射的管理和控制要求考核试卷
- 服装设计人体工学原理考核试卷
- 批发业采购谈判技巧与策略考核试卷
- 机床功能部件在虚拟现实设备中的交互式设计考核试卷
- 有机肥料在土壤侵蚀控制与生态恢复中的应用考核试卷
- 儿童情商培训课件
- 代加工合同范本简单
- 灯具采购标准合同范本
- 简易的物业合同范本
- 精神病医院设置基本标准
- 部编版二年级《道德与法治》下册全册教案
- 档案馆建筑设计规范
- 《英语阅读3》课程教案
- 安全标准化法律法规识别清单
- 高分子材料完整版课件
- DB1301∕T 369-2021 设施蔬菜有机肥替代化肥技术规程
- IPCJEDEC J-STD-020 塑料集成电路(IC)SMD的潮湿回流敏感性分类 该
- 急诊与灾难医学第二版配套课件 05 心悸与心律失常
- 流体力学第二版蔡增基课件
- 天然气管道保护盖板涵施工方案
评论
0/150
提交评论