收藏 分享(赏)

第二章 数值数组及其运算.ppt

上传人:gnk289057 文档编号:6222001 上传时间:2019-04-02 格式:PPT 页数:46 大小:170KB
下载 相关 举报
第二章 数值数组及其运算.ppt_第1页
第1页 / 共46页
第二章 数值数组及其运算.ppt_第2页
第2页 / 共46页
第二章 数值数组及其运算.ppt_第3页
第3页 / 共46页
第二章 数值数组及其运算.ppt_第4页
第4页 / 共46页
第二章 数值数组及其运算.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

1、第二章 数值数组及其运算,2.2.1 一维数组的创建 (1)逐个元素输入法:最简单,最通用的构造数组的方法。x2 pi/2 sqrt(3) 3+5i (2)冒号生成法:通过“步长”设定,生成一维“行”数组的方法。x=a:inc:b (3)定数线性采样法:在设定的“总点数”下,均匀采样生成一维“行”数组。x=linspace(a,b,n) (4)定数对数采样法:在设定的“总点数”下,经“常用对数”采样生成一维“行”向量;生成数组的第一个元素值为 ,最后一个元素值为 x=logspace(a,b,n),2.2.2一维数组的子数组寻访和赋值 【例2.2.2-1】子数组的寻访(Address) ran

