第三章 数值阵列及向量化运算1

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

3.2.3 两套算术运算规则的功能比较
见表3.2-2、3.2-4和表3.2-5(P124-125) 例3.2-2(P126-127)
3.2.4 向量化编程

“数组运算”、“向量或矩阵运算”模式 “流水线”加工,可大大提高效率。 例3. 2-3 (P128)
3.3 数值数组的创建和寻访

MATLAB总是把数组看作存储和运算的基 本单元。 应用MATLAB语言编程时,尤其要注意数 组和向量的维数问题。 标量数据被看作(1×1)的数组。对于向 量可看作1×M或M×1维数组。向量创建 时默认为行向量。
a11 a12 a1N a a a 22 2N 21 aij M N a a a MN M1 M 2
单序号编址
用单个序号唯一地确定元素在数组中的位置。 MATLAB的单序号产生规则: AM ×N 数组的第一列元素位置,自上而下依 次编序为1,2,…,M。 AM ×N 数组的第二列元素位置,自上而下依 次编序为1×M+1, 1×M+ 2,…, 1× M+M。 AM ×N数组的第N列元素位置,自上而下依次 编序为(N-1)×M+1, (N-1)×M+ 2,…, (N-1)×M+ M。
3.2.2 数组概念及数组运算规则
2. 数组运算规则
(1) 同维同规模数组之间的(加、减、乘、除、求幂 等)运算,体现为“数组对应元素间的运算” 。
设A和B的算术运算结果为数组C,则C数组的第 (i,j)元素一定是数组A和B相同位置元素进行该算 术运算的结果,即Cij=aij#bij 。
(2) 标量与数组之间的(加、减、乘、除、求幂)运 算,体现为“标量与数组每个元素之间的运算”。 设标量a和数组B进行算术运算的结果为与B大小 相同的数组C,其中Cij=a#Bij。

已知矩阵 A 24 , B43 ,采用两种不同的编程求这两个矩阵的乘积 C23 A 24 B43 。
C2=A*B
A=[1+1i,2+2i,3+2i;2i+4,5+2i,6+2i;7+2i,8+2i,9+2i] A= 1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 2.0000i 4.0000 + 2.0000i 5.0000 + 2.0000i 6.0000 + 2.0000i 7.0000 + 2.0000i 8.0000 + 2.0000i 9.0000 + 2.0000i >> B=A' B= 1.0000 - 1.0000i 4.0000 - 2.0000i 7.0000 - 2.0000i 2.0000 - 2.0000i 5.0000 - 2.0000i 8.0000 - 2.0000i 3.0000 - 2.0000i 6.0000 - 2.0000i 9.0000 - 2.0000i

“列”数组生成方法举例: x1=(1:6)',x2=linspace(0,pi,4)' y1=rand(5,1) z1=[2;pi/2;sqrt(3);3+5i]
3.3.2 二维数组的创建 (1) 小规模数组的直接输入法
二维数组的三要素: 整个输入数组必须用方括号[ ]括住;
数组元素必须用逗号“,”或空格分隔; 数组的行与行之间必须用分号“;” 或 者回车键[Enter]隔离。
单序号寻访
单序号寻访是指采用单个“一维行或列数 组”寻访元素的方法。 A(:): “单序号全元素”寻访。
它由A的各列 按自左到右的次序,首尾相接而生 成 的“一维长列”数组。
A(ind):“单序号”寻访。
ind 是一维数组,生成由ind指定位置元素的一维 数组,结果和ind的行列性质有关。若ind是“行数 组”(或“列数组” ),则A(ind ) 就是长度相同 的“行数组”(或“列数组” )。
符号#可代表加减乘除幂运算中的任何一种运算。
数组运算符由“常规算术运算符前加小黑点” 构成。 (3) 初等函数对数组的运算,体现为“初等函 数对数组的每个元素的运算”。 见表3.2-3 (P124)服从数组运算规则的 MATLAB初等函数及关系逻辑算符 重点掌握 sin,cos,tan,exp,sqrt,mod,abs,angle,real,ima g,conj
矩阵加减:A+B,A-B 标量与矩阵加减:b+A,b-A 标量与矩阵相乘:b*A 矩阵乘积:C=A*B 矩阵的共轭转置:B=A' 1 C A B 矩阵的右除:C=A/B ( ) 1 矩阵的左除:C=A\B ( C A B ) 方阵的求幂:C=A^m 方阵的求逆:inv(A)或A\eye(N) 例3.2-1
两种方法的区别
冒号法强调步长,有可能取不到终点值。 a=12.5:-3:5,则a =[12.5 9.5 6.5] 线性定点法特别强调数据的数量,两端点 必在数据范围内。 a=linspace(12.5,5,3),则a =[12.5 8.75 5]
2. 其他类型行(列)数组的创建 (1) 逐个元素输入法 例:x=[2 pi/2 -0.7e3 3+5i] (2) 运用MATLAB函数生成法 例:c=rand(1,5); c1=ones(size(c )); c2=ones(1,n); 例3.3-1(P132)


