收藏 分享(赏)

武科大Matlab仿真第三章数组及其运算.ppt

上传人:myk79025 文档编号:6221949 上传时间:2019-04-02 格式:PPT 页数:36 大小:911.50KB
下载 相关 举报
武科大Matlab仿真第三章数组及其运算.ppt_第1页
第1页 / 共36页
武科大Matlab仿真第三章数组及其运算.ppt_第2页
第2页 / 共36页
武科大Matlab仿真第三章数组及其运算.ppt_第3页
第3页 / 共36页
武科大Matlab仿真第三章数组及其运算.ppt_第4页
第4页 / 共36页
武科大Matlab仿真第三章数组及其运算.ppt_第5页
第5页 / 共36页
点击查看更多>>
资源描述

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

2、),包括行向量、列向量和矩阵。 数组的运算: 无论对数组施加什么运算(加减乘除或函数)总认定那种运算对被运算数组中的每个元素平等地实施同样的操作。,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.0000i,

4、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 34 5 67 8 9 A=1,2,3 4,5,6 7,8,9 A =1 2 34 5 67 8 9,3.2.2 二维数组 二维数组的创建 利用M文件创建和保存数组,对于经常需要调用的且比较大的数组,可专门为该数组创建一个M文件。利用文件编辑器输入该数组并保存,以后只要在MATLAB指令窗中,运行该文件,文件中的数组就会自动生成于MATLAB内存中。,标准数组生成函数, d=eye(5) %产生(5*5)的单位阵,

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

8、阵)的子数组(子矩阵)的寻访和赋值。,冒号表达式: 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即可,如右图所示。, A=1 2 3;4 5 6;

9、7 8 9 A =1 2 34 5 67 8 9 A .2 ans =1 4 916 25 3649 64 81,3.3.1 数组运算的常用函数 常用函数,3.3 数组运算和矩阵运算, mod(A,2) ans =1 0 10 1 01 0 1,例如对数组, log(A) ans =0 0.6931 1.09861.3863 1.6094 1.79181.9459 2.0794 2.1972, exp(A) ans =1.0e+003 *0.0027 0.0074 0.02010.0546 0.1484 0.40341.0966 2.9810 8.1031, sign(A) ans =1 1

10、11 1 11 1 1, real(A) ans =1 2 34 5 67 8 9, angle(A) ans =0 0 00 0 00 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 %数组乘和矩阵乘,ans =-4.0000 -1.0000 -1.0000-0.3333 0 0.20001.0000

11、0.6000 0.5714 ans =-2.5000 -1.5000 1.5000-1.0000 -0.5455 0.81820.5000 0.4091 0.1364 ans =-4.0000 -1.0000 -1.0000-0.3333 0 0.20001.0000 0.6000 0.5714 ans =-3.5000 -3.0000 -2.5000-1.9545 -1.6364 -1.31822.6818 2.4545 2.2273,A./B,A/B,B.A,BA,A=-4,-3,-2;-1,0,1;2,3,4; B=1,3,2;3,2,5;2,5,7;,在程序流控制和逻辑、模糊推理中,都

12、需要对一类是非问题作出“是真”、“是假”的判断。为此,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 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

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

15、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, AC=char(A,机械自动化学院),s

18、ize(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 = NaN

19、 Warning: Log of zero. n = NaN c = NaN d = 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(0)/0 subplot(1,2,1),plot(t,

20、y),axis(-7,7,-0.5,1.2), xlabel(t),ylabel(y),title(残缺图形) subplot(1,2,2),plot(tt,yy),axis(-7,7,-0.5,1.2) xlabel(t),ylabel(yy),title(正确图形) Warning: Divide by zero.,3.6.2 “空” 数组在MATLAB中, “空” 数组除了用 表示外,某维或若干维长度均为0的数组都是“空” 数组。,%例“空“数组示例 a=,b=ones(0,2),c=zeros(3,0) %创建空数组 A=reshape(-4:5,2,5) %生成(2*5)数组 A(:

21、,1,3)= %利用空数组进行数组裁减,a= b =Empty matrix: 0-by-2 c =Empty matrix: 3-by-0,A =-4 -2 0 2 4-3 -1 1 3 5 A =-2 2 4-1 3 5,【说明】reshape(Q,m,n)为生成mn数组,且数组元素由Q按列展开。,练习,命令窗口中,键入:demo,出现MATLAB的demo演示窗口,然后选择:MATLAB下的Matrices,依次选取其中的Basic Matrix operation 、Matrix manipulation两个示例,进行MATLAB矩阵运算的学习。 教材37页1、2、3、4、5、7题。,

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

当前位置:首页 > 初级教育 > 小学教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报