MATLAB_-_05_-_二维数组及其应用_修改_

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

diag(A,k) flipud(A) fliplr(A) kron(A,B)
A 是矩阵,则 diag(A,k) 返回A的第k 条对角线向量,默认k=0 以数组“水平中线”为对称轴,交换 上下对称位置上的数组元素 以数组“垂直中线”为对称轴,交换 左右对称位置上的数组元素
按Kronecker乘法规则(直积)产生 “积”数组
三维网格图: mesh, meshc, meshz
mesh(X,Y,Z,C) 绘制由矩阵 X,Y,Z 所确定的曲面网格图,矩阵 C 用于
确定网格颜色,省略时 C=Z
meshc(X,Y,Z,C) 调用方式与 mesh 相同,在 mesh 基础上增加等高线 meshz(X,Y,Z,C) 调用方式与 mesh 相同,在 mesh 基础上屏蔽边界面
二维数组操作函数
repmat(A,m,n) rot90(A,k)
按指定的“行数、列数”铺放模块 数组,以形成更大的数组 逆时针旋转 k×90 度
在总元素数不便的前提下,改变数 reshape(A,m,n) 组的“行数、列数”
tril(A)
提取一个矩阵的下三角部分
triu(A)
提取一个矩阵的上三角部分
sort(A)
对A中列向量进行升序排序
sort(A,’descend’) 对A中列向量进行降序排序 sort(A,2)
对A中行向量进行升序排序
sort(A,2,’descend’) 对A中行向量进行降序排序
当只有一个输出参数时,size函数返 sz=size(A) 回的是一个行向量,该行向量的第一 个元素是数组的行数,第二个元素是 数组的列数。 当有两输出参数时,size函数将数组 [r,c]=size(A) 的行数返回到第一个输出变量,将数 组的列数返回到第二个输出变量。
对子数组A(r,c)进行赋值:B的“行、列” A(r,c) = B 必须与A(r,c)的“行、列”相同
二维数组的子数组 的寻访和赋值
使用“单下标”方式
A(:) A(s)
由A的各列按自左到右的次序,首尾相接而生成 的“一维长列”数组 引用A中由一维数组s指定的元素。s若是行(或 列),则A(s)就是长度相同的行(或列) 全元素赋值方式。结果:保持A的“行宽、列长” 不变。条件:A、D两个数组的总元素相等,但 “行宽、列长”不一定相同 对A的部分元素重新赋值。结果:保持A的“行 宽、列长”不变。条件:s单下标数组的长度必 须与“一维数组”B的长度相等,但是s、B不一 定同是“行数组”或“列数组”
二维数组的转置运算
• A.’:转置 • A’:共轭转置
两个维数相同的 二维数组之间的数组运算
• • • • • • A + B:加,对应位置的数组元素相加 A - B:减,对应位置的数组元素相减 A.*B:点乘,对应位置的数组元素相乘 A./B:右点除,对应位置的数组元素相除 A.\B:左点除 A.^B:点幂,对应位置的数组元素做幂运算
二维数组的与标量 的运算
• • • • • • • 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做幂运算
函数作用在二维数组上的 运算规则
y k cos x , x 0,2 , k 1,2,,9
10 8 6 4 2 0 -2 -4 -6 -8 -10
0
1
2
3
4
5
6Fra Baidu bibliotek
7
x = linspace(0,2*pi,50)
y = cos(x)’*(1:9)
plot(x,y)
线性代数中: 列 × 行 = 矩阵
二维数组在3d绘图中的应用
r=size(A,1)
返回数组 A 的行数
c=size(A,2) 返回数组 A 的列数 length(A)
返回数组的长度(行数或列数的较大值)
numel(A)
返回数组元素的个数
练习
函数f x 的定义如下: x2 x 6 2 f ( x) x 5 x 6 x2 x 1 , , , x 0且x 4 0 x 10 , x 2且x 3 其它
A(r,c)
2、“单下标”标识: Linear Index 只用一个下标来指明元素在数组中的位置: 把二维数组的所有列,按先左后右的次序, 首尾相接排成“一维长列”,然后,自上往下 对元素位置进行标号。
A(ind)
“单下标”与“全下标”的转化
1、全下标→单下标 ind = sub2ind(siz,r,c) 2、单下标→全下标 [r,c] = ind2sub(siz,ind)
0 0 0 1 1 1 0 0 0 1 1 1
B= 1 0 0 0 -4 0 0 0
0 2 0 0 0 -3 0 0 0 0 3 0 0 0 -2 0 0 0 0 4 0 0 0 -1
已知一维数组x和y: x [ x1 , x2 , x3 , x4 , x5 ] [1, 0, 1, 2,3], y [ y1 , y2 , y3 , y4 , y5 ] [3, 2,1, 1, 2] 在matlab生成下面的二维数组: x1 x2 x3 x4 x5 1 x 2 x 3 x 4 x 5 x
二维数组的单个元素 的引用和赋值
• X=magic(6) • 单个元素寻访 X(2,3) X(5,5) X(16) • 单个元素的赋值 X (2,3) = 0 X (5,5) = 7 X (16) = 8
二维数组的子数组 的寻访和赋值
使用“双下标”方式
A(r,:)
A(:,c) A(r,c)
由A的“r行”和“全部列”上的元素组 成 由A的“全部行”和“c列”上的元素组 成 由A的“r行”和“c列”上的元素组成
返回一个二维数组,元素为A,B相同位置上的较大值 返回A中每个列的最大值及其位置,cmax,index为行数组 返回A中每个列的最大值及其位置,rmax,index为列数组
min(A),min(A,[],2) [c,d]= min(A),[c,d]= min(A,[],2),min(A,B)
mean(A) mean(A,2)
返回A中每个列向量的平均值 返回A中每个行向量的平均值
median(A) 返回A中每个列向量的中值 Median(A,2) 返回A中每个行向量的中值
std(A) std(A,2)
返回A中每个列向量的标准差 返回A中每个行向量的标准差
sum(A) sum(A,2)
计算A中每个列向量的元素的和 计算A中每个行向量的元素的和
例题:用plot函数动 态演示利萨如图形 的形成。
x sin t
t=
…… plot(x([1,2]),y([1,2])) hold on axis([-1.1,1.1,-1.1,1.1])
y sin 2t 6
for k = 2:length(t)-1
plot(x([k,k+1]),y([k,k+1])) pause(0.1) end
编写一个Matlab函数实现该函数,且要求函数能够 处理输入参数为一维、二维数组的情况,即要求: f xij f xij mn mn