3.3.1 行(列)数组的创建
1. 递增/递减型行(列)数组的创建 (1) “冒号”生成法 使用冒号指定数值范围和相邻值的步长 x=a:inc:b 其中a是起始值,即数组的第一个元素,inc是采样点之 间的间隔,即步长。若(b-a)是inc的整数倍,则数 组的最后一个元素等于 b。步长inc默认为1,则x=a:b。 inc可以取正数或负数。inc取正时,a<b; inc取负时, a>b。 例如 x=1:2:9 则x=[1 3 5 7 9] x=0.4:2 则x=[0.4 1.4] x=12.5:-3: 5 则x=[12.5 9.5 6.5]
数组之间相加和相减:A.+B ,A.-B 标量和数组之间相加和相减:a.+B ,a.-B 标量和数组之间相乘: a.*B 数组乘: A.*B 数组的非共轭转置:A.’ 数组右除:A./B(等同于B.\A) 数组左 除:A.\B(等同于B./A) 标量除以数组: b./A (等同于A.\b) 数组底的标量指数求幂:A.^b 数组底的数组指数求幂:A.^B
据单下标换算出全下标。
IND = sub2ind(ArraySize, rowSub, colSub)
据全下标换算出单下标。 例: [R,C]=ind2sub([4,4],[3,5,7,9])
IND=sub2ind([4,4],[1,1,1,],[2,3,4])
2. 二维数组元素的寻访
全下标寻访法
第三章 数值阵列 及向量化运算

数值计算的优点:适应了现代主流 计算机只能表示、保存、运算和输出 有限精度数字的特点,计算速度快, 容量大,能处理各种复杂的函数关系。 • 数值计算的缺点:只能用有限长度 的数据,以有限的精度,表现有限时 间和范围内的函数关系。
例3.1-1 已知 f ( t ) e 符号解法:
3.2 矩阵、数组及向量化编程 3.2.1 矩阵概念及矩阵运算规则
AM N
a11 a12 a1N a a22 a2 N 21 aij M N a a a MN M1 M 2
矩阵的四种特殊形式:

2. 矩阵的运算规则(见表3.2-1(P121))
全下标寻访是指根据需寻访的所有元素的全下标, 构成一对“行序号数组” 和“列序号数组”;然后借助 这对“行序号数组” 和“列序号数组”,提取或设置相 应的元素值。即指出是“第几行,第几列”的元素。 全下标寻访数组元素的格式: A(r,c):由A的“r指定行”和“c指定列”上的元素 组成。 A(r, :):由A的“r指定行”上所有列元素组成,结果 是一个行向量。 A(:,c):由A的“c指定列”上的所有行元素构成,结 果是一个列向量。
注意: r是由“所寻元素行序号”构成的一维行或列 数组。 c是由“所寻元素列序号”构成的一维行或列 数组。且r和c的规模应该一致。 在全下标寻访格式中,英文冒号:,“所在 维度上全部元素的序号”。

例:A=[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ] 则 A(2,3)= 8, A(3,2)= 12 , A(3,5)= 15, A(1,5)= 5 A([2,3],[2,4])=[7,9;12,14] 例:A=[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ] 则 A(2,:)= [6 7 8 9 10] A(:,2) =[ 2 7 12] A(:,[1,3])=[ 1 3 6 8 11 13]
(2) 中规模数组的数组编辑器创建法
先在命令行上定义一个变量,然后在工作空 间workspace中右键点击该变量,进行编辑。
(3) 中规模的M文件创建法
打开M文件编辑器,在空白处输入所需数 组,然后保存。以后使用时直接在指令窗中 输入文件名,即可将数据加入到workspace中。
(4)利用MATLAB函数创建数组
plot(t,Sx,'.k','MarkerSize',12)
说明:
• 进行数值计算前,必须生成由一系自变量采 样点构成的数组,然后计算各采样点对应的 函数值、积分值。 • 执行数值计算的表达式都是在已知的数值点 上进行的。计算结果也是离散的。 •通过离散数据的图形曲线可以形象的体现数 据之间的函数关系。注意:图形展示的函数 性状仅在自变量的取值区间有意义。
例:矩阵A=[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ] 则 A(2)=6, A(5)=7, A(8)= 8, A(12)= 14 例:矩阵A=[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ] b=A([4:9]) 结果是b=[2 7 12 3 8 13] b=A([4:9]’)结果是b=[2 7 12 3 8 13]’ 注意:在单序号寻访格式中,英文冒号:代表 “被寻访数组全部元素的单序号”。
diag 产生对角数组 eye 产生单位数组 magic 产生魔方数组 rand 产生均匀分布随机数组 randn 产生正态分布随机数组 ones 全1数组 zeros 全0数组 例3.3-5(P135)
3.3.3 二维数组元素的编址和寻访
1.二维数组元素的编址 A
M N
Fra Baidu bibliotek
全下标编址 借助元素在数组中“行序号和列序号构成的 数对” (i,j),唯一地标识元素在二维数组 中的位置。 优点:最明了直接,最常用。 例如: A(2,1)就表示第2行第1列上的元素a21。
全下标编址与单序号编址的转换关系 以(M×N)的二维数组A为例,若“全下标” 元素位置是“第r行,第c列”,那么相应的 “单序号”为L=(c-1) ×M+r。

图3.3-3 二维数组的全下标编址与单序号编址对照

全下标编址与单序号编址的转换指令
[rowsub, colsub] = ind2sub(ArraySize,IND)
(2) 线性(或对数)定点法 x=linspace(a,b,n) %以a,b为左右端点,产生 线性等间隔的(1*n)行数组 x=logspace(a,b,n)%以a,b为左右端点,产生 对数等间隔的(1*n)行数组 其中 n是总采样点数,即一维数组的长度。
x=linspace(a,b,n)等价于x=a:(b-a)/(n-1):b
syms t x;
sin( t )
, s( x)
数值解法:

4
0
f ( t ) dt , 求s(x)
dt=0.05; t=0:dt:5; Sx=cumtrapz(t,Ft);%计算 %从0开始到每个采样点为止 %的区间内,Ft曲线下的面积
ft=exp(-abs(sin(t))); Ft=exp(-abs(sin(t))); sx=int(ft,t,0,4);
相关文档
最新文档