《数值数组以及其运算.ppt》由会员分享,可在线阅读,更多相关《数值数组以及其运算.ppt(58页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、关于数值数组及其运算1第一张,PPT共五十八页,创作于2022年6月2 本章集中叙述了一维、二维、任意高维双精度数值数组的生成和操作。这是MATLAB最常用、最基本、最传统的数据类型,定义在此类“对象”上的“方法”就是最具魅力的数组运算。第二张,PPT共五十八页,创作于2022年6月32.1 引导 数组是指由一组实数或复数排成的长方阵列。它可以是一维的“行”或“列”,可以是二维的“矩形”,也可以是三维的“若干同维矩阵的堆叠”,甚至更高的任意维。数组运算是指:无论在数组上实施什么运算(加减乘除或函数),总认定那种运算对被运算数组中的每个元素平等的操作。第三张,PPT共五十八页,创作于2022年6
2、月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-a)是inc的整
3、数倍,则所生成的最后一个元素等于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月122.3.2 利用M文件创建和保存数组 针对比较大而复杂的数组步骤:(1)
6、打开文件编辑调试器,并在空白填写框中输入数组;(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是否是逻辑值数组ans=1 x=A(L)%把L中逻辑值为1对应的A元素取出 x=-4 4 5第十五张,PPT共五十八页,
8、创作于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 例:不同赋值方式示例。同一维数组的子数组寻访和赋值的方法第十六张,PPT共五十八页,创作于2022年6月172.6 执行数组运算的常用函数MATLAB典典型函数型函数含义含义MATLAB典
9、型函数典型函数含义含义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)M为矩阵或向量,对于矩
12、阵,取对角元产生一个列向量;对于向量则产生一个对角阵 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 0.1991 0 0 0 0 0
13、 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 还有伴随矩阵、稀疏矩阵、范德蒙等矩阵的创建等等注意:matlab严格区分大小写字母,因此a与A
14、是两个不同的变量。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标量可与任何矩阵相乘 例 d=-1;0;2;f=pi*d
15、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)的均匀分布随机矩阵 b=ones(5,1);%产生全为1
16、的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,5,6;7,8,9;a2 ans=30 36 42 6
17、6 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 矩阵求逆size 矩阵的大小(行列数)det 行列式的值eig 矩阵的特征值rank 矩阵的秩 矩阵转
18、置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=reshape(1:9,3,3)A=1 4 7 2 5 8 3 6 9 A(5,5)=111 A=1 4
19、 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 0 0 0 0 222 0 0 0 0 111 222 0 0 0
20、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 0 0 0 111 222 1 1(1)数组的扩展第三十六张,PPT共五十八页
21、,创作于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 10 12 0 0 第三十七张,PPT共五十八页,创作于2022年6月38(3)
22、逻辑函数的运用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.8644 0.8735 -1.1027 0 -0
23、.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.96
24、49 -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 【例
25、1】“全下标”元素赋值方式创建高维数组演示。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 2
26、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.2033 0.4566 0.
27、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)第一个输入宗量是第一个输入宗量是”模块数组模块数组”;第二个输入宗量是第二个输入宗量是“各维方向各维方向”铺
28、放铺放“模块数组模块数组”的的 数目数目ans(:,:,1)=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指令、l
29、ength指令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=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)非数没有大小的概念,即两个非数不能比较
30、大小。第四十五张,PPT共五十八页,创作于2022年6月46非数的功能(1)真实记述0/0,0/,0*运算的结果(2)避免可能因为0/0,0/,0*运算而造成程序执行的中断(3)在数据可视化中,用来剪裁图形第四十六张,PPT共五十八页,创作于2022年6月472.10.2 “空”数组 “空”数组由MATLAB 的生成器确定,并有它自己的特性。空数组是简单的,它们是MATLAB 大小为零的变量。“空”数组的功能:(1)在没有“空”数组参与的运算时,计算结果中的“空”可以合理地解释“所得结果的含义”(2)运用“空”数组对其他非空数组赋值,可以改变数组得大小,但不能改变数组得维数。第四十七张,PPT
31、共五十八页,创作于2022年6月482.11 关系操作和逻辑操作 关系操作符 逻辑操作符 关系与逻辑函数 各种运算符的优先级 第四十八张,PPT共五十八页,创作于2022年6月49(1)关系操作符 关系运算符该运算符的功能关系运算符该运算符的功能=大于等于大于=等于=小于等于=约等于关系操作符及其功能 第四十九张,PPT共五十八页,创作于2022年6月50(2)逻辑操作符逻辑操作符功 能&与|或非逻辑操作符及其功能 第五十张,PPT共五十八页,创作于2022年6月51(3)关系与逻辑函数 关系与逻辑函数及其功能 关系和逻辑函数使 用 功 能xor(s,t)异或运算,s或t非零(真)返回1,s和
32、t都是零(假)或都是非零(真)返回0any(x)如果在一个向量x中,任何元素是非零,返回1;矩阵x中的每一列有非零元素,返回1all(x)如果在一个向量x中,所有元素非零,返回1;矩阵x中的每一列所有元素非零,返回1 isequal(s,t)s和t对应元素相同时,相应元素位置取1,否则取0第五十一张,PPT共五十八页,创作于2022年6月52(4)各种运算符的优先级 优 先 级运 算 符最高()(小括号).(转置)(共轭转置).(数组和数值乘方)(矩阵乘方)+(一元加法)-(一元减法)(取反).*(乘法)*(矩阵乘法)./(右除)/(矩阵右除).(左除)(矩阵左除)+(加法)-(减法):(冒号
33、)(小于)(大于)=()大于或等于=(等于)=()不等于&(逻辑与)最低|(逻辑或)第五十二张,PPT共五十八页,创作于2022年6月53【例1】关系运算示例。A=1:9,B=10-A,r0=(A5)L2=(A3)&(A7)A=1 2 3 4 5 6 7 8 9L1=1 1 1 1 1 0 0 0 0L2=0 0 0 1 1 1 0 0 0 第五十六张,PPT共五十八页,创作于2022年6月57【例4】逻辑操作应用之一:逐段解析函数的计算和表现。本例演示削顶整流正弦半波的计算和图形绘制。t=linspace(0,3*pi,500);y=sin(t);z1=(t2*pi).*y;w=(tpi/3&t7*pi/3&t8*pi/3);w_n=w;z2=w*sin(pi/3)+w_n.*z1;%获得削顶整流半波获得削顶整流半波subplot(1,3,1),plot(t,y,:r),ylabel(y)subplot(1,3,2),plot(t,z1,:r),axis(0 10-1 1)subplot(1,3,3),plot(t,z2,-b),axis(0 10-1 1)第五十七张,PPT共五十八页,创作于2022年6月感谢大家观看第五十八张,PPT共五十八页,创作于2022年6月