第二章数值数组及其运算
第二章 数值数组及其运算
本讲提纲 UNIVE ●数组操作函数 ●数组构技法综合 ●高维数组 “非数”和“空”数组 ●关系操作和逻辑操作 中国民航大学电子信息工程学院
中 国 民 航 大 学 电 子 信 息 工 程 学 院 本讲提纲 ⚫数组操作函数 ⚫数组构技法综合 ⚫高维数组 ⚫“非数”和“空”数组 ⚫关系操作和逻辑操作
28数组操作函数 UNIVE ●diag提取数组的对角线元素 V=diag(a 设A为m×n数组,diag(A)函数用于提取数组A主对角线元素,产生 个具有min(m,n)个元素的列向量。 V=diag(a, k) 其功能是提取第k条对角线的元素。 例: a=1:9 b=reshape(9, 3, 3), c≡diag(b) d=diag(c), e=diag(b, 2), 中国民航大学电子信息工程学院
中 国 民 航 大 学 电 子 信 息 工 程 学 院 2.8 数组操作函数 ⚫ diag 提取数组的对角线元素 V=diag(A) 设A为m×n数组,diag(A)函数用于提取数组A主对角线元素,产生 一 个具有min(m,n)个元素的列向量。 V=diag(A,k) 其功能是提取第k条对角线的元素。 例: a=1:9; b=reshape(9,3,3), c=diag(b), d=diag(c), e=diag(b,2)
28数组操作函数 UNIVE ●有关数组维数的指令 > dims(A)测量数组A的维数 >size(A)测量数组A的大小 > Length(4测量数组A的长度=max(size(A) 例a=1:10 b=reshape(2, 5) c=ndis(b); e=size(b) length (b); 中国民航大学电子信息工程学院
中 国 民 航 大 学 电 子 信 息 工 程 学 院 2.8 数组操作函数 ⚫ 有关数组维数的指令 ➢ ndims(A) 测量数组A的维数 ➢ size(A) 测量数组A的大小 ➢ Length(A) 测量数组A的长度=max(size(A)) 例 a=1:10 b=reshape(2,5) c=ndims(b); e=size(b); f=length(b);
28数组操作函数 UNIVER 数组置换指令 > fliud数组元素上下对称交换 fliplr数组元素左右对称交换 ro90数组90度旋转 r090(4)数组逆时针旋转90度 ro0(A,k)数组按k*90度旋转,k为整数 flipdim数组按维对称交换 flipdim(A, dim) dim=1按行对称交换 dim=2按列对称交换 B a=1: 9, b=reshape(a, 3, 3) c=fliud(b),efliplr(b), d=rot9o(b), fflipdim(b, 2) 中国民航大学电子信息工程学院
中 国 民 航 大 学 电 子 信 息 工 程 学 院 2.8 数组操作函数 ⚫ 数组置换指令 ➢ flipud 数组元素上下对称交换 ➢ fliplr 数组元素左右对称交换 ➢ rot90 数组90度旋转 rot90(A) 数组逆时针旋转90度 rot90(A,k) 数组按k*90度旋转,k为整数 ➢ flipdim 数组按维对称交换 flipdim (A, dim) dim=1 按行对称交换 dim=2 按列对称交换 例 a=1:9, b=reshape(a,3,3) c=flipud(b),e=fliplr(b),d=rot90(b),f=flipdim(b,2)
28数组操作函数 UNIVE repmat把数组按指定的“行数、列数”铺放成大数组。 repmat(A, M,N) A是要复制的数组 把数组A复制成M行N列 例 A=0nes(2,2) B=repmat(A, 2, 3) B repmat(A,M,N, P.D 中国民航大学电子信息工程学院
中 国 民 航 大 学 电 子 信 息 工 程 学 院 2.8 数组操作函数 ⚫ repmat 把数组按指定的“行数、列数”铺放成大数组。 repmat(A,M,N) A是要复制的数组 把数组A复制成M行N列 例 A=ones(2,2) B=repmat(A,2,3) B= 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 repmat(A,[M,N,P…])
28数组操作函数 UNIVER O reshape数组sie变化指令 reshape(a, m, n) 设A为pq阶数组 把数组A重新排列成m*n阶数组并满足m*n=pq 也可扩展为高维数组的情况 实现过程: 先把数组A排成列矢量,然后再重新排成mn阶矢量 例 a=randn (3, 4); b=reshape(a, 2, 6); Kron 满足 kronecker积规则 kron(A, B) 中国民航大学电子信息工程学院
中 国 民 航 大 学 电 子 信 息 工 程 学 院 2.8 数组操作函数 ⚫ reshape 数组size变化指令 reshape (A, m, n) 设A为p*q阶数组 把数组A重新排列成m*n阶数组,并满足m*n=p*q 也可扩展为高维数组的情况 实现过程: 先把数组A排成列矢量,然后再重新排成m*n阶矢量 例 a=randn(3,4); b=reshape(a,2,6); ⚫ kron 满足kronecker积规则 kron(A,B)
29数组构技法综合 UNIVER 例I数组的扩展 A=reshape(1: 9, 3, 3) A(5,5=111%扩展为5*5数组 A(:,6)=222%扩展为5*6数组,并把第6列所有的元素赋值为222 AA=A(, 1: 6, 1: 6)%repmat(A, 1, 2 B=ones(2, 6) ABr=A;B%按行扩展 ABc=A,B(:,1:5)%按列扩展 练习: A=(reshape(1: 9, 3, 3) B=A(211,3,2| C=reshape(A(end-3: end), 2, 2) D=B, CI E=I B; C 中国民航大学电子信息工程学院
中 国 民 航 大 学 电 子 信 息 工 程 学 院 2.9 数组构技法综合 ⚫ 例1 数组的扩展 A=reshape(1:9,3,3) A(5,5)=111 %扩展为5*5数组 A(:,6)=222 %扩展为5*6数组,并把第6列所有的元素赋值为222 AA=A(:,[1:6,1:6]) %repmat(A,1,2) B=ones(2,6) AB_r=[A;B] %按行扩展 AB_c=[A,B(:,1:5)’ ] %按列扩展 练习: A=(reshape(1:9,3,3))’ B=A([2 1],[3,2]) C=reshape(A(end-3:end),2,2) D=[B,C] E=[ B;C’]
29数组构技法综合 UNIVER O例2 A= reshape(1:16,2,8); B=reshape(A, 4, 4) s=13689 A(S)=0 例3 randn( state, I, R=randn (3, 6) L=abs(r)1.5 R(L)=0%逻辑1对应的元素赋0 s=fnd(R=0)%利用fnd获得符合关系等式条件的元素“单下标” R(S=lll j-fnd(R=11;%利用fnd获得符合关系等式条件的元素“双下标” disp(i j), disp(li, jD) 中国民航大学电子信息工程学院
中 国 民 航 大 学 电 子 信 息 工 程 学 院 2.9 数组构技法综合 ⚫ 例2 A=reshape(1:16,2,8); B=reshape(A,4,4) s=[1 3 6 8 9] A(s)=0 ⚫ 例3 randn(‘state’,1),R=randn(3,6) L=abs(R)1.5 R(L)=0 %逻辑1对应的元素赋0 s=find(R==0)’ %利用find获得符合关系等式条件的元素“单下标” R(s)=111 [i,j]=find(R==111); %利用find获得符合关系等式条件的元素“双下标” disp(‘ i j’),disp([ i, j])
210高维数组 UNIVER 高维数组的Maab表示 例A为2*2*3的三维数组,那么A可表示为 A(:;,1),A(∷;,2),A(∷;3) ●高维数组的创建 “全下标”赋值方式 例A(22,2)=1 %单元素赋值创建(2*2*2)数组,其中A的第二页第二行第二列 元素为1,其他元素均为0 B(25,;)=1:3 %子数组赋值创建(2*53)数组 第一页的第二行第五列元素为1 第二页的第二行第五列元素为2 第三页的第二行第五列元素为3 中国民航大学电子信息工程学院
中 国 民 航 大 学 电 子 信 息 工 程 学 院 2.10 高维数组 ⚫ 高维数组的Matlab表示 例 A为2*2*3的三维数组,那么A可表示为 A(:,:,1) ,A(:,:,2),A(:,:,3) ⚫ 高维数组的创建 ➢ “全下标”赋值方式 例 A(2,2,2)=1 %单元素赋值创建(2*2*2)数组,其中A的第二页第二行第二列 元素为1,其他元素均为0 B(2,5,:)=1:3 %子数组赋值创建(2*5*3)数组 第一页的第二行第五列元素为1 第二页的第二行第五列元素为2 第三页的第二行第五列元素为3