《数组及其运算》PPT课件.ppt

上传人:s9****2 文档编号:568337905 上传时间:2024-07-24 格式:PPT 页数:36 大小:911.51KB
返回 下载 相关 举报
《数组及其运算》PPT课件.ppt_第1页
第1页 / 共36页
《数组及其运算》PPT课件.ppt_第2页
第2页 / 共36页
《数组及其运算》PPT课件.ppt_第3页
第3页 / 共36页
《数组及其运算》PPT课件.ppt_第4页
第4页 / 共36页
《数组及其运算》PPT课件.ppt_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《《数组及其运算》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《数组及其运算》PPT课件.ppt(36页珍藏版)》请在金锄头文库上搜索。

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

2、是指由一组实数或复数排成的长方阵列(Array),包括行向量、列向量和矩阵。n数数组组的的运运算算: 无论对数组施加什么运算(加减乘除或函数)总认定那种运算对被运算数组中的每个元素平等地实施同样的操作。第三章 数组及其运算仿真技术3.1 概述n变量及其赋值n在命令窗口可直接输入变量并赋值,无须声明其类型和维数,MATLAB将自动处理。nMATLAB 的变量名称由英文大小写52个字母、数字和下划线等符号组成,并且第一个字符必须是英文字母,变量和常量最长允许31个字符。须注意的是,在默认状态下,MATLAB对字母大小写敏感 。第三章 数组及其运算仿真技术3.1 概述n MATLAB数据格式及显示方

3、式nMATLAB既可用传统的十进制数表达数值,也可以用科学计数表达数值,用e代表10的指数形式,用i和j来代表虚数。nMATLAB内部数据格式只有一种,是IEEE浮点标准的双精度二进制(64位),相应于十进制的16位有效数,范围为10-308 10+308。n为了人机交互的友好性,数据输出显示格式有8种 。可用菜单选项或format命令选择。第三章 数组及其运算仿真技术3.2 数值数组的生成和寻访3.2.1 一维数组1.一维数组的创建a)逐个元素输入法 借助数组编辑器可以逐个输入数组元素(对于二维数组同样适用),但也可在指令窗中直接输入。例如在指令窗中输入(数组元素之间用“ ” 或“,”隔开)

4、: x=2 pi/3 sqrt(3) 3+5i则将显示:x = 2.0000 1.0472 1.7321 3.0000 + 5.0000i第三章 数组及其运算仿真技术3.2 数值数组的生成和寻访3.2.1 一维数组1.一维数组的创建c)定数线性采样法n该方法在设定的“总点数”下,均匀采样生成一维“行”数组。其通用格式为: x=linspace(a , b , n)n【说明】a、b分别是生成数组的第一个和最后一个元素,n是采样总点数。该指令与 x=a: (b-a)/(n-1) : b 相同。d)此外还可通过数组运算或数组生成函数,构建某些特殊的数组。第三章 数组及其运算仿真技术【例】一维数组的冒

5、号生成法和定数线性采样法。 x=(0:pi/10:pi)x = Columns 1 through 6 0 0.3142 0.6283 0.9425 1.2566 1.5708 Columns 7 through 11 1.8850 2.1991 2.5133 2.8274 3.1416 y=linspace(0,pi,11)y = Columns 1 through 6 0 0.3142 0.6283 0.9425 1.2566 1.5708 Columns 7 through 11 1.8850 2.1991 2.5133 2.8274 3.1416%冒号法生成一维数组%定数(0,)线性采

6、样法生成(111)数组显然这两种方法生成的一维数组是完全相同的。第三章 数组及其运算仿真技术3.2.1一维数组2.一维数组的寻访n数组寻访的一般格式为X(index),下标index可以是单个正整数或正整数数组。 例如对数组作如下操作: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

7、1.7321 1.0472 2.0000下标为由 构成的数组下标为由冒号生成法构成的数组取单个数组元素第三章 数组及其运算仿真技术3.2.2 二维数组1.二维数组的创建a)直接输入法n整个输入数组须以“ ”为其首尾;n数组行与行之间用“;”或“回车键”隔离;n数组元素用逗号或空格分离。例如要输入二维数组则在指令窗中的操作如右图所示。 其中,第一个矩阵输入采用“;”分行,第二个矩阵输入采用“回车键”分行。 A=1 2 3;4 5 6;7 8 9A = 1 2 3 4 5 6 7 8 9 A=1,2,34,5,67,8,9A = 1 2 3 4 5 6 7 8 9第三章 数组及其运算仿真技术3.2