二维数组在2d绘图中的应用

plot(x,y)
若x, y 都是二维数组,则将 x 的列和 y 中 相应的列相组合,绘制多条平面曲线。此时 x, y 必须具有相同的大小。

plot(x,y)
若x 是一维数组, y 是二维数组 当 x 的长度与 y 的行数相等,则将 x 与 y 中的各列相对应,绘制多条平面曲线; 否则,若 x 的长度与 y 的列数相等,则将 x 与 y 中的各行相对应,绘制多条平面曲线。 利用plot函数的上述功能在同一坐标轴中同时 绘制下列函数的图形:
二维数组及其应用
二维数组和矩阵
二维数组是由实数或复数排列成矩形而构成的, 从数据结构上看,矩阵和二维数组没有什么区别。 当二维数组带有线形变换含义时,该二维数组就是 矩阵(matrix)。
二维数组的输入方法
1 2 3 4 5 6 的输入步骤。 例:简单矩阵A 7 8 9 (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 空格或逗号分隔,矩阵行用分号分隔, 整个矩阵放在方括号里,标点符号一 定要在英文状态下输入。
A中每个列向量的累加和,维数与A相同 A中每个行向量的累加和,维数与A相同
cumsum(A) cumsum(A,2)
prod(A) prod(A,2) cumprod(A) cumprod(A,2)
计算A中每个列向量的元素的积 计算A中每个行向量的元素的积
A中每个列向量的累乘积,维数与A相同 A中每个行向量的累乘积,维数与A相同
与二维数组相关的函数
cmax = max(A) rmax = max(A,[],2)
返回cmax为一个行数组,元素为A中每个列的最大值 返回rmax为一个列数组,元素为A中每个行的最大值
[cmax,index] = max(A)
[rmax,index] = max(A,[],2) max(A,B)
由一维数组创建二维数组
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’]
由函数创建二维数组
zeros(m,n)
ones(m,n) eye(m,n)
生成一个 m 行 n 列的零矩阵,m=n 时可简写为 zeros(n)
利用二维数组在同一坐标轴中同时绘制下列函 数的图形:
y k cos x , x 0,2 , k 1,2,3
plot用二维数组绘图的细节
你想要是下面的哪一种图形?怎样绘制出这两种图形?
3
3
2
2
1
1
0
0
-1
-1
-2
-2
-3
0
1
2
3
4
5
6
7
-3
0
1
2
3
4
5
6
7
补充:plot绘图的细节
x11 x 21 X ... xm1 x12 x22 ... xm 2 ... x1n ... x2 n xij ... ... ... xmn
mn

mn
f X f xij
如何引用二维数组的元素?
1、“全下标”标识: 即指出是“第几行,第几列”的元素
2 1 2 2 2 3 2 4 2 5
x1 y1 x2 y2 x3 y3 x4 y4 x5 y5
y1 /1 x1 y5 y2 / 2 x2 y4 y3 / 3 x3 y3 y4 / 4 x4 y2 y5 / 5 x5 y1
二维数组操作函数
把“大小”相同的若干数组,沿“指 cat(dim, A, B) 定维”方向,串接成高维数组 。行 (dim=1) 列(dim=2)
A(:) = D(:)
A(s) = B
二维数组的子数组 的寻访和赋值
使用“逻辑数组”方式
A(L)
“逻辑数组”寻访,生成“一维”列数组: 由与A同样大小的“逻辑数组”L中的“1元 素”选出A的对应元素;按“单下标”次序 排成长列组成
4 2 0 2 4 例:找出数组A 3 1 1 3 5 中所有绝对值大于3的元素。
生成一个 m 行 n 列的元素全为 1 的矩阵, m=n 时可写为 ones(n) 生成一个主对角线全为 1 的 m 行 n 列矩阵, m=n 时可简写为 eye(n),即为 n 维单位矩阵 生成魔方数组,各行、列之和 = (1+2+……+n2 )/n
magic(n) diag(v,k)
rand(m,n) randn(m,n)
v是向量,diag(v) 产生以 v 为第k条对角线的矩阵, 默认k=0
产生 0~1 间均匀分布的随机矩阵 m=n 时简写为 rand(n) 产生均值为0,方差为1的标准正态分布随机矩阵 m=n 时简写为 randn(n)
diag(v,k)
练习:在matlab中生成二维数组
A= 0 0 0 1 1 1
相关文档
最新文档