2、d(state,0) %把均匀分布伪随机发生器%置为0状态 x=rand(1,5) %产生x的均布随机数组 x(3) %寻访数组x的第三个元素 x(1 2 5) %寻访数组x的第一、二、五个元素组成的子数组 x(1:3) %寻访前三个元素组成的子数组 x(3:end) %寻访除前2个元素外的全部其他%end是最后一个元素的下标 x(3:-1:1) %由前三个元素倒排构成的子数组 x(find(x0.5) %由大于0.5的元素构成的子数组 x(1 2 3 4 4 3 2 1) %对元素可以重复寻访,使所得数组长度允许大于原数组。,【例2.2.2-2】子数组的赋值(Assign)。x(3)=0 %

3、把上例中第三个元素重新赋值为0 x(1 4)=1 1 把当前x数组的第一、四个元素都赋值为1,2.3 二维数组的创建 2.3.1 直接输入法 二维数组必须有一下三个要素: 整个输入数组必须以方括号“ ”为其首尾; 数组的行与行之间必须用分号“;”或回车enter隔离; 数组元素必须由逗号“,”或空格分隔。,【例2.3.1-1】在MATLAB环境下,用下面三条指令创建二维数组C。 a=2.7358; b=33/79; C=1,2*a+i*b,b*sqrt(a)sin(pi/4),a+5*b,3.5+i,【例2.3.1-2】复数数组的另一种输入方式。 M_r=1,2,3;4,5,6, M_i=11

4、,12,13;14,15,16 CN=M_r+i*M_i,【例2.3.2-1】创建和保存数组AM的 MyMatrix.m 文件。 (1)打开文件编辑调器,输入以下内容 % MyMatrix.m Creation and preservation of matrix AM AM=101,102,103,104,105,106,107,108,109;.201,202,203,204,205,206,207,208,209;.301,302,303,304,305,306,307,308,309; (2)保存此文件,并且起名MyMatrix (3)以后只要在MATLAB指令窗中,运行此文件,数组A

5、M就会自动生成于MATLAB内存中,2.4 二维数组元素的标识 2.4.1 “全下标”标识采用“全下标”标识法,即指出是“第几行,第几列”的元素 例如:A(2,3)就表示二维数组A的“第二行,第三列”的元素 多维数组也同样,2.4.2 “单下标”标识“单下标(Linear Index)”标识就是“只用一个下标来指明元素在数组中的位置”这种方法首先要对二维数组的所有元素进行“一维编号”,所谓“一维编号”就是:先设想把二维数组的所有列,按先左后右的次序、首尾相接排成“一维长列”。然后,自上往下对元素位置进行编号。“单下标”与“全下标”的转换关系:以(mn)的二维数组A为例,若“全下标”元素位置是“

6、第r行,第c列”,那么相应的“单下标”为l=(c-1)mr。MATLAB有两个指令可以实现以上标识方法之间的转换: sub2ind 根据全下标换算出单下标 ind2sub 根据单下标换算出全下标,2.4.3 “逻辑1”标识元素或是0或是1的数组是“逻辑数组(Logic Array)”。所谓“逻辑1”标识法,就是通过与矩阵同样大小的逻辑数组中“逻辑值1”所在的位置,指示出数组中的元素位置。实际应用中,一般用于寻找大于某值的元素。 【例2.4.3-1】找出数组中所有绝对值大于3的元素。 A=zeros(2,5); A(:)=-4:5 L=abs(A)3 islogical(L) X=A(L),【例

7、2.4.3-2】演示逻辑数组与一般双精度数值数组的关系和区别。 (1)逻辑数组与双精度数组的相同之处 Num=1,0,0,0,1;0,0,0,0,1; N_L=Num=L c_N=class(Num) c_L=class(L) (2)逻辑数组与双精度数组的差别 islogical(Num) Y=A(Num),有关逻辑数组的补充说明,逻辑数组一方面具有双精度性,另一方面又区别于一般的双精度数组 逻辑数组产生于逻辑函数或逻辑运算,它具有“逻辑标识”能力。 从本质上说,逻辑数组是双精度数组的子类。它继承了双精度类数组的全部性质,又有自己特定的属性和能力。,2.5 二维数组的子数组寻访和赋值 【例2.

8、5-1】不同赋值方式示例。 A=zeros(2,4) %创建(24)的全零数组 A(:)=1:8 %全元素赋值方式 s=2 3 5; %产生单下标数组行数组 A(s) %由“单下标行数组”寻访产生A元素组成的行数组 Sa=10 20 30 %Sa是长度为3的“列数组” A(s)=Sa %单下标方式赋值 A(:,2 3)=ones(2) %双下标赋值方式:把A的第2、3列元素全赋为1,2.6 执行数组运算的常用函数 2.6.1 函数数组运算规则的定义:对于(mn)数组函数 的数组运算规则是:2.6.2 执行数组运算的常用函数,【例2.6.2-1】演示pow2的数组运算性质。A=1:4;5:8 p

9、ow2(A),2.7 数组运算和矩阵运算 2.7.1 数组运算和矩阵运算指令对照汇总 【例 2.7.1-1】两种不同转置的比较 clear; A=zeros(2,3); A(:)=1:6; A=A*(1+i) A_A=A. A_M=A,2.8 多项式的表达方式及其操作 2.8.1 多项式的表达和创建一 多项式表达方式的约定 MATLAB约定降幂多项式: 用系数行向量 表示。二 多项式行向量的创建方法 (1)多项式系数向量的直接输入法即按照约定,把多项式的各项系数依次排放在行向量的元素位置上。需要注意的是:多项式系数应以降幂排列,假如多项式中缺某幂次项,那么认为该幂次项的系数为零。 (2)利用指

10、令:Ppoly(AR),产生多项式系数向量。若AR是方阵,则多项式P是该方阵的特征多项式;若 ,则AR的元素被认为是多项式P的根。,【例 2.8.1.2-1】求3阶方阵A的特征多项式。 A=11 12 13;14 15 16;17 18 19; PA=poly(A) PPA=poly2str(PA,s) 【例 2.8.1.2-2】由给定根向量求多项式系数向量。 R=-0.5,-0.3+0.4*i,-0.3-0.4*i; P=poly(R) PR=real(P) PPR=poly2str(PR,x),2.8.2 多项式运算函数 【例2.8.2-1】求的 “商”及“余”多项式。 p1=conv(1

11、,0,2,conv(1,4,1,1); p2=1 0 1 1; q,r=deconv(p1,p2); cq=商多项式为 ; cr=余多项式为 ; disp(cq,poly2str(q,s), disp(cr,poly2str(r,s),【例 2.8.2-2】两种多项式求值指令的差别。 S=pascal(4) P=poly(S); PP=poly2str(P,s) PA=polyval(P,S) PM=polyvalm(P,S),【例 2.8.2-3】部分分式展开。 a=1,3,4,2,7,2; 分母多项式系数向量 b=3,2,5,4,6; 分子多项式系数向量 r,s,k=residue(b,a

12、),2.9 标准数组生成函数和数组操作函数 2.9.1 标准数组生成函数 【例2.9.1-1】标准数组产生的演示。 ones(1,2) %产生长度为2的全1行数组 ones(2) %产生(22)的全1阵 randn(state,0) %把正态随机数发生器置0 randn(2,3) %产生(23)的正态随机阵 D=eye(3) %产生(33)的单位阵 diag(D) %取D阵的对角元素 diag(diag(D) %内diag取D的对角元,外diag利用一维数组生成对角阵 repmat(D,1,3) %在水平方向“铺放”三个D阵,2.9.1 数组操作函数 【例 2.9.2-1】diag与resha

13、pe的使用演示。 a=-4:4 %产生一维数组 A=reshape(a,3,3) %把一维数组a重排成 的二维数组 a1=diag(A,1) %取A阵“第一上对角线”的元素 A1=diag(a1,-1) %产生以a1数组元素为“第一下对角线”元素的二维数组 【例2.9.2-2】数组转置、对称交换和旋转操作后果的对照比较。 A A. %转置 flipud(A) %上下对称交换 fliplr(A) %左右对称交换 rot90(A) %逆时针旋转90度,2.10 数组构作技法综合 【例2.10-1】数组的扩展。 (1)数组的赋值扩展法 A=reshape(1:9,3,3) %创建 数组A A(5,5

14、)=111 %扩展数组,扩展部分除(5,5)元素为111外,其余均为0。 A(:,6)=222 %标量对子数组赋值,并扩展数组。 (2)多次扩展法 AA=A(:,1:6,1:6) %相当于指令repmat(A,1,2) (3)合并扩展法 B=ones(2,6) %创建 全1数组 AB_r=A;B %行数扩展合成 AB_c=A,B(:,1:5) %列数扩展合成,【例2.10-2】提取子数组,合成新数组。 A %重显A数组 AB_BA=triu(A,1)+tril(A,-1) %利用操作函数,使主对角元素为全0 AB1=A(1:2,end:-1:1);B(1,:) %灵活合成,【例2.10-3】单

15、下标寻访和reshape指令演示。 clear %清除内存变量 A=reshape(1:16,2,8) %变一维数组成 数组 reshape(A,4,4) %变 数组为 数组 s=1 3 6 8 9 11 14 16; %定义“单下标”数组 A(s)=0 %利用“单下标”数组对A的元素重新赋值,【例2.10-4】逻辑函数的运用示例。 R=randn(3,6) %创建正态随机阵 L=abs(R)1.5 %不等式条件运算,结果给出逻辑数组 R(L)=0 %“逻辑1”对应的元素赋0值 s=(find(R=0) %利用find获得符合关系等式条件的元素“单下标” R(s)=111 %利用“单下标”定位

16、赋值 ii,jj=find(R=111); %利用find获得符合关系等式条件的元素“双下标”,2.11 高维数组 2.11.1 高维数组的创建 【例2.11.1-1】“全下标”元素赋值方式创建高维数组演示。 A(2,2,2)=1 单元素赋值创建(222)数组 B(2,5,:)=1:3 子数赋值组创建(253)数组 【例2.11.1-2】低维数组合成高维数组。 clear, A=ones(2,3); A(:,:,2)=ones(2,3)*2; A(:,:,3)=ones(2,3)*3,【例2.11.1-3】由函数ones, zeros, rand, randn直接创建标准高维数组的示例。 ra

17、nd(state,1111), rand(2,4,3) 【例2.11.1-4】借助cat, repmat, reshape等函数构作高维数组。 cat(3,ones(2,3),ones(2,3)*2,ones(2,3)*3) repmat(ones(2,3),1,1,3) reshape(1:12,2,2,3) 说明:cat(2,A,B) 得到 A,Bcat(1,A,B) 得到 A;B,2.11.2 高维数组的标识 为更好的表述复杂的高维数组操作,现对若干术语和MATLAB相关指令说明如下: (1)数组的维数(Dimension)和ndims指令“行”或“列”数组(或称向量)是一维数组,即“维

18、数为1 ” 。矩阵是二维数组,即“维数是2”。 指令ndims(A)可直接给出数组A的维数 (2)数组的大小(Size)和size指令不管A数组的维数是多少,size(A)可直接给出A的各维的大小,而指令length(A)可给出所有维中的最大长度。即length(A)=max(size(A),【例2.11.2-1】获取数组A的维数、大小和长度 clear;A=reshape(1:24,2,3,4); dim_A=ndims(A) size_A=size(A) L_A=length(A),2.1 2 “非数”和“空”数组 2.12.1 非数NaN 根据IEEE规定 等运算都会产生非数(Not a

19、 Number)。该非数在MATLAB中用NaN或nan记述。 (1)根据IEEE数学规范,NaN具有以下性质: NaN参与运算所得的结果也是NaN,即具有传递性 非数没有“大小”概念,因此不能比较两个非数的大小 (2)非数的功用 真实记述 运算后的结果 避免可能因 运算而造成程序执行的中断 在数据可视化中,用来裁剪图形。,【例2.12.1-1】非数的产生和性质演示。 (1)非数的产生 a=0/0, b=0*log(0), c=inf-inf 0*a,sin(a) (2)非数的不可比较性 a= =nan a=nan a= =b %两个非数不存在“等”与“不等”的概念 bc %两个非数不能比较大

20、小 (5)非数的属性判断 class(a) %数据类型归属 isnan(a) %该指令是唯一能正确判断非数的指令,2.12.2 “空”数组 某维长度为0或若干维长度为0的数组就是“空”数组,它是MATLAB为操作和表述需要而专门设计的一种数组。“空”数组的功用: 在没有“空”数组参与的运算时,计算结果中的“空”可以合理地解释“所得结果的含义” 运用“空”数组对其他非空数组赋值,可以收缩数组的大小,但不能改变那数组的维数。,说明: 不能把“空”数组与全零数组混淆 不要把“空”数组看成“虚无”。它确实存在。利用which,who,whos,以及变量浏览器都可以验证它的存在 唯一能正确判断一个数组是

21、否“空”的指令是isempty。 “空”数组在运算中不具备传递性。对运算中出现的“空”结果,解释要谨慎。,【例2.12.2-1】关于“空”数组的算例。(1)创建“空”数组的几种方法 a=, b=ones(2,0), c=zeros(2,0), d=eye(2,0), e=rand(2,3,0,4) (2)”空”数组的属性 class(a) %“空”的数据类别 isnumeric(a) %是数值数组类吗 isempty(a) %唯一可正确判断数组是否“空”的指令 which a %变量a是什么 ndims(a) %数组a的维数 size(a) %a数组的大小,(3)“空”数组不具备一般传递性 b

22、_c1=b.*c %两个空阵的点乘 b_c2=b*c %矩阵乘,生成矩阵为0-by-0,故“空” b_c3=b*c %矩阵乘,生成矩阵为2-by-2 (4)”空“数组的比较要谨慎 a=b %结果可解释为“不等于” b=c %结果可合理解释为“无法比较” cd %结果可合理解释“无法比较” a=0 %结果可解释为“不等于” A =0 %结果解释为“是不等”,(5) 没有“空”数组参与运算时,结果中的“空”有合理解释 A=reshape(-4:5,2,5) %创建一个数值数组A L2=A10 %检查A中大于10的元素位置 find(L2) %找出L2逻辑数组中非0元素的“单下标”标识。 (6)“空

23、”数组用于子数组的删除和数组大小的缩放 A(:,2,4)= %删除A的第二、四列,【例2.11.3-4】赋“空阵”值操作。 A=reshape(1:18,2,3,3) %创建3维数组 A(:,2:3,:)= %赋“空”,使原A数组的第二、三列消失 B=A; size(A) A_1=squeeze(A) Size(A_1) %撤消“孤维”,数组由3维降为2维 size(B) %B数组与A同样存在“孤维” B(:,1,:)= %对“孤维”赋“空”,不能降维,【例2.11.3-5】“孤维”的撤消和降维。 clear, A=ones(2,3); A(:,:,2)=ones(2,3)*2; A(:,:,

24、3)=ones(2,3)*3 B=cat(4,A(:,:,1),A(:,:,2),A(:,:,3) %串接为4维数组 size(B) %测量数组B的大小 C=squeeze(B) %撤消长度为1的“孤维”,使原4维数组减为3维数组 size(C),2.13 关系操作和逻辑操作 MALAB的约定: 在所有关系表达式和逻辑表达式中,作为输入的任何非0数都被看作是“逻辑真”,而只有0才被认为是“逻辑假” 所有关系表达式和逻辑表达式的计算结果,即输出,是一个由0和1组成的“逻辑数组(Logical Aarray)”。在此数组中1表示“真”,0表示“假” 逻辑数组是“数值类”的子类。它继承了“数值数组”

25、的全部属性,因此它完全可以接受对“数值数组”施行的操作和函数作用;它又有不同于普通的“数值”的“个性”,表示对事物的判断结论“真”与“假”,因此可用于数组寻访等特殊场合。,【例2.13.1-1】关系运算示例。 A=1:9, B=10-A, r0=(A4), r1=(A=B),【例2.13.1-2】关系运算运用之一:求近似极限,修补图形缺口。 t=-2*pi:pi/10:2*pi; %该自变量数组中,存在0值。 y=sin(t)./t; %在t=0处,按IEEE规则,计算将产生NaN tt=t+(t=0)*eps; %逻辑数组参与运算,使0元素被一个“机器零“小数代替 yy=sin(tt)./tt; %用数值可算的sin(eps)/eps近似替代sin(0)/0极限 subplot(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),ylabel(yy),title(正确图形),2.13.2 逻辑操作 【例2.13.2-1】逻辑操作示例。注意逻辑运算和关系运算之间的优先级次序。 A=-3:3; L1=(A0) L2=A0 L3=A L4=A-2&A1,

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

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

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


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

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

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