数值数组及其运算_第1页
数值数组及其运算_第2页
数值数组及其运算_第3页
数值数组及其运算_第4页
数值数组及其运算_第5页
免费预览已结束,剩余49页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,本章集中叙述了一维、二维、任意高维双精度数值数组的生成和操作。这是MATLAB最常用、最基本、最传统的数据类型,定义在此类“对象”上的“方法”就是最具魅力的数组运算。,2,2.1 引导,数组是指由一组实数或复数排成的长方阵列。它可以是一维的“行”或“列”,可以是二维的“矩形”,也可以是三维的“若干同维矩阵的堆叠”,甚至更高的任意维。 数组运算是指:无论在数组上实施什么运算(加减乘除或函数),总认定那种运算对被运算数组中的每个元素平等的操作。,3,数组和数组运算的目的在于: 使计算程序简单、易读,使程序指令更接近于教科书上的数学计算公式 提高程序的向量化程度,提高计算效率,节省计算机开销。,

2、4,2.2 一维数组的创建和寻访,2.2.1 一维数组的创建 (1)逐个元素输入法 x=2 pi/2 sqrt(3) 3+5i x = 2.0000 1.5708 1.7321 3.0000 + 5.0000i,5,(2) 冒号成长法 这是通过“步长”设定,生成一维“行”数组的方法。 x=a:inc:b a是数组的第一个元素;inc是采样点之间的间隔,即步长。若(b-a)是inc的整数倍,则所生成的最后一个元素等于b,否则小于b。,6,(3)定数线形采样法 该法在设定的“总点数”下,均匀采样生成一维“行”数组。 格式:x=linspace(a,b,n) 其中,a,b分别是生成数组的第一个和最后

3、一个元素。n是采样总点数。 x=linspace(10,20,11) x = 10 11 12 13 14 15 16 17 18 19 20,7,2.2.2 一维数组的子数组寻访和赋值 (1)子数组的寻访 x(index) 寻找什么样的子数组,取决于下标index,其取值范围是(1,数组长度)之间的正整数或正整数数组。 eg: x=rand(1,5) x = 0.9501 0.2311 0.6068 0.4860 0.8913 x(3) ans = 0.6068 x(1 2 5) ans = 0.9501 0.2311 0.8913,8,(2)子数组的赋值 eg: x(3)=0 x = 0.

4、9501 0.2311 0 0.4860 0.8913 x(1 4)=1 1 x = 1.0000 0.2311 0 1.0000 0.8913,9,2.3 二维数组的创建,2.3.1 直接输入法 规则: 整个输入数组必须用 括住 数组元素必须用逗号或空格分隔 在 内数组的行与行之间必须用分号分隔或按Enter键分割,10,数组元素可以是数字或任何matlab表达式 ,表达式不可包含未知的变量;可以是实数 ,也可以是复数,复数可用特殊函数i输入。 例:1. a=1 2 3;4 5 6 2. b=2 pi/2;sqrt(3) 3+5i 3. x=9; y=pi/6; %定义x,y变量 A=3 5

5、 sin(y) cos(y) x2 7 x/2 5 1 %产生数组A 说明:%为Matlab注释的开始标志,后面的文字不进行计算,11,2.3.2 利用M文件创建和保存数组 针对比较大而复杂的数组 步骤: (1)打开文件编辑调试器,并在空白填写框中输入数组; (2)保存文件,命名为*.m; (3)在MATLAB指令窗口中,运行*.m文件,数组自动保存在MATLAB内存中。,12,2.4 二维数组元素的标识,2.4.1 “全下标”标识 即指出 “第几行,第几列”的元素 eg: a=rand(2,3) a = 0.7621 0.0185 0.4447 0.4565 0.8214 0.6154 a(

6、2,3) ans = 0.6154,13,2.4.2 “单下标”标识 即用一个下标来指明元素在数组中的位置。 首先进行“一维编号”,把二维数组按先左后右的次序、首尾相接排成一维长列;然后,自上而下对元素位置进行编号。 MATLAB在实现两种标识方法间的转换命令有: sub2ind 全下标单下标 ind2sub 单下标全下标,14,2.4.3 “逻辑1”标识 eg: A=zeros(2,5) A = 0 0 0 0 0 0 0 0 0 0 A(:)=-4:5 A = -4 -2 0 2 4 -3 -1 1 3 5 L=abs(A)3 L = 1 0 0 0 1 0 0 0 0 1 islogic