8、.2 二维数组1.二维数组的创建b)利用M文件创建和保存数组 对于经常需要调用的且比较大的数组,可专门为该数组创建一个M文件。利用文件编辑器输入该数组并保存,以后只要在MATLAB指令窗中,运行该文件,文件中的数组就会自动生成于MATLAB内存中。c)标准数组生成函数指 令含 义指 令含 义diag产生对角形数组(二维以下)rand产生均匀分布随机数组eye产生单位数组(二维以下)randn产生正态分布随机数组magic 产生魔方数组(二维以下)zeros产生全0数组ones产生全1数组第三章 数组及其运算仿真技术 d=eye(5) %产生(产生(5*5)的单位阵)的单位阵d = 1 0 0

9、0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 a=3*ones(4,5) %产生产生4行行5列全列全3数组数组a = 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 b=diag(a) %取取a 阵对角元阵对角元b = 3 3 3 3 c=diag(b) %生成对角元为数组生成对角元为数组b 对对 角阵角阵(与与diag(3,3,3,3) 效果相同)效果相同)c = 3 0 0 0 0 3 0 0 0 0 3 0 0 0 0 3 zeros(5,6) %生成生成5行行6列的全列的全0阵阵ans = 0 0 0 0 0 0

10、 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0第三章 数组及其运算仿真技术3.2.2 二维数组2.二维数组的寻访和赋值a)全元素标识和赋值n这是一种最常用的标识方式,对于二维数组来说,“全下标”标识由两个下标组成:行下标,列下标。如A(3,5)等。b)单下标标识和赋值n这是只用一个下标来指明元素在数组中的位置。对二维数组采用“单下标”标识,应先对数组的所有元素进行“一维编号”,即先设想把二维数组的所有列按先左后右的次序,首尾相接排成“一维长列”;然后自上往下对元素位置进行编号。 a=zeros(2,5)a = 0 0 0 0 0 0 0 0 0

11、 0(生成2行5列0数组) a(:)=-4:5a = -4 -2 0 2 4 -3 -1 1 3 5(对A进行单下标全元素赋值)第三章 数组及其运算仿真技术3.2.2 二维数组2.二维数组的寻访和赋值c)利用MATLAB的冒号运算,可方便地进行数组(矩阵)的子数组(子矩阵)的寻访和赋值。冒号表达式:冒号表达式: s1:s2:s3 式中,s1:起始值; s2:步长(省略为1); s3:终止值。例如: A(:,j):表示A矩阵第j列全部元素 A(i,:):表示A矩阵第i行全部元素 A(1:3,2:4):表示对A矩阵取第一到第三行,第二到第四列中所有元素构成的子矩阵。 s=1 3 5;a(s)=10

12、:10:30a = 10 20 30 2 4 -3 -1 1 3 5(对A进行单下标行数组元素赋值)第三章 数组及其运算仿真技术3.3.1 数组运算的常用函数1.函数数组的运算规则n对于(mn)数组X=xijmn,函数f()的数组运算规则是指: f(X)=f(xij)mn3.3 数组运算和矩阵运算 例如对(33)数组A进行2次乘方运算A2,只需对数组中每个元素进行乘方运算aij2即可,如右图所示。 A=1 2 3;4 5 6;7 8 9A = 1 2 3 4 5 6 7 8 9 A .2ans = 1 4 9 16 25 36 49 64 81第三章 数组及其运算仿真技术3.3.1 数组运算的

13、常用函数2.常用函数3.3 数组运算和矩阵运算名称含义名称含 义名称含 义sin正弦log2以2为底的对数 real复数实部cos余弦pow22的幂sign符号函数tan正切log自然对数rem求余数asin反正弦 log10常用对数mod模除求余acos反余弦 angle相角(弧度)sqrt平方根atan反正切 conj复数共轭abs模或绝对值exp指数imag复数虚部第三章 数组及其运算仿真技术 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.079

