数值数组以及其运算_第1页
数值数组以及其运算_第2页
数值数组以及其运算_第3页
数值数组以及其运算_第4页
数值数组以及其运算_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

1、关于数值数组及其运算1第一张,PPT共五十八页,创作于2022年6月2 本章集中叙述了一维、二维、任意高维双精度数值数组的生成和操作。这是MATLAB最常用、最基本、最传统的数据类型,定义在此类“对象”上的“方法”就是最具魅力的数组运算。第二张,PPT共五十八页,创作于2022年6月32.1 引导 数组是指由一组实数或复数排成的长方阵列。它可以是一维的“行”或“列”,可以是二维的“矩形”,也可以是三维的“若干同维矩阵的堆叠”,甚至更高的任意维。 数组运算是指:无论在数组上实施什么运算(加减乘除或函数),总认定那种运算对被运算数组中的每个元素平等的操作。第三张,PPT共五十八页,创作于2022年

2、6月4数组和数组运算的目的在于: 使计算程序简单、易读,使程序指令更接近于教科书上的数学计算公式 提高程序的向量化程度,提高计算效率,节省计算机开销。第四张,PPT共五十八页,创作于2022年6月52.2 一维数组的创建和寻访 2.2.1 一维数组的创建(1)逐个元素输入法 x=2 pi/2 sqrt(3) 3+5ix = 2.0000 1.5708 1.7321 3.0000 + 5.0000i第五张,PPT共五十八页,创作于2022年6月6(2) 冒号成长法 这是通过“步长”设定,生成一维“行”数组的方法。 x=a:inc:b a是数组的第一个元素;inc是采样点之间的间隔,即步长。若(b

3、-a)是inc的整数倍,则所生成的最后一个元素等于b,否则小于b。第六张,PPT共五十八页,创作于2022年6月7(3)定数线形采样法 该法在设定的“总点数”下,均匀采样生成一维“行”数组。 格式:x=linspace(a,b,n) 其中,a,b分别是生成数组的第一个和最后一个元素。n是采样总点数。x=linspace(10,20,11)x =10 11 12 13 14 15 16 17 18 19 20 第七张,PPT共五十八页,创作于2022年6月82.2.2 一维数组的子数组寻访和赋值(1)子数组的寻访 x(index) 寻找什么样的子数组,取决于下标index,其取值范围是(1,数组

4、长度)之间的正整数或正整数数组。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第八张,PPT共五十八页,创作于2022年6月9(2)子数组的赋值eg: x(3)=0 x = 0.9501 0.2311 0 0.4860 0.8913 x(1 4)=1 1x = 1.0000 0.2311 0 1.0000 0.8913第九张,PPT共五十八页,创作于2022年6月102.3 二维数组的创建2.3.1 直接输入法 规则: 整个输入数组

5、必须用 括住 数组元素必须用逗号或空格分隔 在 内数组的行与行之间必须用分号分隔或按Enter键分割第十张,PPT共五十八页,创作于2022年6月11 数组元素可以是数字或任何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 sin(y) cos(y) x2 7 x/2 5 1 %产生数组A说明:%为Matlab注释的开始标志,后面的文字不进行计算第十一张,PPT共五十八页,创作于2022年6月

6、122.3.2 利用M文件创建和保存数组 针对比较大而复杂的数组步骤:(1)打开文件编辑调试器,并在空白填写框中输入数组;(2)保存文件,命名为*.m;(3)在MATLAB指令窗口中,运行*.m文件,数组自动保存在MATLAB内存中。第十二张,PPT共五十八页,创作于2022年6月132.4 二维数组元素的标识2.4.1 “全下标”标识 即指出 “第几行,第几列”的元素eg: a=rand(2,3)a = 0.7621 0.0185 0.4447 0.4565 0.8214 0.6154 a(2,3)ans = 0.6154第十三张,PPT共五十八页,创作于2022年6月142.4.2 “单下

