
Matlab数组与绘图操作大全.ppt
46页第11周Matlab一、二维数组二、二维数组与绘图一、二维数组 二维数组是由实数或复数排列成矩形而构成的,从数据结构上看,二维数组和矩阵没有什么区别当二维数组带有线形变换含义时,该二维数组就是矩阵(matrix)1、二维数组的输入方法(1)在键盘上输入下列内容A = [1,2,3; 4,5,6; 7,8,9] (2)按【Enter】键,指令被执行3)在指令执行后,MATLAB指令窗中将显示以下结果:A = 1 2 3 4 5 6 7 8 9 说明:直接输入矩阵时,每行元素用每行元素用空格或逗号分隔空格或逗号分隔,矩阵行用分号分隔矩阵行用分号分隔,整个矩阵放在方括号里整个矩阵放在方括号里,标点符号一定要在英文状态下输入2、由一维数组创建二维数组A = [1,3,5]B = [2,4,6]C = [3,5,7]D = [A;B]E = [A;B;C]F = [A’,B’]G = [A’,B’,C’]3、由函数创建二维数组zeros(m,n)生成一个 m 行 n 列的零矩阵,m=n 时可简写为 zeros(n)ones(m,n)生成一个 m 行 n 列的元素全为 1 的矩阵, m=n 时可写为 ones(n)eye(m,n)生成一个主对角线全为 1 的 m 行 n 列矩阵, m=n 时可简写为 eye(n),即为 n 维单位矩阵magic(n)生成魔方数组,各行、列之和 = (1+2+……+n2 )/ndiag(v,k) v是向量,diag(v) 产生以 v 为第k条对角线的矩阵,默认k=0rand(m,n)产生 0~1 间均匀分布的随机矩阵 m=n 时简写为 rand(n)randn(m,n)产生均值为0,方差为1的标准正态分布随机矩阵m=n 时简写为 randn(n)diag(v,k)练习:在matlab中生成二维数组A = 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1B = 1 0 0 0 0 2 0 0 0 0 3 0 0 0 0 4 -4 0 0 0 0 -3 0 0 0 0 -2 0 0 0 0 -14、二维数组操作函数cat(dim, A, B)把“大小”相同的若干数组,沿“指定维”方向,串接成高维数组 。
行(dim=1) 列(dim=2)diag(A,k)A 是矩阵,则 diag(A,k) 返回A的第k条对角线向量,默认k=0flipud(A)以数组“水平中线”为对称轴,交换上下对称位置上的数组元素fliplr(A)以数组“垂直中线”为对称轴,交换左右对称位置上的数组元素kron(A,B)按Kronecker乘法规则(直积)产生“积”数组二维数组操作函数repmat(A,m,n)按指定的“行数、列数”铺放模块数组,以形成更大的数组rot90(A,k)逆时针旋转 k×90 度reshape(A,m,n)在总元素数不便的前提下,改变数组的“行数、列数”tril(A)提取一个矩阵的下三角部分triu(A)提取一个矩阵的上三角部分5、二维数组的转置运算•A.’:转置•A’:共轭转置6、两个维数相同的二维数组之间的数组运算数组运算•A + B:加,对应位置的数组元素相加•A - B:减,对应位置的数组元素相减•A.*B:点乘,对应位置的数组元素相乘•A./B:右点除,对应位置的数组元素相除•A.\B:左点除•A.^B:点幂,对应位置的数组元素做幂运算7、二维数组的与标量标量 的运算•A + c :A的每个元素加c•A - c: A的每个元素减c•A.*c:点乘, A的每个元素乘c•A./c:右点除, A的每个元素除c•A.\c:左点除,c除A的每个元素•A.^c:点幂, A的每个元素做幂运算•c.^A:点幂,c做幂运算8、函数作用在二维数组上的运算规则9、引用二维数组的元素1、 A(r,c):“全下标”标识:即指出是“第几行,第几列”的元素2、A(ind):“单下标”标识: Linear Index只用一个下标来指明元素在数组中的位置:把二维数组的所有列,按先左后右的次序,首尾相接排成“一维长列”,然后,自上往下对元素位置进行标号。
3、“单下标”与“全下标”的转化:全下标→单下标:ind = sub2ind(siz,r,c) 单下标→全下标:[r,c] = ind2sub(siz,ind)二维数组的单个元素单个元素 的引用和赋值•X=magic(6)•单个元素寻访X(2,3)X(5,5)X(16)•单个元素的赋值X (2,3) = 0 X (5,5) = 7X (16) = 8二维数组的子数组子数组 的引用和赋值A(r,:)由A的“r行”和“全部列”上的元素组成A(:,c)由A的“全部行”和“c列”上的元素组成A(r,c)由A的“r行”和“c列”上的元素组成A(r,c) = B对子数组A(r,c)进行赋值:B的“行、列”必须与A(r,c)的“行、列”相同(1)使用“双下标”方式A(:)由A的各列按自左到右的次序,首尾相接而生成的“一维长列”数组A(s)引用A中由一维数组s指定的元素s若是行(或列),则A(s)就是长度相同的行(或列)A(:) = D(:)全元素赋值方式结果:保持A的“行宽、列长”不变条件:A、D两个数组的总元素相等,但“行宽、列长”不一定相同A(s) = B对A的部分元素重新赋值结果:保持A的“行宽、列长”不变。
条件:s单下标数组的长度必须与“一维数组”B的长度相等,但是s、B不一定同是“行数组”或“列数组”(2)使用“单下标”方式A(L)“逻辑数组”寻访,生成“一维”列数组:由与A同样大小的“逻辑数组”L中的“1元素”选出A的对应元素;按“单下标”次序排成长列组成(3)使用“逻辑数组”方式10、与二维数组相关的函数cmax = max(A)rmax = max(A,[],2)[cmax,index] = max(A)[rmax,index] = max(A,[],2)max(A,B)返回一个二维数组,元素为A,B相同位置上的较大值min(A),min(A,[],2)[c,d]= min(A),[c,d]= min(A,[],2),min(A,B)返回cmax为一个行数组,元素为A中每个列的最大值返回rmax为一个列数组,元素为A中每个行的最大值返回A中每个列的最大值及其位置,cmax,index为行数组返回A中每个列的最大值及其位置,rmax,index为列数组mean(A)mean(A,2)返回A中每个列向量的平均值返回A中每个行向量的平均值median(A)Median(A,2)返回A中每个列向量的中值返回A中每个行向量的中值std(A)std(A,2)返回A中每个列向量的标准差返回A中每个行向量的标准差sum(A)sum(A,2)计算A中每个列向量的元素的和计算A中每个行向量的元素的和cumsum(A)cumsum(A,2)A中每个列向量的累加和,维数与A相同A中每个行向量的累加和,维数与A相同prod(A)prod(A,2)计算A中每个列向量的元素的积计算A中每个行向量的元素的积cumprod(A)cumprod(A,2)A中每个列向量的累乘积,维数与A相同A中每个行向量的累乘积,维数与A相同sort(A)对A中列向量进行升序排序sort(A,’descend’)对A中列向量进行降序排序sort(A,2)对A中行向量进行升序排序sort(A,2,’descend’)对A中行向量进行降序排序sz=size(A)当只有一个输出参数时,size函数返回的是一个行向量,该行向量的第一个元素是数组的行数,第二个元素是数组的列数。
[r,c]=size(A)当有两输出参数时,size函数将数组的行数返回到第一个输出变量,将数组的列数返回到第二个输出变量r=size(A,1)返回数组 A 的行数c=size(A,2)返回数组 A 的列数length(A)返回数组的长度(行数或列数的较大值)numel(A)返回数组元素的个数练习二、二维数组与绘图plot(x,y)((1)若)若x, y 都是都是二维数组二维数组,,将将 x 的列和的列和 y 中相应的列相组合,绘制多条平中相应的列相组合,绘制多条平面曲线此时面曲线此时 x, y 必须具有必须具有相同的大小相同的大小例:利用二维数组在同一坐标轴中同时绘制下列函数的图形:1、二维数组在2d绘图中的应用plot用二维数组绘图的细节你想要是下面的哪一种图形?怎样绘制出这两种图形?补充:plot绘图的细节例题:用plot函数动态演示利萨如图形的形成t = ……plot(x([1,2]),y([1,2]))hold onaxis([-1.1,1.1,-1.1,1.1])for k = 2:length(t)-1plot(x([k,k+1]),y([k,k+1]))pause(0.1)end plot(x,y)((2)若)若x 是是一维数组一维数组, y 是是二维数组二维数组当当 x 的长度与的长度与 y 的行数相等,则将的行数相等,则将 x 与与 y 中的各列相对应,绘制多条平面曲线;中的各列相对应,绘制多条平面曲线;否则,若否则,若 x 的长度与的长度与 y 的列数相等,则将的列数相等,则将 x 与与 y 中的各行相对应,绘制多条平面曲线。
中的各行相对应,绘制多条平面曲线线性代数中:列 × 行 = 矩阵 x = linspace(0,2*pi,50) y = cos(x)’*(1:9)plot(x,y)例:利用plot函数的上述功能在同一坐标轴中同时绘制下列函数的图形:2、二维数组在3d绘图中的应用u 网格生成函数:meshgridx, y 为给定的向量为给定的向量X, Y 是网格划分后得到的网格矩阵是网格划分后得到的网格矩阵u 绘制由函数 z=z(x,y) 确定的曲面时,首先需产生一个网格矩阵,然后计算函数在各网格点上的值若 x = y, 可简写为 [X,Y]= meshgrid(x)[X,Y]= meshgrid(x,y)例:“墨西哥帽子”((1)三维网格图)三维网格图: mesh, meshc, meshzmesh(X,Y,Z,C)绘制由矩阵绘制由矩阵 X,Y,Z 所确定的曲面所确定的曲面网格图网格图,,矩阵矩阵 C 用于用于确定网格颜色,省略时确定网格颜色,省略时 C=Zmeshc(X,Y,Z,C)调用方式与调用方式与 mesh 相同,在相同,在 mesh 基础上增加等高线基础上增加等高线meshz(X,Y,Z,C)调用方式与调用方式与 mesh 相同,在相同,在 mesh 基础上屏蔽边界面基础上屏蔽边界面meshmeshcmeshz((2)三维表面图)三维表面图: surf, surfcsurf(X,Y,Z,C) 绘制由矩阵绘制由矩阵 X,Y,Z 所确定的曲面图,所确定的曲面图,参数含义同参数含义同 meshsurfc(X,Y,Z,C)调用方式与调用方式与 surf 相同,在相同,在 surf 基础上增加等高线基础上增加等高线surfsurfc若不想在三维表面图中显示网格线,可将属性“edgecolor”设为“none”surf(X,Y,Z,’edgecolor’,’none’)surfsurfc(3)mesh和surf绘图的细节A、绘制四边形平面练习:绘制一个立方体表面(共六个面)B、绘制三角形平面C、绘制五边形平面D、绘制圆形平面E、绘制圆(棱)柱、台、锥面F、绘制球面。