7、al(L) %判断L是否是逻辑值数组 ans = 1 x=A(L) %把L中逻辑值为1对应的A元素取出 x = -4 4 5,15,2.5 二维数组的子数组寻访和赋值,A=zeros(2,4) 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; A(s) Sa=10 20 30 A(s)=Sa,ans = 2 3 5 Sa = 10 20 30 A = 1 20 30 7 10 4 6 8 A(:,2 3)=ones(2) A = 1 1 1 7 10 1 1 8,例:不同赋值方式示例。,同一维数组的子数组寻访和赋

8、值的方法,16,2.6 执行数组运算的常用函数,17,2.7 数组运算和矩阵运算,从外观形状和数据结构上看,二维数组和(数学中的)矩阵没有区别。但是,矩阵作为一种变换或映射算子的体现,矩阵运算有着明确的数学规则;数组运算是MATLAB软件所定义的规则,其目的是为了数据管理方便、操作简单、指令形式自然和执行计算的有效。虽然数组运算尚缺乏严谨的数学推理,数组运算本身仍在完善和成熟中。,18,19,1. 直接输入矩阵的创建 规则: 矩阵元素必须用 括住 矩阵元素必须用逗号或空格分隔 在 内矩阵的行与行之间必须用分号分隔或按Enter键分割,20,矩阵的修改, 直接修改 可用键找到所要修改的矩阵,用键

9、移动到要修改的矩阵元素上即可修改。 指令修改 可以用A(,)= 来修改。,21,例如 a=1 2 0;3 0 5;7 8 9 a =1 2 0 3 0 5 7 8 9 a(3,3)=0 a =1 2 0 3 0 5 7 8 0,22,2.用matlab函数创建和修改矩阵,Matlab提供了大量的函数来创建一些常用的特殊矩阵,例如对角阵、单位阵和零矩阵 例1:0-1分布的随机矩阵,利用rand函数产生任意行列的随机矩阵 a=rand(5,5),23,例2 利用diag产生对角阵 diag(M)M为矩阵或向量,对于矩阵,取对角元产生一个列向量;对于向量则产生一个对角阵, a=rand(5,5) a

10、 = 0.7027 0.7948 0.9797 0.1365 0.6614 0.5466 0.9568 0.2714 0.0118 0.2844 0.4449 0.5226 0.2523 0.8939 0.4692 0.6946 0.8801 0.8757 0.1991 0.0648 0.6213 0.1730 0.7373 0.2987 0.9883, D=diag(d) %向量产生矩阵 D = 0.7027 0 0 0 0 0 0.9568 0 0 0 0 0 0.2523 0 0 0 0 0 0.1991 0 0 0 0 0 0.9883, d=diag(a) %矩阵产生列向量 d =

11、0.7027 0.9568 0.2523 0.1991 0.9883,24,Matlab中用于产生特殊矩阵的函数,zeros(m,n) mn的零矩阵,全部元素都为0 ones(m,n) 全部元素都为1的mn的矩阵 rand(m,n) 随机矩阵 eye(m,n) 单位矩阵 magic(n) n维magic方阵 空阵 matlab允许输入空阵,当一项操作无结果时,返回空阵。,25,还有伴随矩阵、稀疏矩阵、范德蒙等矩阵的创建等等 注意:matlab严格区分大小写字母,因此a与A是两个不同的变量。 matlab函数名必须小写。,26,3 矩阵的基本数值运算,(1)矩阵加、减法运算 规则: 相加、减的两