7、标”标识 即用一个下标来指明元素在数组中的位置。 首先进行“一维编号”,把二维数组按先左后右的次序、首尾相接排成一维长列;然后,自上而下对元素位置进行编号。 MATLAB在实现两种标识方法间的转换命令有: sub2ind 全下标单下标 ind2sub 单下标全下标第十四张,PPT共五十八页,创作于2022年6月152.4.3 “逻辑1”标识eg: A=zeros(2,5)A = 0 0 0 0 0 0 0 0 0 0 A(:)=-4:5A = -4 -2 0 2 4 -3 -1 1 3 5 L=abs(A)3L = 1 0 0 0 1 0 0 0 0 1 islogical(L) %判断L是否

8、是逻辑值数组ans = 1 x=A(L) %把L中逻辑值为1对应的A元素取出 x = -4 4 5第十五张,PPT共五十八页,创作于2022年6月162.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 30A(s)=Sa ans = 2 3 5Sa = 10 20 30A = 1 20 30 7 10 4 6 8 A(:,2 3)=ones(2) A = 1 1 1 7 10 1 1 8 例:不同赋值方式示例。同一维数组的子数组寻访

9、和赋值的方法第十六张,PPT共五十八页,创作于2022年6月172.6 执行数组运算的常用函数MATLAB典型函数含义MATLAB典型函数含义abs(x)求绝对值tan(x)正切值sqrt(x)求平方根值cot(x)余切值exp(x)指数运算atan(x)反正切值sin(x)正弦值acot(x)反余切值cos(x)余弦值log(x)自然对数asin(x)反正弦值Log2(x)以2为底的对数acos(x)反余弦值Log10(x)常用对数第十七张,PPT共五十八页,创作于2022年6月182.7 数组运算和矩阵运算 从外观形状和数据结构上看,二维数组和(数学中的)矩阵没有区别。但是,矩阵作为一种变

10、换或映射算子的体现,矩阵运算有着明确的数学规则;数组运算是MATLAB软件所定义的规则,其目的是为了数据管理方便、操作简单、指令形式自然和执行计算的有效。虽然数组运算尚缺乏严谨的数学推理,数组运算本身仍在完善和成熟中。第十八张,PPT共五十八页,创作于2022年6月19第十九张,PPT共五十八页,创作于2022年6月201. 直接输入矩阵的创建 规则: 矩阵元素必须用 括住 矩阵元素必须用逗号或空格分隔 在 内矩阵的行与行之间必须用分号分隔或按Enter键分割第二十张,PPT共五十八页,创作于2022年6月21 矩阵的修改 直接修改 可用键找到所要修改的矩阵,用键移动到要修改的矩阵元素上即可修

11、改。 指令修改 可以用A(,)= 来修改。第二十一张,PPT共五十八页,创作于2022年6月22例如 a=1 2 0;3 0 5;7 8 9a =1 2 0 3 0 5 7 8 9 a(3,3)=0a =1 2 0 3 0 5 7 8 0第二十二张,PPT共五十八页,创作于2022年6月232.用matlab函数创建和修改矩阵 Matlab提供了大量的函数来创建一些常用的特殊矩阵,例如对角阵、单位阵和零矩阵 例1:0-1分布的随机矩阵,利用rand函数产生任意行列的随机矩阵 a=rand(5,5)第二十三张,PPT共五十八页,创作于2022年6月24例2 利用diag产生对角阵 diag(M)

12、M为矩阵或向量,对于矩阵,取对角元产生一个列向量;对于向量则产生一个对角阵 a=rand(5,5)a = 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

13、0.1991 0 0 0 0 0 0.9883 d=diag(a) %矩阵产生列向量d = 0.7027 0.9568 0.2523 0.1991 0.9883第二十四张,PPT共五十八页,创作于2022年6月25Matlab中用于产生特殊矩阵的函数zeros(m,n) mn的零矩阵,全部元素都为0ones(m,n) 全部元素都为1的mn的矩阵rand(m,n) 随机矩阵eye(m,n) 单位矩阵magic(n) n维magic方阵空阵 matlab允许输入空阵,当一项操作无结果时,返回空阵。第二十五张,PPT共五十八页,创作于2022年6月26 还有伴随矩阵、稀疏矩阵、范德蒙等矩阵的创建等等