14、4 2.1972 exp(A)ans = 1.0e+003 * 0.0027 0.0074 0.0201 0.0546 0.1484 0.4034 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 矩阵运算n矩阵运算不同于数组运算,要符合矩阵运算的规则数组运算矩阵运算指令含义指令含义A.非共轭转置A共轭转置A=s把标量s赋给A的每个元素s+B标量s分别与B元素之和s.*A标量s分

15、别与A元素之积s*A标量s分别与A元素之积A.nA的每个元素自乘n次AnA阵为方阵时,自乘n次A+B对应元素相加A+B矩阵相加A.*B对应元素相乘A*B内维相同矩阵的乘积A./BA的元素被B的对应元素除A/BA右除Blog(A)对A的各元素求对数Logm(A)A的矩阵对数函数第三章 数组及其运算仿真技术C = -4.0000 + 1.0000i -3.0000 + 3.0000i -2.0000 + 2.0000i -1.0000 + 3.0000i 0 + 2.0000i 1.0000 + 5.0000i 2.0000 + 2.0000i 3.0000 + 5.0000i 4.0000 +

16、7.0000ians = -4.0000 + 1.0000i -1.0000 + 3.0000i 2.0000 + 2.0000i -3.0000 + 3.0000i 0 + 2.0000i 3.0000 + 5.0000i -2.0000 + 2.0000i 1.0000 + 5.0000i 4.0000 + 7.0000ians = -4.0000 - 1.0000i -1.0000 - 3.0000i 2.0000 - 2.0000i -3.0000 - 3.0000i 0 - 2.0000i 3.0000 - 5.0000i -2.0000 - 2.0000i 1.0000 - 5.0

17、000i 4.0000 - 7.0000iC=A+B*iC.C%例二维数组、矩阵运算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.2000 1.0000 0.6000 0.5714ans = -2.5000 -1.5000 1.5000 -1.0000 -0.5455 0.8182 0

18、.5000 0.4091 0.1364ans = -4.0000 -1.0000 -1.0000 -0.3333 0 0.2000 1.0000 0.6000 0.5714ans = -3.5000 -3.0000 -2.5000 -1.9545 -1.6364 -1.3182 2.6818 2.4545 2.2273A./BA/BB.ABAans = -4 -9 -4 -3 0 5 4 15 28ans = -17 -28 -37 1 2 5 19 32 47, A.*BA*BA=-4,-3,-2;-1,0,1;2,3,4;B=1,3,2;3,2,5;2,5,7;第三章 数组及其运算仿真技术

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

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

21、6 5 4 3 2 1r0 = 1 1 1 0 0 0 0 0 0r1 = 0 0 0 0 1 0 0 0 0r2 = 0 0 0 0 0 1 1 1 1第三章 数组及其运算仿真技术3.4.2 逻辑操作n逻辑操作指令3.4 关系操作和逻辑操作指令含义指令含义指令含义&与、和|或否、非【说明】1)标量与数组逻辑运算 运算比较在标量与数组每个元素之间进行,结果与数组同维。2)数组与数组逻辑运算 参与运算的数组必须同维,运算在两数组相同位置上的元素间进行,运算结果与数组同维。第三章 数组及其运算仿真技术逻辑操作示例1: A=1:9, B=10-A, r0=(AB)&(AB)|(A3)A = 1 2

22、3 4 5 6 7 8 9B = 9 8 7 6 5 4 3 2 1r0 = 0 0 0 1 1 1 1 1 1判断A中不小于4的元素r1 = 0 0 0 0 0 1 1 0 0判断A中小于8又比B大的元素r2 = 1 1 0 0 0 1 1 1 1判断A中小于3或比B大的元素第三章 数组及其运算仿真技术%逻辑操作示例2:逐段解析函数的计算和表现t=linspace(0,3*pi,500);y=sin(t); %产生正弦波z1=(t2*pi).*y; %获得整流半波w=(tpi/3&t7*pi/3&t a=an universitya =an university第三章 数组及其运算仿真技术3

23、.5 .1 字符串数组创建与操作2)串数组的大小 串数组中每个字符(包括空格和标点)都占据一个元素位,上面输入的数组a的大小可用下面指令获得: size(a)ans = 1 13表示这是一个113的数组。3)串数组的元素标识在一维串数组中,MATLAB按自左至右的次序标识字符的位置,如: b=a(end:-1:1)b = ytisrevinu na第三章 数组及其运算仿真技术3.5 .1 字符串数组创建与操作4)中文字符串数组5) 在中文字符串数组中,每个字符也占一个元素位置,如串数组中每个字符(包括空格和标点)都占据一个元素位,上面输入的数组a的大小可用下面指令获得: A=武汉科技大学,si