12、矩阵必须有相同的行和列两矩阵对应元素相加减。 允许参与运算的两矩阵之一是标量。标量与矩阵的所有元素分别进行加减操作。,27,(2) 矩阵乘()运算 规则: A矩阵的列数必须等于B矩阵的行数 例a=1 2 3;4 5 6;7 8 0;b=1;2;3;c=a*b c =14 32 23 标量可与任何矩阵相乘 例 d=-1;0;2;f=pi*d f = -3.1416 0 6.2832,28,在matlab中矩阵除的运算有两种矩阵除运算,MATLAB用“/” 代表右除(常用除法)和“”左除运算。这两种运算的差别如下: 例如:2/5 表示0.4, 25 表示2.5; 对于矩阵, A/B 表示AB-1,

13、即A*inv(B); BA 表示B-1A,即inv(B)*A。 矩阵除法可以看作矩阵乘法的逆运算,(3) 矩阵除运算,29,例左除解方程组ax=b的解 :x=ab, a=rand(5); %产生(5*5)的均匀分布随机矩阵 b=ones(5,1); %产生全为1的5元列向量 x1=inv(a)*b x1 = -0.1734 0.5573 0.0309 0.7208 0.8147 x2=ab x2 = -0.1734 0.5573 0.0309 0.7208 0.8147,30,a p a 自乘p次幂,方阵,1的整数,(4) 矩阵乘方 an,ap,pa,对于p的其它值,计算将涉及特征值 和特征向

14、量,如果p是矩阵,a是标量 ap使用特征值和特征向量自乘到p次 幂;如a,p都是矩阵,ap则无意义。,31,a=1,2,3;4,5,6;7,8,9;a2 ans =30 36 42 66 81 96 102 126 150,当一个方阵有复数特征值或负实特征值时,非整数幂是复数阵。,32,a0.5 ans = 0.4498 + 0.7623i 0.5526 + 0.2068i 0.6555 -0.3487i 1.0185 + 0.0842i 1.2515 + 0.0228i 1.4844 - 0.0385i 1.5873 - 0.5940i 1.9503 - 0.1611i 2.3134 + 0

15、.2717i,33,inv 矩阵求逆 size 矩阵的大小(行列数) det 行列式的值 eig 矩阵的特征值 rank 矩阵的秩 矩阵转置 sqrt 矩阵开方 svd矩阵的奇异值分解,(5) 矩阵的其它运算,34,(6)矩阵的一些特殊操作,矩阵的变维 a=1:12;b=reshape(a,3,4) c=zeros(3,4);c(:)=a(:) 矩阵的变向 rot90:旋转; fliplr:上翻; flipud:下翻 矩阵的抽取 diag:抽取主对角线;tril: 抽取主下三角; triu:抽取主上三角,35,2.8 数组构作技法综合,赋值扩展法 A=reshape(1:9,3,3) A =

16、1 4 7 2 5 8 3 6 9 A(5,5)=111 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 A(:,6)=222 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 多次寻访扩展法 AA=A(:,1:6,1:6) 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 6 9 0 0 222 3 6 9 0 0 222 0 0 0 0 0 222 0

17、 0 0 0 0 222 0 0 0 0 111 222 0 0 0 0 111 222,合成扩展法 B=ones(2,6) B = 1 1 1 1 1 1 1 1 1 1 1 1 AB_r=A;B 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 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