14、注意:matlab严格区分大小写字母,因此a与A是两个不同的变量。 matlab函数名必须小写。第二十六张,PPT共五十八页,创作于2022年6月273 矩阵的基本数值运算(1)矩阵加、减法运算规则: 相加、减的两矩阵必须有相同的行和列两矩阵对应元素相加减。 允许参与运算的两矩阵之一是标量。标量与矩阵的所有元素分别进行加减操作。MATLAB表达式加a+b减a-b乘a*b除a/b 或 ab幂ab第二十七张,PPT共五十八页,创作于2022年6月28(2) 矩阵乘()运算规则:A矩阵的列数必须等于B矩阵的行数例a=1 2 3;4 5 6;7 8 0;b=1;2;3;c=a*bc =14 32 23

15、标量可与任何矩阵相乘 例 d=-1;0;2;f=pi*d f = -3.1416 0 6.2832第二十八张,PPT共五十八页,创作于2022年6月29在matlab中矩阵除的运算有两种矩阵除运算MATLAB用“/” 代表右除(常用除法)和“”左除运算。这两种运算的差别如下:例如:2/5 表示0.4, 25 表示2.5;对于矩阵,A/B 表示AB-1,即A*inv(B);BA 表示B-1A,即inv(B)*A。矩阵除法可以看作矩阵乘法的逆运算(3) 矩阵除运算第二十九张,PPT共五十八页,创作于2022年6月30例左除解方程组ax=b的解 :x=ab a=rand(5); %产生(5*5)的均

16、匀分布随机矩阵 b=ones(5,1); %产生全为1的5元列向量 x1=inv(a)*bx1 = -0.1734 0.5573 0.0309 0.7208 0.8147 x2=abx2 = -0.1734 0.5573 0.0309 0.7208 0.8147第三十张,PPT共五十八页,创作于2022年6月31 a p a 自乘p次幂 方阵1的整数(4) 矩阵乘方 an,ap,pa 对于p的其它值,计算将涉及特征值和特征向量,如果p是矩阵,a是标量ap使用特征值和特征向量自乘到p次幂;如a,p都是矩阵,ap则无意义。第三十一张,PPT共五十八页,创作于2022年6月32 a=1,2,3;4,

17、5,6;7,8,9;a2 ans =30 36 42 66 81 96 102 126 150当一个方阵有复数特征值或负实特征值时,非整数幂是复数阵。第三十二张,PPT共五十八页,创作于2022年6月33 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.2717i第三十三张,PPT共五十八页,创作于2022年6月34inv 矩阵求逆

18、size 矩阵的大小(行列数)det 行列式的值eig 矩阵的特征值rank 矩阵的秩 矩阵转置sqrt 矩阵开方svd矩阵的奇异值分解(5) 矩阵的其它运算 第三十四张,PPT共五十八页,创作于2022年6月35(6)矩阵的一些特殊操作矩阵的变维 a=1:12;b=reshape(a,3,4) c=zeros(3,4);c(:)=a(:)矩阵的变向 rot90:旋转; fliplr:上翻; flipud:下翻矩阵的抽取 diag:抽取主对角线;tril: 抽取主下三角; triu:抽取主上三角第三十五张,PPT共五十八页,创作于2022年6月362.8 数组构作技法综合赋值扩展法A=resh

19、ape(1:9,3,3) A = 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

20、 0 0 0 0 0 222 0 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

21、 0 0 222 1 1 0 0 0 0 111 222 1 1 (1)数组的扩展第三十六张,PPT共五十八页,创作于2022年6月37(2)单下标寻访和reshape 指令演示clearA=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

