《数组及其运算》PPT课件.ppt_第1页
《数组及其运算》PPT课件.ppt_第2页
《数组及其运算》PPT课件.ppt_第3页
《数组及其运算》PPT课件.ppt_第4页
《数组及其运算》PPT课件.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章 数组及其运算,本章主要内容如下: 3.1 概述 3.2 数值数组的生成和寻访 3.3 数组运算和矩阵运算 3.4 非数和空数组 3.5 数组的关系运算和逻辑运算 3.6 字符串数组,3.1 概述,MATLAB长于数值计算,而所谓数值计算,就是指计算的表达式、变量中不得包含未经定义的自由变量。 数值数组(Numeral Array)和数组运算(Array Operations)是MATLAB的核心内容。数组是MATLAB最重要的一种内建数据类型,而数组运算则是定义在这种数据结构上的方法。本章重点介绍数值数组,其次是与数组类似其它结构体。 数组:是指由一组实数或复数排成的长方阵列(Arra

2、y),包括行向量、列向量和矩阵。 数组的运算: 无论对数组施加什么运算(加减乘除或函数)总认定那种运算对被运算数组中的每个元素平等地实施同样的操作。,3.1 概述,变量及其赋值 在命令窗口可直接输入变量并赋值,无须声明其类型和维数,MATLAB将自动处理。 MATLAB 的变量名称由英文大小写52个字母、数字和下划线等符号组成,并且第一个字符必须是英文字母,变量和常量最长允许31个字符。须注意的是,在默认状态下,MATLAB对字母大小写敏感 。,3.1 概述,MATLAB数据格式及显示方式 MATLAB既可用传统的十进制数表达数值,也可以用科学计数表达数值,用e代表10的指数形式,用i和j来代

3、表虚数。 MATLAB内部数据格式只有一种,是IEEE浮点标准的双精度二进制(64位),相应于十进制的16位有效数,范围为10-308 10+308。 为了人机交互的友好性,数据输出显示格式有8种 。可用菜单选项或format命令选择。,3.2 数值数组的生成和寻访,3.2.1 一维数组 一维数组的创建 逐个元素输入法 借助数组编辑器可以逐个输入数组元素(对于二维数组同样适用),但也可在指令窗中直接输入。例如在指令窗中输入(数组元素之间用“ ” 或“,”隔开): x=2 pi/3 sqrt(3) 3+5i 则将显示:,x = 2.0000 1.0472 1.7321 3.0000 + 5.00

4、00i,3.2 数值数组的生成和寻访,3.2.1 一维数组 一维数组的创建 定数线性采样法 该方法在设定的“总点数”下,均匀采样生成一维“行”数组。其通用格式为: x=linspace(a , b , n),【说明】 a、b分别是生成数组的第一个和最后一个元素,n是采样总点数。 该指令与 x=a: (b-a)/(n-1) : b 相同。,此外还可通过数组运算或数组生成函数,构建某些特殊的数组。,【例】一维数组的冒号生成法和定数线性采样法。,显然这两种方法生成的一维数组是完全相同的。,3.2.1一维数组 一维数组的寻访 数组寻访的一般格式为X(index),下标index可以是单个正整数或正整数

5、数组。,例如对数组 作如下操作:,x = 2.0000 1.0472 1.7321 3.0000 + 5.0000i , x(3) ans = 1.7321 x(1 2 4) ans = 2.0000 1.0472 3.0000 + 5.0000i x(2:end) ans = 1.0472 1.7321 3.0000 + 5.0000i x(4:-1:1) ans = 3.0000 + 5.0000i 1.7321 1.0472 2.0000,下标为由 构成的数组,下标为由冒号生成法构成的数组,取单个数组元素,3.2.2 二维数组 二维数组的创建 直接输入法 整个输入数组须以“ ”为其首尾;

6、 数组行与行之间用“;”或“回车键”隔离; 数组元素用逗号或空格分离。,其中,第一个矩阵输入采用“;”分行,第二个矩阵输入采用“回车键”分行。, A=1 2 3;4 5 6;7 8 9 A = 1 2 3 4 5 6 7 8 9 A=1,2,3 4,5,6 7,8,9 A = 1 2 3 4 5 6 7 8 9,3.2.2 二维数组 二维数组的创建 利用M文件创建和保存数组,对于经常需要调用的且比较大的数组,可专门为该数组创建一个M文件。利用文件编辑器输入该数组并保存,以后只要在MATLAB指令窗中,运行该文件,文件中的数组就会自动生成于MATLAB内存中。,标准数组生成函数, d=eye(5

7、) %产生(5*5)的单位阵,d = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1,3.2.2 二维数组 二维数组的寻访和赋值 全元素标识和赋值 这是一种最常用的标识方式,对于二维数组来说,“全下标”标识由两个下标组成:行下标,列下标。如A(3,5)等。,单下标标识和赋值 这是只用一个下标来指明元素在数组中的位置。对二维数组采用“单下标”标识,应先对数组的所有元素进行“一维编号”,即先设想把二维数组的所有列按先左后右的次序,首尾相接排成“一维长列”;然后自上往下对元素位置进行编号。,3.2.2 二维数组 二维数组的寻访和赋值 利用MATLA

