《二.数值数组及其运算》由会员分享,可在线阅读,更多相关《二.数值数组及其运算(94页珍藏版)》请在金锄头文库上搜索。
1、二.数值数组及其运算,数值数组及其运算,一维数组的创建和寻访二维数组的创建和寻访执行数组运算的常用函数数组运算和矩阵运算标准数组生成函数和数组操作函数高维数组“非数”和“空”数组,数值数组及其运算(续),关系操作和逻辑操作 关系操作符和逻辑操作符 运算符的优先级 关系、逻辑函数多项式,2.1一维数组的创建和寻访, 数学计算是MATLAB强大计算功能的体现。MATLAB的数学计算分为数值计算和符号计算,其中符号计算是指使用未定义的符号变量进行运算,而数值计算不允许使用未定义的变量。数值数组(Numeric Array)和数组运算(Array Operations)始终是MATLAB的核心内容。
2、数组是指由一组实数或复数排成的长方阵列。它可以是一维的“行”或“列”,可以是二维的“矩形”,也可以是三维的“若干同维矩形的堆叠”,甚至更高的任意维。数组运算是针对参与运算的数组中的每个元素(element)进行的。,例2.1 一维数组的基本操作,MATLAB内建数据类型,数值数组(Numeric Array)字符串数组(Character Array)元胞数组(Cell Array)构架数组(Struct Array)数据类型查询: 工作空间浏览器(Workspace) who,whos 指令 Class指令,例2.2 基本数据类型,2.1.1 一维数组的创建,逐个元素生成法 冒号生成法 通用
3、格式为:x=a : inc : b 冒号不能省,且必须在英文状态下输入; 步长inc可取正数或负数,缺省时默认值为1。,2.1.1 一维数组的创建,2.1.1 一维数组的创建(续),定数线性采样法 通用格式为:x=linspace(a,b,n) 1)a、b、n三个参数分别表示开始值、结束值和元素个数。 2)生成从a到b之间线性分布的n个元素的行向量,n如果省略则默 认值为100。 定数对数采样法 通用格式为:x=logspace(a,b,n) 1)a、b、n三个参数分别表示开始值、结束值和元素个数。 2)生成从10a到10b之间按对数等分的 n个元素的行向量,n如果 省略则默认值为50。,2.
4、1.1 一维数组的创建(续),2.1.2 一维子数组的寻访和赋值,子数组寻访取决于x(index)中的下标;下标index可以是单个数值或数组,但是index的元素取值必须在1,end的范围内,end为数组最大下标;子数组赋值时,被赋值的子数组长度应与送入的数组长度一致。,例2.3子数组的寻访,利用下标进行寻址,例2.4 子数组的赋值,2.2 二维数组的创建和寻访,二维数组结构和矩阵相同,当带线 性变换的含义时,数组就是矩阵。,例2.5 二维数组的基本操作,2.2.1 二维数组的创建,1. 直接输入法(1)整个数组元素应用方括号()括住;(2)每行内的元素间用逗号或空格隔开;(3) 行与行之间
5、用分号或回车键隔开;(4)元素可以是数值或表达式。,例2.6 创建二维数组,逗号(,)和分号(;)的不同作用,在数组中逗号分隔同一行中的各个元素,分号分隔不同的行;在指令行逗号结尾的运行结果要显示,分号结尾的运行结果不显示。,2.2.1 二维数组的创建(续),2. 利用M文件中创建和保存数组 对于需要经常用到的,比较大的和复杂的数组,可以专门建立一个M文件来创建和保存数组。,例2.7 利用M文件来生成数组,(1)选择菜单“File” “New” “Mfile”,新建M文 件。(文件名为MyMatrix.m) %MyMatrix.m 利用M文件来生成数组 M_Matrix=0 1 2 3 4 5
6、 6 7 8 9;. 10 11 12 13 14 15 16 17 18 19;. 20 21 22 23 24 25 26 27 28 29;. 30 31 32 33 34 35 36 37 38 39;(2)保存文件,命名为MyMatrix.m。(3)在指令窗中输入MyMatrix,回车后生成数组 M_Matrix。,2.2.2 二维数组元素的标识,1.“全下标”标识 “全下标”标识由两个下标组成,即行下标和列下标,一个mn的数组A的第i行第j列的元素表示为A(i,j)。注意:1)如果在提取数组元素值时,数组元素的下标行或列(i,j)大于数组的大小(m,n),则MATLAB会提示出错;
7、2)而在给数组元素赋值时,如果行或列(i,j)超出数组的大小(m,n),则MATLAB自动扩充数组,扩充部分以0填充。,2.2.2 二维数组元素的标识,2.2.2 二维数组元素的标识(续),2. “单下标”标识 只用一个下标来指明元素在数组中的位置。先把数组的所有列按先左后右的次序连接成“一维长列”,然后对元素位置进行编号,即为该数组的单下标。 对于mn的二维数组A,若元素A(i,j)则对应的“单下标”为s= (j-1)mi。全下标、单下标转换函数:sub2ind 由全下标得到单下标(Linear index) ind2sub 由单下标得到全下标(Multiple subscripts),例2
8、.8 全下标和单下标的转换,2.2.2 二维数组元素的标识(续),3. “逻辑1”标识 为了寻找数组中满足某一条件的元素的位置,可利用逻辑运算产生逻辑数组(Logical Array)来标识。 逻辑数组是大小和对应数组相同,而元素值为0或者1的数组。 可以用A(L1,L2)来表示子数组,其中L1、L2为逻辑向量,当L1、L2的元素为0则不取该位置元素,反之则取该位置的元素。,例2.9 由数组的逻辑运算得出逻辑数组,例2.9 由数组的逻辑运算得出逻辑数组(续),注意:逻辑数组和数值数组的区别: 对于具有相同结构的逻辑数组L和数值数组Lx,则有 Class(L)=double islogical(
9、L)=1 Class(Lx)=double islogical(Lx)=0 在内存浏览器中显示两者Size和Bytes相同,但Class略有不同:L: double array(logical) Lx: double array同时,无法利用Lx进行寻址。 Ax=A(Lx)不合法。,2.2.2 二维数组元素的标识(续),4.判断数组维数和大小 ndims 判断数组维数 size 判断数组大小如:对上例中的数组A An=ndims(A), As=size(A)An = 2As = 2 5注意:数组的长度是指数组最长维的长度,可用指令length(A) 获得。 length(A)max(As) l
10、ength(As)An 表示数组A大小的行数组的长度等于数组A的维数,2.2.3 二维数组子数组的寻访和赋值,1.子数组的产生 子数组是从对应数组中取出一部分元素构成,用全下标和单下标方式取子数组。(1)用全下标方式 A(r,c) 由A的“r指定行”和“c指定列”上的元素组成 A(r,:) 由A的“r指定行”和“全部列”上的元素组成 A(:,c) 由A的“全部行”和“c指定列”上的元素组成,2.2.3二维数组子数组的寻访和赋值(全下标方式),2.2.3 二维数组子数组的寻访和赋值(续),(2) 用单下标方式:A(:) 由A的各列按自左至右的顺序首尾 相接生成“一维长列”数组A(s) 生成“s指
11、定的”一维数组A(L) 由与A同样大小的“逻辑数组”L中 的“1”元素选出A的对应元素组成 列数组,2.2.3二维数组子数组的寻访和赋值(单下标方式),2.2.3 二维数组子数组的寻访和赋值(续),2.子数组的赋值(1)全下标方式A(r,c)=Sa 给A的子数组A(r,c)赋值, 则Sa的行列数必须等于 A(r,c)的行列数。,2.2.3二维数组子数组赋值(全下标方式),2.2.3 二维数组子数组的寻访和赋值(续),(2)单下标方式:A(s)=Sa 给A的第s个元素赋值,s元素个 数必须等于Sa数组的元素个数。,2.2.3二维数组子数组赋值(单下标方式),2.2.3 二维数组子数组的寻访和赋值
12、(续),(3)全元素方式: A(:)=D(:) 给A的所有元素赋值,A和D的 元素总数必须相等,但行列 数不一定相等。,例2.10 数组的寻访和赋值,2.3 执行数组运算的常用函数,函数数组运算是指对数组X中的每一个元素xij求函数值,计算结果与数组X同维,即f(Xmn)=f(xij)mn。执行数组运算的常用函数有:三角函数、双曲函数、指数函数、复数函数、圆整函数、求余函数、坐标变换函数等,见表2.6-1至表2. 6-5。,例2.11 绘制函数yxe-x在0 1区间上的曲线,2.4 数组运算和矩阵运算,矩阵运算有明确而严格的数学规则,矩阵运算规则是按照线性代数运算法则定义的;数组运算是按数组的
13、元素逐个进行的,参加运算的几个数组必须同维。,2.4.1 数组和矩阵的算术运算,1.矩阵和数组的加()、减()运算规则相同 (1)A和B必须大小相同才可以进行加减运算。 (2)如果A、B中有一个是标量,则该标量与矩阵或数 组中的每个元素进行运算。2.矩阵和数组的乘法(*)运算 (1)矩阵A的列数必须等于矩阵B的行数,除非其中有 一个是标量。 (2)数组的乘法运算符为“.*”,表示数组A和B中的对 应元素相乘。A和B数组必须大小相同,除非其中 有一个是标量。,2.4.1 数组和矩阵的算术运算(续),3.矩阵和数组的除法(1)矩阵运算符为“/”和“”分别表示左除和右除。 AB=A-1*B A/B=
14、A*B-1 其中:A-1是矩阵的逆,也可用inv(A)求逆矩阵。 (2)数组的除法运算表达式 “A./ B”和“A.B”,分别为数组的左除和右除,表数组相应元素相除。A和B数组必须大小相同,除非其中有一个是标量。,2.4.1 数组和矩阵的算术运算(续),4.矩阵和数组的乘方 矩阵乘方的运算表达式为“AB”,其中A可以是矩阵或标量。 (1)当A为矩阵,必须为方阵:B为正整数时,表示A矩阵自乘B次;B为负整数时,表示先将矩阵A求逆,再自乘|B|次,仅对非奇异阵成立;B为矩阵时不能运算,会出错;B为非整数时,将A分解成A=W*D/W,D为对角阵,则有AB=W*DB/W。,2.4.1 数组和矩阵的算术
15、运算(续),(2)当A为标量: B为矩阵时,将A分解成A=W*D/W,D为对角阵,则AB=W*diag(D.B)/W。 数组乘方的运算表达式“A.B”。当A为矩阵,B为标量时,则将A(i,j)自乘B次;当A为矩阵,B为矩阵时,A和B数组必须大小相同,则将A(i,j)自乘B(i,j)次;当A为标量,B为矩阵时,将A B(i,j)构成新矩阵的第i行第j列元素。,2.4.2 矩阵和数组的转置,(1)矩阵的转置运算: “A ”表示矩阵A的转置,如果矩阵A为复数矩阵,则为共轭转置。(2)数组的转置运算 “A. ”表示数组A的转置,如果数组A为复数数组,则不是共轭转置。注意:数组的“乘、除、转置”运算符前一定要加“.”,否则进行的是矩阵运算而不是数组运算;关系运算和逻辑运算只适用于数组;在求“乘、除、乘方、三角和指数”运算时的区别。,