版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二讲 数值数组及其运算,数值数组和数组运算始终是MATLAB的核心,第二讲 数值数组及其运算,2.1 引言 2.2 一维数组的创建和寻访 2.3 二维数组的创建 2.4 二维数组元素的标识 2.5 二维数组的子数组寻访和赋值 2.6 执行数组运算的常用函数,第二讲 数值数组及其运算,2.7 数组运算和矩阵运算 2.8 标准数组生成函数和数组操作函数 2.9 数组构作技法综合 2.10 高维数组 2.11 “非数”和“空”数组 2.12 关系操作和逻辑操作,2.1 引言,数组:由一组实数或复数排成的长方阵列(Array) 一维的“行”或“列” 二维的“矩形” 三维的“若干矩形的堆叠” 更高的任
2、意维,2.1 引言,数组运算:无论对数组施加什么运算(包括函数),总认为是对数组中每个元素平等的实施同样的操作 设计数组和数组运算的目的: 使程序简单、易读;更接近数学公式 提高程序向量化程度,提高计算效率,节省系统开销,2.1 引言,绘制函数 在0 x1时的曲线 x=0:0.1:1 %定义自变量的采样点取值数组 y=x.*exp(-x)%利用数组运算计算各自变量采样点上的函数值 plot(x,y),xlabel(x),ylabel(y),title(y=x*exp(-x) %绘图 第一句定义自变量数组:0为起点,每隔0.1取一个点,直到1。得到111的数组 第二句中,指数函数exp(-x)对
3、x每个元素求值,结果也是111的数组 数组乘是两个数组对应元素相乘,得到y也是111的数组 连续函数必须在相应区间上采样才能进行数值计算,2.1 引言,2.2 一维数组的创建和寻访,1. 一维数组的创建 逐个元素输入 x=2 pi/2 sqrt(3) 3+5i 冒号生成 格式 x=a:inc:b a是第一个元素,inc是步长(缺省为1) 若(b-a)是inc的整数倍,则生成数组最后一个元素等于b,否则小于b inc可取正数或负数。取正:ab,2.2 一维数组的创建和寻访,线性采样 格式 x=linspace(a,b,n) a,b是第一个和最后一个元素,n是采样点数 生成1n的数组 等价于x=a
4、:(b-a)/(n-1):b 运用MATLAB函数生成法 如rand,zeros,ones等 以上均为行数组,列数组转置即可,2.2 一维数组的创建和寻访,2.一维数组子数组的寻访和赋值 子数组的寻访(Address) rand(state,0)%把均匀分布伪随机发生器置为0状态 x=rand(1,5) %产生15的均布随机数组 x(3) %寻访数组x的第三个元素 x(1 2 5)%寻访数组x的第一、二、五个元素组成的子数组 x(1:3) %寻访前三个元素组成的子数组 x(3:end)%寻访除前2个元素外的全部其他元素。end是最后一个元素的下标 x(3:-1:1) %由前三个元素倒排构成的子
5、数组 x(find(x0.5) %由大于0.5的元素构成的子数组 x(1 2 3 4 4 3 2 1)%对元素可以重复寻访,使所得数组长度允许大于原数组,2.2 一维数组的创建和寻访,子数组的赋值(Assign) x(3) = 0 %第三个元素赋值为0 x(1 4)=1 1 %第一、四个元素都赋值为1 保证被赋值的子数组长度与送入的数组长度相同,2.3 二维数组的创建,二维数组与矩阵 二维数组是由实数或复数排列成矩形构成的 从数据结构上看,矩阵和二维数组没有区别 当二维数组带有线性变换含义时,就是矩阵,2.3 二维数组的创建,1.直接输入法 二维数组三要素: 整个数组必须以“”为首尾 数组行与
6、行之间必须用“;”或回车隔离 数组元素必须用“,”或空格分隔,2.3 二维数组的创建,在MATLAB环境下,用下面三条指令创建二维数组C a=2.7358; b=33/79;%这两条指令分别给变量 a ,b 赋值 C=1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i %创建二维数组C C = 1.0000 5.4716 + 0.4177i 0.6909 0.7071 4.8244 3.5000 + 1.0000i “;”在“”内,是数组行分隔符 “;”作为指令结束符,不显示执行结果,2.3 二维数组的创建,复数数组的另一种输入方式 M_r=1,2,3;4,5,
7、6,M_i=11,12,13;14,15,16 CN=M_r+i*M_i %由实部、虚部数组构成复数数组 M_r = 1 2 3 4 5 6 M_i = 11 12 13 14 15 16 CN = 1.0000 +11.0000i 2.0000 +12.0000i 3.0000 +13.0000i 4.0000 +14.0000i 5.0000 +15.0000i 6.0000 +16.0000i “,”在“”内,是数组元素分隔符 “,”作为指令结束符,显示执行结果,2.3 二维数组的创建,2.数组编辑器创建 单击工作空间中的“新建”图标 3.利用M文件创建和保存数组 对于经常需要调用的数组
8、,尤其是比较大而复杂的数组,值得为它专门建立一个M文件 4.利用MATLAB函数创建,2.4 二维数组元素的标识,1.“全下标”标识 经典教科书的标识法 即指出是“第几行,第几列”的元素 优点:几何概念清楚,引述简单。(最常用) “全下标”由两个下标组成:行下标,列下标。例如:A(2,5),2.4 二维数组元素的标识,2.“单下标”标识 就是用一个下标来指明元素在数组中的位置 对二维数组元素进行“一维编号” 把二维数组所有列,按先左后右的次序,首尾相接排成“一维长列”,然后自上往下编号 “单下标”与“全下标”转换关系:以(mn)的二维数组A为例,全下标元素位置是“第r行,第c列”,改为单下标表
9、示为a=(c-1)m+r。 MATLAB有两个指令可实现此转换: sub2ind 据全下标算出单下标 ind2sub 据单下标算出全下标,2.4 二维数组元素的标识,3.“逻辑1”标识 常用问题:寻找数组中大于某值的元素 找出数组 中所有绝对值大于3的元素 A=zeros(2,5); %预生成一个25全零数组 A(:)=-4:5 %运用“全元素”赋值法获得A L=abs(A)3 %产生与A同维的“0-1”逻辑值数组 islogical(L) %判断L是否逻辑值数组 X=A(L) %把L中逻辑值1对应的A元素取出,2.4 二维数组元素的标识,A = -4 -2 0 2 4 -3 -1 1 3 5
10、 L = 1 0 0 0 1 0 0 0 0 1 ans = 1 X = -4 4 5 L的元素是0或1,它是“逻辑数组”,是一种特殊的数据类型。 “逻辑1”标识法:通过与A同样大小的逻辑数组L中“1”的位置指示A中元素的位置,2.5 二维数组的子数组寻访和赋值,A(r,c)A的r行c列元素 A(r,:)A的r行全部元素 A(:,c)A的c列全部元素 A(:)A的“单下标全元素”寻访 A(s)“单下标”寻访。生成“s指定的”一维数组。s是行数组(或列数组),则A(s)就是长度相同的行数组(或列数组)。 A(L)“逻辑1”寻访 。由与A同样大小的“逻辑数组”L中的“1”元素选出A的对应元素。,A
11、(r,c)=Sa“双下标”方式赋值。Sa的“行宽、列长”必须与A(r,c)的“行宽、列长”相同。 A(:)=D(:)全元素赋值。结果:保持A的“行宽、列长”不变。条件:A、D两个数组的元素数相等。 A(s)=Sa“单下标”部分元素赋值。结果:保持A的“行宽、列长”不变。条件:s单下标数组长度必须与一维数组Sa的长度相等,但s、Sa不一定同是“行数组”或“列数组”。,2.5 二维数组的子数组寻访和赋值,A=zeros(2,4) %创建24的全零数组 A = 0 0 0 0 0 0 0 0 A(:)=1:8 %全元素赋值方式 A = 1 3 5 7 2 4 6 8 s=2 3 5; %产生单下标数
12、组行数组 A(s) %由“单下标行数组”寻访产生A元素组成的行数组 Sa=10 20 30 %Sa是长度为3的“列数组”(行数组也可以) A(s)=Sa %单下标方式赋值,2.5 二维数组的子数组寻访和赋值,ans = 2 3 5 Sa = 10 20 30 A = 1 20 30 7 10 4 6 8 A(:,2 3)=ones(2) %双下标赋值方式:把A的第2、3列元素全赋为1 A = 1 1 1 7 10 1 1 8,2.5 二维数组的子数组寻访和赋值,2.6 执行数组运算的常用函数,数组加、减、乘、除、幂 函数的数组运算规则: 函数f(.)对数组的运算相当于对数组的每一个元素作相同的
13、函数运算 大部分常用函数都执行数组运算 三角、指数、复数、取整求余、坐标变换,2.7 数组运算和矩阵运算,矩阵运算有明确、严格的数学规则 数组运算是MATLAB定义的规则 目的:数据管理方便、操作简单、指令形式自然、执行计算有效 缺乏严谨的数学推理,本身仍在完善 影响随MATLAB而扩大,2.7 数组运算和矩阵运算,运算指令对照 A. 非共轭转置 A 共轭转置 A.n各元素n次幂An方阵的n次幂 A.*B对应元素相乘A*B矩阵相乘 A./BA元素除以B元素A/BA右除B B.A同上BAA左除B exp(A) 对各元素求幂expm(A)矩阵指数 log(A) 对各元素求对数logm(A)矩阵对数
14、 sqrt(A) 对各元素求方根sqrtm(A)矩阵平方根,2.7 数组运算和矩阵运算,A=s标量赋给A的每个元素(s和A同大小) A#B对应元素关系运算(=,=,=,=) AB对应元素逻辑运算(A=zeros(2,3); A(:)=1:6; %全元素赋值法 A=A*(1+i) %运用标量与数组乘产生复数矩阵 A_A=A. %数组转置,即非共轭转置 A_M=A %矩阵转置,即共轭转置 A = 1.0000 + 1.0000i 3.0000 + 3.0000i 5.0000 + 5.0000i 2.0000 + 2.0000i 4.0000 + 4.0000i 6.0000 + 6.0000i
15、A_A = 1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i 4.0000 + 4.0000i 5.0000 + 5.0000i 6.0000 + 6.0000i A_M = 1.0000 - 1.0000i 2.0000 - 2.0000i 3.0000 - 3.0000i 4.0000 - 4.0000i 5.0000 - 5.0000i 6.0000 - 6.0000i,两种不同乘的比较 clear;A=1,2;3,4 B=2,3;4,5 C_A=A.*B C_M=A*B A =1 2 3 4 B =2 3 4 5 C =2 6 12
16、20 D =10 13 22 29,2.7 数组运算和矩阵运算,2.7 数组运算和矩阵运算,两种不同求平方根的比较 clear;B=4,9;16,25 B_A=sqrt(B) B_M=sqrtm(B) B = 4 9 16 25 B_A = 2 3 4 5 B_M = 0.9421 + 0.9969i 1.5572 - 0.3393i 2.7683 - 0.6032i 4.5756 + 0.2053i,2.8 标准数组生成函数和数组操作函数,1.标准数组生成函数 diag产生对角形数组 eye产生单位数组 magic产生魔方数组 (以上三类数组不适用于高维,只适用于二维以下) ones产生全1
17、数组 rand产生均匀分布随机数组 randn 产生正态分布随机数组 zeros产生全0数组,2.8 标准数组生成函数和数组操作函数,标准数组产生的演示 ones(1,2) %产生长度为2的全1行数组 ans = 1 1 randn(state,0)%把正态随机数发生器置0 A=randn(2,3)%产生23的正态随机阵 A = -0.4326 0.1253 -1.1465 -1.6656 0.2877 1.1909 B=eye(3) %产生33的单位阵 B = 1 0 0 0 1 0 0 0 1,2.8 标准数组生成函数和数组操作函数,C=diag(A) %取A阵的对角元 C = -0.43
18、26 0.2877 D=diag(C) %内diag取A的对角元,外diag利用一维数组生成对角阵 D = -0.4326 0 0 0.2877,2.8 标准数组生成函数和数组操作函数,2.数组操作函数(P115表3.23) rot90把数组逆时针旋转90度 diag 提取对角元素,或生成对角阵 flipud上下交换 fliplr左右交换 repmat按指定的行数列数铺放模块数组 reshape改变行数列数,元素数不变 以上指令只适用于二维数组,2.8 标准数组生成函数和数组操作函数,reshape的使用演示 a=-4:4 A=reshape(a,3,3) %把一维数组a重排成33的二维数组
19、a = -4 -3 -2 -1 0 1 2 3 4 A = -4 -1 2 -3 0 3 -2 1 4,diag的使用演示 b=diag(A) %取A元素对角阵生成数组b B=diag(b) %根据b数组生成B对角矩阵 b = -4 0 4 B = -4 0 0 0 0 0 0 0 4,2.8 标准数组生成函数和数组操作函数,A = -4 -1 2 -3 0 3 -2 1 4,repmat使用演示 B1=repmat(B,2,2) B1 = -4 0 0 -4 0 0 0 0 0 0 0 0 0 0 4 0 0 4 -4 0 0 -4 0 0 0 0 0 0 0 0 0 0 4 0 0 4,2
20、.8 标准数组生成函数和数组操作函数,2.8 标准数组生成函数和数组操作函数,flipud和fliplr使用演示 flipud(A) %上下对称交换 ans = -2 1 4 -3 0 3 -4 -1 2 fliplr(A) %左右对称交换 ans = 2 -1 -4 3 0 -3 4 1 -2,A = -4 -1 2 -3 0 3 -2 1 4,2.9 数组构作技法综合,1.数组的扩展 赋值扩展法 A=reshape(1:9,3,3)%创建33数组A A = 1 4 7 2 5 8 3 6 9,2.9 数组构作技法综合,A(5,5)=111%扩展为55数组。扩展部分除(5,5)元素为111外
21、,其余均为0 A = 1 4 7 0 0 2 5 8 0 0 3 6 9 0 0 0 0 0 0 0 0 0 0 0 111,2.9 数组构作技法综合,A(:,6)=222 %标量对子数组赋值,扩展为56数组 A = 1 4 7 0 0 222 2 5 8 0 0 222 3 6 9 0 0 222 0 0 0 0 0 222 0 0 0 0 111 222,2.9 数组构作技法综合,多次寻访扩展法 AA=A(:,1:6,1:6)%相当于指令repmat(A,1,2) AA = 1 4 7 0 0 222 1 4 7 0 0 222 2 5 8 0 0 222 2 5 8 0 0 222 3
22、6 9 0 0 222 3 6 9 0 0 222 0 0 0 0 0 222 0 0 0 0 0 222 0 0 0 0 111 222 0 0 0 0 111 222 指令repmat 中,A为模块数组,1表示行方向上铺一块,2表示列 方向上铺两块。,A = 1 4 7 0 0 222 2 5 8 0 0 222 3 6 9 0 0 222 0 0 0 0 0 222 0 0 0 0 111 222,2.9 数组构作技法综合,合成扩展法 B=ones(2,6)%创建26全1数组 B = 1 1 1 1 1 1 1 1 1 1 1 1,2.9 数组构作技法综合,AB_r=A;B%行数扩展合成
23、 AB_r = 1 4 7 0 0 222 2 5 8 0 0 222 3 6 9 0 0 222 0 0 0 0 0 222 0 0 0 0 111 222 1 1 1 1 1 1 1 1 1 1 1 1,2.9 数组构作技法综合,AB_c=A,B(:,1:5)%列数扩展合成 AB_c = 1 4 7 0 0 222 1 1 2 5 8 0 0 222 1 1 3 6 9 0 0 222 1 1 0 0 0 0 0 222 1 1 0 0 0 0 111 222 1 1,2.9 数组构作技法综合,2.单下标寻访和reshape指令演示 clear %清除内存变量 A=reshape(1:16
24、,2,8)%变一维数组成28数组 A = 1 3 5 7 9 11 13 15 2 4 6 8 10 12 14 16,2.9 数组构作技法综合,reshape(A,4,4) %变28数组为44数组 ans = 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16,2.9 数组构作技法综合,s=1 3 6 8 9 11 14 16;%定义“单下标”数组 A(s)=0 %利用“单下标”数组对A的元素重新赋值 A = 0 0 5 7 0 0 13 15 2 4 0 0 10 12 0 0,2.9 数组构作技法综合,3.逻辑函数的运用演示 randn(state,1),R=r
25、andn(3,6) %创建正态随机阵 R = 0.8644 0.8735 -1.1027 0.1684 -0.5523 -0.6149 0.0942 -0.4380 0.3962 -1.9654 -0.8197 -0.2546 -0.8519 -0.4297 -0.9649 -0.7443 1.1091 -0.2698 L=abs(R)1.5 %不等式条件运算,结果给出逻辑数组 L = 0 0 0 1 0 0 1 1 1 1 0 1 0 1 0 0 0 1,R(L)=0%“逻辑1”对应的元素赋0值 R = 0.8644 0.8735 -1.1027 0 -0.5523 -0.6149 0 0
26、0 0 -0.8197 0 -0.8519 0 -0.9649 -0.7443 1.1091 0,2.9 数组构作技法综合,2.9 数组构作技法综合,s=(find(R=0) %利用find获得符合关系等式条件的元素“单下标”一维行数组 s = 2 5 6 8 10 11 17 18 R(s)=111 %利用“单下标”定位赋值 R = 0.8644 0.8735 -1.1027 111.0000 -0.5523 -0.6149 111.0000 111.0000 111.0000 111.0000 -0.8197 111.0000 -0.8519 111.0000 -0.9649 -0.744
27、3 1.1091 111.0000,2.9 数组构作技法综合,ii,jj=find(R0);%利用find获得符合关系等式条件的元素“双下标” disp(ii),disp(jj) 3 1 3 3 1 2 1 1 3 3 4 5 5 6 结果第一行表示元素行数,第二行表示元素列数。,2.10 高维数组,三维数组 行(Row),列(Column),页(Page) 行(一维),矩形面(二维) 长方体(三维) 高维数组,2.10 高维数组,1.高维数组的创建 常用的四种创建方法: 直接“全下标”赋值 由若干同样大小的低维数组组合 由函数ones,zeros,rand,randn创建 由repmat,r
28、eshape等函数构造,2.10 高维数组,“全下标”赋值法 A(2,2,2)=1 %单元素赋值创建222数组 B(2,5,:)=1:3 %子数组赋值创建253数组,2.10 高维数组,由函数ones,zeros,rand,randn创建rand(state,1111),rand(2,4,3) %产生均匀分布随机数组,2.10 高维数组,reshape(1:12,2,2,3) reshape的第一个输入量是待重组的数组,后面的输入量是要生成数组的各维大小 生成数组总元素数必须与待重组数组总元素数要相等 元素放置顺序遵循单下标规则,2.10 高维数组,2.高维数组的标识 数组的维数(dimens
29、ion) 行(列)数组/向量,维数为1 矩阵的维数为2 指令ndims(A)可直接给出数组A的维数,2.10 高维数组,数组的大小(Size) 指令size(A)给出A各维的大小:行数、列数 指令length(A)给出所有维中的最大长度 clear;A=reshape(1:24,2,3,4); dim_A=ndims(A)%测量A的维数 size_A=size(A)%测量A的大小 L_A=length(A)%求A的长度,3,2 3 4,4,2.11 “非数”和“空”数组,1.非数NaN IEEE规定0/0,0都会产生非数 NaN的性质: 传递性, NaN参与运算所得结果也是NaN 没有“大小”
30、概念,不能比较两个非数的大小,2.11 “非数”和“空”数组,非数的产生 a=0/0,b=0*log(0),c=inf-inf 非数的传递性 0*a,sin(a) 非数的属性判断 class(a) %数据类型归属 isnan(a) %该指令唯一能正确判断非数的指令,2.11 “非数”和“空”数组,非数元素的寻访 rand(state,0) R=rand(2,5);R(1,5)=NaN;R(2,3)=NaN %产生一个均匀分布随机数组,其中元素(1,5)和元素(2,3)为非数元素 R= 0.9501 0.6068 0.8913 0.4565 NaN 0.2311 0.4860 NaN 0.018
31、5 0.4447 LR=isnan(R) %对数组元素是否非数进行判断 %找出非数元素的位置标识 LR = 0 0 0 0 1 0 0 1 0 0,2.11 “非数”和“空”数组,si=find(LR)%非数的“单下标” si = 6 9 ri,ci=ind2sub(size(R),si) %转换成“全下标”标识 rj,cj=find(LR) %直接确定全下标 disp(非数在二维数组R中的位置) disp(单下标时的第,int2str(si(1),和第, int2str(si(2),个元素) %输出“全下标”标识,ri = 2 1 ci = 3 5 rj = 2 1 cj = 3 5 非数在
32、二维数组R中的位置 单下标时的第6和第9个元素,2.11 “非数”和“空”数组,2.11 “非数”和“空”数组,2.“空”数组 是MATLAB为操作和表述需要专门设计的 某维或若干维长度为0的数组,2.11 “非数”和“空”数组,注意: “空”数组不同于全零数组 “空”数组不是“虚无”,存在于工作空间 判断是否“空”:isempty 不具备传递性,得“空”结果要谨慎解释,2.11 “非数”和“空”数组,创建“空”数组的几种方法 a=,b=ones(2,0),c=zeros(2,0) ,d=eye(2,0),f=rand(2,3,0,4) “空”数组的属性 class(a)%“空”的数据类别 ans= double isnumeric(a)%是数值数组类吗 ans= 1 isempty(a) %唯一可正确判断数组是否“空”的指令 ans= 1,2.11 “非数”和“空”数组,which a % a是什么 a is a variable ndims(a)%数组a的维数 ans= 2 size(a)%a数组的大小 ans= 0 0,2.11 “非数”和“空”数组,用于子数组的删除和大数组的大小收缩 A=reshape(-4:5,2,5)%创建一个数值数组A A = -4 -2 0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学困生辅导制度
- 物业企业停车费收取管理制度
- 教师未请假擅自离岗检讨书
- 人教版新课标六年级下册语文《汤姆索亚历险记》教学设计(表格)
- 智慧黄金店应急管理工作手册
- 牙科诊所员工职业暴露应急处理手册
- 建筑高空作业成本管控工作手册
- 销售工程师团队协作与分工手册
- 驾校网络布线建设规划手册
- 职业院校教材动态更新管理指南
- 2026年中小学教师编制考试教育综合知识全真模拟试题及答案
- 班组安全互保联保制度培训
- (2026年)肠内营养相关性腹泻的预防及护理课件
- 2026年村级集体经济强村公司发展与收益分配规范测试
- 2026年二级造价工程师《建设工程造价管理基础知识》考试真题(答案和解析附后)
- 2026年重庆八中中考语文模拟试卷(3月份)
- 护理教学查房示范课件
- 茶园土壤管理(茶园耕作)课件
- JJG 703-2003光电测距仪行业标准
- (高清版)TDT 1071-2022 园地分等定级规程
- 苏教版八年级上册数学全册教学课件
评论
0/150
提交评论