22、 10 12 0 0 第三十七张,PPT共五十八页,创作于2022年6月38(3)逻辑函数的运用R=randn(3,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

23、.8644 0.8735 -1.1027 0 -0.5523 -0.6149 0 0 0 0 -0.8197 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

24、.9649 -0.7443 1.1091 111.0000 ii,jj=find(R=111); %利用find获得符合关系等式条件的元素的“双下标” disp(ii),disp(jj) 2 2 3 2 1 2 2 3 1 2 2 3 4 4 6 6 第三十八张,PPT共五十八页,创作于2022年6月392.9 高维数组2.9.1 高维数组的创建方法:直接通过“全下标”元素赋值方法由若干相同的低维数组合成由函数ones,zeros,rand,randn直接创建借助cat,repmat,reshape等函数构作第三十九张,PPT共五十八页,创作于2022年6月40 【例1】“全下标”元素赋值方式

25、创建高维数组演示。A(2,2,2)=1 A(:,:,1) = 0 0 0 0A(:,:,2) = 0 0 0 1 B(2,5,:)=1:3 B(:,:,1) = 0 0 0 0 0 0 0 0 0 1B(:,:,2) = 0 0 0 0 0 0 0 0 0 2B(:,:,3) = 0 0 0 0 0 0 0 0 0 3 第四十张,PPT共五十八页,创作于2022年6月41【例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 1A(:,:,2) = 2 2

26、2 2 2 2A(:,:,3) = 3 3 3 3 3 3 第四十一张,PPT共五十八页,创作于2022年6月42【例3】由函数ones, zeros, rand, randn直接创建标准高维数组的示例。rand(2,4,3) ans(:,:,1) = 0.6278 0.9748 0.2585 0.6949 0.2544 0.2305 0.0313 0.1223ans(:,:,2) = 0.4889 0.3898 0.8489 0.0587 0.9138 0.3071 0.4260 0.6331ans(:,:,3) = 0.2802 0.2073 0.7438 0.2714 0.4051 0.

27、2033 0.4566 0.2421 第四十二张,PPT共五十八页,创作于2022年6月43【例 4】借助cat, repmat, reshape等函数构作高维数组。cat(3,ones(2,3),ones(2,3)*2,ones(2,3)*3) %第一个输入宗量填写的数字是“表示串连接方向的维数”ans(:,:,1) = 1 1 1 1 1 1ans(:,:,2) = 2 2 2 2 2 2ans(:,:,3) = 3 3 3 3 3 3 repmat(ones(2,3),1,1,3) 第一个输入宗量是”模块数组”; 第二个输入宗量是“各维方向”铺放“模块数组”的 数目ans(:,:,1)

28、= 1 1 1 1 1 1ans(:,:,2) = 1 1 1 1 1 1ans(:,:,3) = 1 1 1 1 1 1 reshape(1:12,2,2,3) 第一个输入宗量是“待重组”的数组;第二、三、四是“行数、列数、页数”ans(:,:,1) = 1 3 2 4ans(:,:,2) = 5 7 6 8ans(:,:,3) = 9 11 10 12 第四十三张,PPT共五十八页,创作于2022年6月442.9.2 高维数组的标识(1)数组维数和ndims指令(2)数组的大小和size指令、length指令eg:clear;A=reshape(1:24,2,3,4);dim_A=ndim

29、s(A) %维数size_A=size(A) %大小L_A=length(A) %长度(等价max(size(A) dim_A = 3size_A = 2 3 4L_A = 4 第四十四张,PPT共五十八页,创作于2022年6月452.10 “非数”和“空”数组2.10.1 非数 NaN 根据IEEE数学标准,0/0,0/, 0* 等运算都会产生非数( Not a Number )。该非数在MATLAB中用NaN或nan记述。 性质:(1) NaN参与运算所得的结果也是NaN,即具有传递性(2)非数没有大小的概念,即两个非数不能比较大小。第四十五张,PPT共五十八页,创作于2022年6月46非

30、数的功能(1)真实记述0/0,0/, 0* 运算的结果(2)避免可能因为0/0,0/, 0* 运算而造成程序执行的中断(3)在数据可视化中,用来剪裁图形第四十六张,PPT共五十八页,创作于2022年6月472.10.2 “空”数组 “空”数组由MATLAB 的生成器确定,并有它自己的特性。空数组是简单的,它们是MATLAB 大小为零的变量 。“空”数组的功能:(1)在没有“空”数组参与的运算时,计算结果中的“空”可以合理地解释“所得结果的含义”(2)运用“空”数组对其他非空数组赋值,可以改变数组得大小,但不能改变数组得维数。第四十七张,PPT共五十八页,创作于2022年6月482.11 关系操作和逻辑操作 关系操作符 逻辑操作符 关系与逻辑函数 各种运算符的优先级 第四十八张,PPT共五十八页,创作于2022年6月49(1) 关系操作符 关系运算符该运算符的功能关系运算符该运算符的功能=大于等于大于=等于=小于等于=约等于关系操作符及其功能 第四十九张

温馨提示

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

评论

0/150

提交评论