18、0 0 0 111 222 1 1,(1)数组的扩展,36,(2)单下标寻访和reshape 指令演示 clear A=reshape(1:16,2,8) 变一维数组为(28)数组 A = 1 3 5 7 9 11 13 15 2 4 6 8 10 12 14 16 reshape(A,4,4) ans = 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 s=1 3 6 8 9 11 14 16; 定义单下标数组 A(s)=0 对元素赋值 A = 0 0 5 7 0 0 13 15 2 4 0 0 10 12 0 0,37,(3)逻辑函数的运用 R=randn(3

19、,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 0 0 -0.8197

20、0 -0.8519 0 -0.9649 -0.7443 1.1091 0 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.7443 1.1091 111.0000 ii,jj=find(R=111); %利用fin

21、d获得符合关系等式条件的元素的“双下标” disp(ii),disp(jj) 2 2 3 2 1 2 2 3 1 2 2 3 4 4 6 6,38,2.9 高维数组,2.9.1 高维数组的创建 方法: 直接通过“全下标”元素赋值方法 由若干相同的低维数组合成 由函数ones,zeros,rand,randn直接创建 借助cat,repmat,reshape等函数构作,39,【例1】“全下标”元素赋值方式创建高维数组演示。 A(2,2,2)=1 A(:,:,1) = 0 0 0 0 A(:,:,2) = 0 0 0 1 B(2,5,:)=1:3 B(:,:,1) = 0 0 0 0 0 0 0

22、0 0 1 B(:,:,2) = 0 0 0 0 0 0 0 0 0 2 B(:,:,3) = 0 0 0 0 0 0 0 0 0 3,40,【例2】低维数组合成高维数组。 clear; A=ones(2,3);A(:,:,2)=ones(2,3)*2;A(:,:,3)=ones(2,3)*3 A(:,:,1) = 1 1 1 1 1 1 A(:,:,2) = 2 2 2 2 2 2 A(:,:,3) = 3 3 3 3 3 3,41,【例3】由函数ones, zeros, rand, randn直接创建标准高维数组的示例。 rand(2,4,3) ans(:,:,1) = 0.6278 0.

23、9748 0.2585 0.6949 0.2544 0.2305 0.0313 0.1223 ans(:,:,2) = 0.4889 0.3898 0.8489 0.0587 0.9138 0.3071 0.4260 0.6331 ans(:,:,3) = 0.2802 0.2073 0.7438 0.2714 0.4051 0.2033 0.4566 0.2421,42,【例 4】借助cat, repmat, reshape等函数构作高维数组。 cat(3,ones(2,3),ones(2,3)*2,ones(2,3)*3) %第一个输入宗量填写的数字是“表示串连接方向的维数” ans(:,

24、:,1) = 1 1 1 1 1 1 ans(:,:,2) = 2 2 2 2 2 2 ans(:,:,3) = 3 3 3 3 3 3 repmat(ones(2,3),1,1,3) 第一个输入宗量是”模块数组”; 第二个输入宗量是“各维方向”铺放“模块数组”的 数目 ans(:,:,1) = 1 1 1 1 1 1 ans(:,:,2) = 1 1 1 1 1 1 ans(:,:,3) = 1 1 1 1 1 1 reshape(1:12,2,2,3) 第一个输入宗量是“待重组”的数组;第二、三、四是“行数、列数、页数” ans(:,:,1) = 1 3 2 4 ans(:,:,2) =

25、5 7 6 8 ans(:,:,3) = 9 11 10 12,43,2.9.2 高维数组的标识 (1)数组维数和ndims指令 (2)数组的大小和size指令、length指令 eg: clear; A=reshape(1:24,2,3,4); dim_A=ndims(A) %维数 size_A=size(A) %大小 L_A=length(A) %长度(等价max(size(A) dim_A = 3 size_A = 2 3 4 L_A = 4,44,2.10 “非数”和“空”数组,2.10.1 非数 NaN,根据IEEE数学标准,0/0,0/, 0* 等运算都会产生非数( Not a Number )。该非数在MATLAB中用NaN或nan记述。 性质: (1) NaN参与运算所得的结果也是NaN,即具有传递性 (2)非数没有大小的概念,即两个非数不能比较大小。,45,非数的功能 (1)真实记述0/0,0/,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论