8、B的冒号运算,可方便地进行数组(矩阵)的子数组(子矩阵)的寻访和赋值。,冒号表达式: s1:s2:s3 式中,s1:起始值; s2:步长(省略为1); s3:终止值。,例如: A(:,j):表示A矩阵第j列全部元素 A(i,:):表示A矩阵第i行全部元素 A(1:3,2:4):表示对A矩阵取第一到第三行,第二到第四列中所有元素构成的子矩阵。,3.3.1 数组运算的常用函数 函数数组的运算规则 对于(mn)数组X=xijmn,函数f()的数组运算规则是指: f(X)=f(xij)mn,3.3 数组运算和矩阵运算,例如对(33)数组A进行2次乘方运算A2,只需对数组中每个元素进行乘方运算aij2即

9、可,如右图所示。, A=1 2 3;4 5 6;7 8 9 A = 1 2 3 4 5 6 7 8 9 A .2 ans = 1 4 9 16 25 36 49 64 81,3.3.1 数组运算的常用函数 常用函数,3.3 数组运算和矩阵运算, mod(A,2) ans = 1 0 1 0 1 0 1 0 1,例如对数组, log(A) ans = 0 0.6931 1.0986 1.3863 1.6094 1.7918 1.9459 2.0794 2.1972, exp(A) ans = 1.0e+003 * 0.0027 0.0074 0.0201 0.0546 0.1484 0.4034

10、 1.0966 2.9810 8.1031, sign(A) ans = 1 1 1 1 1 1 1 1 1, real(A) ans = 1 2 3 4 5 6 7 8 9, angle(A) ans = 0 0 0 0 0 0 0 0 0,3.3.2 矩阵运算 矩阵运算不同于数组运算,要符合矩阵运算的规则,%例二维数组、矩阵运算 A=-4,-3,-2;-1,0,1;2,3,4;B=1,3,2;3,2,5;2,5,7; C=A+B*i %生成复数数组 C.,C %非共轭转置和共轭转置,A./B,A/B %数组、矩阵右除 B.A,BA %数组、矩阵左除 A.*B,A*B %数组乘和矩阵乘,an

11、s = -4.0000 -1.0000 -1.0000 -0.3333 0 0.2000 1.0000 0.6000 0.5714 ans = -2.5000 -1.5000 1.5000 -1.0000 -0.5455 0.8182 0.5000 0.4091 0.1364 ans = -4.0000 -1.0000 -1.0000 -0.3333 0 0.2000 1.0000 0.6000 0.5714 ans = -3.5000 -3.0000 -2.5000 -1.9545 -1.6364 -1.3182 2.6818 2.4545 2.2273,A./B,A/B,B.A,BA,A=

12、-4,-3,-2;-1,0,1;2,3,4; B=1,3,2;3,2,5;2,5,7;,在程序流控制和逻辑、模糊推理中,都需要对一类是非问题作出“是真”、“是假”的判断。为此,MATLAB设计了关系操作、逻辑操作和一些相关函数。虽在其它程序语言中也有类似的关系、逻辑运算,但MATLAB作为一种比较完善的科学计算环境,有其自身的特点。,MATLAB约定: 在所有关系、逻辑表达式中,作为输入的任何非0数都被看成是“逻辑真”,只有0被认为是“逻辑假”。 所有关系表达式和逻辑表达式的计算结果,即输出,是一个由0和1组成的“逻辑数组”(Logical Array)。在此数组中的1表示“真”,0表示“假”