24、ze(A)A = 武汉科技大学ans = 1 65)由小串构成长串 B=A, ,机械自动化学院B = 武汉科技大学 机械自动化学院第三章 数组及其运算仿真技术3.5.1 字符串数组创建与操作6)多行串数组的创建n直接创建 多行串数组的直接创建时,要保证同一串数组的各行字符数要相等:n利用串操作函数创建串操作函数按最长行设置每行长度,其它行的尾部用空格填充: AB=A, ;机械自动化学院,size(AB)AB = 武汉科技大学 机械自动化学院ans = 2 7 AC=char(A,机械自动化学院),size(AC)AC = 武汉科技大学 机械自动化学院ans = 2 7第三章 数组及其运算仿真技

25、术3.5.2 串操作函数指令含义指令含义blanks(n)创建n个空格串lower(s)使s里英文字母全部小写deblank(s)删去串尾部的空格符strcat(s1,s2,)把串s1、s2等连接成长串eval(s)把串s当作MATLAB指令运行strncomp(s1,s2,n)若串s1 、s2的前n个字符相同,则判“真”给出逻辑1ischar(s)s是字符串,则判“真”给出逻辑1strcomp(s1,s2)若串s1 、s2相同,则判“真”给出逻辑1isspace(s)以逻辑1指示s里空格符的位置strrep(s1,s2,s3)串s1中所有出现s2的地方替换为s3isletter(s)以逻辑1

26、指示s里文字符的位置upper(s)使s里英文字母全部大写 a=this is a, b=example; isletter(a)ans = 1 1 1 1 0 1 1 0 1以逻辑1指示a里文字符的位置 upper(b)ans = EXAMPLE使b里英文字母全部大写第三章 数组及其运算仿真技术3.5.3 串转换函数指 令含 义指 令含 义abs把串翻译成ASCII码int2str把整数转换为串bin2dec 二进制串转换成十进制整数 num2str把数值转换为串charASCII码及其它非数值类数据转换成字符串setstr把ASCII码翻译成串double把任何类数据转换成双精度数值str

27、2num把串转换为数值%例串转换函数示例a=rand(2,2),b=examplec=abs(b)d=char(c)e=num2str(a),size(e)c = 101 120 97 109 112 108 101字符串b转换成ASCII码d = exampleASCII码转换成字符串e = 0.9218 0.1762 0.7382 0.4057ans = 2 18数组a转换成字符串第三章 数组及其运算仿真技术3.6.1 非数NANn非数(Not a Number)指的是 0/0, / , 0 之类的运算, 在MATLAB中用NaN或nan表示。nNaN具有以下性质:a)NaN参与运算所得的

28、结果也是NaN,即具有传递性;b)非数没有大小的概念,不能比较两个非数的大小。n非数的功用:a)真实表示0/0, / , 0 运算的结果;b)避免因这类异常运算而造成程序中断;c)在数据可视化中,用来裁减图形。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)【说明】inf 在 MATLAB中表示第三章 数组及其运算仿真技术【例】非数

29、的产生和处理:求近似极限,修补图形缺口t=-2*pi:pi/10:2*pi; %该自变量数组中存在零值y=sin(t)./t; %在t=0处,计算将产生NaNtt=t+(t=0)*eps; %逻辑数组参与运算,用“机器零”代替0元素yy=sin(tt)./tt; %用数值可算的sin(eps)/eps近似替代sin(0)/0subplot(1,2,1),plot(t,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),yla

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

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号