13、。 逻辑数组是一种特殊的数值数组,与“数值类”有关的操作和函数对它也同样适用;但它又不同于普通的“数值”,它还表示着对事物的判断结论“真”与“假”。因此它又有其自身的特殊用途,如数组寻访等。,3.4 关系操作和逻辑操作,3.4.1 关系操作 关系操作指令,3.4 关系操作和逻辑操作,【说明】 标量与数组比较 比较在此标量和数组每个元素之间进行,比较结果与被比较数组同维。 数组与数组比较 两数组的维数必须相同,比较在两数组相同位置上的元素间进行,比较结果与被比数组同维。,关系运算示例:, A=1:9,B=10-A,r0=(AB),A = 1 2 3 4 5 6 7 8 9 B = 9 8 7 6

14、 5 4 3 2 1,r0 = 1 1 1 0 0 0 0 0 0,r1 = 0 0 0 0 1 0 0 0 0,r2 = 0 0 0 0 0 1 1 1 1,3.4.2 逻辑操作 逻辑操作指令,3.4 关系操作和逻辑操作,【说明】 标量与数组逻辑运算 运算比较在标量与数组每个元素之间进行,结果与数组同维。 数组与数组逻辑运算 参与运算的数组必须同维,运算在两数组相同位置上的元素间进行,运算结果与数组同维。,逻辑操作示例1:, A=1:9, B=10-A, r0=(AB)y=sin(t); %产生正弦波 z1=(t2*pi).*y; %获得整流半波w=(tpi/3 %获得削顶整流半波subpl

15、ot(1,3,1),plot(t,y,:r),ylabel(y) subplot(1,3,2),plot(t,z1,:r),axis(0 10 -1 1) subplot(1,3,3),plot(t,z2,-b),axis(0 10 -1 1),3.5 字符串数组,字符串数组(简称串数组)主要用于数据可视化、图形用户界面GUI 制作等,它与数值数组为不同的数据类(Class),如数值标量在内存中占8个字节,而一个字符则只需2个字节。本节对字符串数组作一简要介绍。,3.5 .1 字符串数组创建与操作 字符变量的创建方式 在指令窗中,将待建的字符放在单引号对 中,再按Enter键(单引号对必须在英

16、文状态下输入) 。,如在指令窗中输入 : a=university 则a即为字符变量,也为串数组。, a=an university a = an university,3.5 .1 字符串数组创建与操作 串数组的大小 串数组中每个字符(包括空格和标点)都占据一个元素位,上面输入的数组a的大小可用下面指令获得:, size(a) ans = 1 13,表示这是一个113的数组。,串数组的元素标识,在一维串数组中,MATLAB按自左至右的次序标识字符的位置,如:, b=a(end:-1:1) b = ytisrevinu na,3.5 .1 字符串数组创建与操作 中文字符串数组 在中文字符串数组

17、中,每个字符也占一个元素位置,如串数组中每个字符(包括空格和标点)都占据一个元素位,上面输入的数组a的大小可用下面指令获得:, A=武汉科技大学,size(A) A = 武汉科技大学 ans = 1 6,由小串构成长串, B=A, ,机械自动化学院 B = 武汉科技大学 机械自动化学院,3.5.1 字符串数组创建与操作 多行串数组的创建 直接创建 多行串数组的直接创建时,要保证同一串数组的各行字符数要相等:,利用串操作函数创建,串操作函数按最长行设置每行长度,其它行的尾部用空格填充:, AB=A, ;机械自动化学院,size(AB) AB = 武汉科技大学 机械自动化学院 ans = 2 7,

18、 AC=char(A,机械自动化学院),size(AC) AC = 武汉科技大学 机械自动化学院 ans = 2 7,3.5.2 串操作函数,3.5.3 串转换函数,3.6.1 非数NAN 非数(Not a Number)指的是 0/0, / , 0 之类的运算, 在MATLAB中用NaN或nan表示。 NaN具有以下性质: NaN参与运算所得的结果也是NaN,即具有传递性; 非数没有大小的概念,不能比较两个非数的大小。 非数的功用: 真实表示0/0, / , 0 运算的结果; 避免因这类异常运算而造成程序中断; 在数据可视化中,用来裁减图形。,3.6 “非数”和“空”数组,Warning: Divide by zero.a = NaNWarning: Log of zero.n = NaNc = NaNd = NaN,【例】非数的产生和性质演示,非数具有传递性, a=0/0,n=0*log(0),c=inf/inf,d=sin(a),【例】非数的产生和处理:求近似极限,修补图形缺口,t=-2*pi:pi/10:2*pi; %该自变量数组中存在零值 y=sin(t)./t; %在t=0处,计算将产生NaN tt=t+(t=0)*eps; %逻辑数组参与运算,用“机器零”代替0元素yy=sin(tt)./tt; %用数值可算的sin(eps)/eps近似替代sin(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论