[农学]ch2数值数组及运算.ppt
《[农学]ch2数值数组及运算.ppt》由会员分享,可在线阅读,更多相关《[农学]ch2数值数组及运算.ppt(79页珍藏版)》请在三一文库上搜索。
1、1,第二章 数值数组及其运算,数值数组(Numeric Array)和数组运算(Array Operation)始终是MATLAB的核心内容。自MATLAB5x版突出了其“面向对象”的特征,这种数值数组(以下简称为数组)就成 了MATLAB最重要的一种内建数据类型(Build-in Data Type),而数组运算就是定义在这种数据结构上的方法(Method)。 我们学过的C语言为面向过程的语言。其中语言基本上是命令式的,命令是某个程序段,执行这个程序段的目的是为了更新对象,命令执行的时序已在程序中预先做了规定,即语句顺序。这类语言还提供了顺序、循环和选择控制结构。在这种范型中,程 序设计的首
2、要问题是设计过程。基于面向过程的程序设计范型和功能分解方法的软件设计技术形成了结构化软件开发方法的基础。 面向对象的程序设计即是以抽象数据类型为基础的。面向对象的程序设计范型就是在以面向过程的程序设计基础之上发展起来的,它的关键在于加入了类及其继承性,对象以类为样板被创建。这种范型将计算视为一个系统开发过程,系统由对象组成,对象经历一系列的状态变化以完成计算任务,在面向对象的程序设计范型中,首要的 任务是决定所需要的类,每个类应设置足够的操作,并利用继承机制显式地共享共同的特性。C+,2,2-1 引 导,什么是数组?,数组是指由一组实数或复数排成的长方阵列(Array)。,什么是数组运算?,无
3、论在数组上施加什么运算(加减乘除或函数),总认定那种运算对数组中的每个元素(Element)平等地实施操作。,它可以是一维的“行”或“列”,可以是二维的“矩形”,也可以是三维的“若干同维矩形的堆叠”,甚至更高的任意维。,3,【例2.1-1】绘制函数 在 时的曲线。,x=0:0.1:1 y=x.*exp(-x) plot(x,y),xlabel(x),ylabel(y),title(y=x*exp(-x),%定义自变量的采样点取值数组(长度为11的行数组),%计算各自变量在采样点上的函数值。,2.2 一维数组的创建和寻访,2.2.1 一维数组的创建,(1)逐个元素输入法,x=2 pi/2 sqr
4、t(3) 3+5i,(2)冒号生成法,x = a:inc:b,通用格式:,4,(3)定数线性采样法,通用格式:,x = linspace(a,b,n),a、b分别是第一个和最后一个元素。n是采样点总数。,x = linspace(0,1,2),例如:,该指令生成(1n)的数组,其作用与x = a:(b-a)/(n-1):b相同。,5,2.2.1 一维数组的子数组寻访和赋值,【例2.2-1】子数组的寻访(Address)。,rand(state,0) x=rand(1,5),把均匀分布伪随机发生器置为0状态,产生(1x 5)的均匀分布随机数组,用help查阅。,x(3),x(1 2 5),x(1
5、:3),x(3:end),x(3:-1:1),x(find(x0.5),x(1 2 3 4 4 3 2 1),寻访数组x的第三个元素,寻访数组x的第一、二、五个元素组成的子数组,寻访前三个元素组成的子数组,寻访除前2个元素外的全部其他元素。,由前三个元素倒排构成的子数组,由大于0. 5的元素构成的子数组,对元素可以重复寻访,使所得数组长度允许大于原数组,6,由以上:寻访什么样的子数组,取决于数组X(index)中下标index。,【例2.2-2】子数组的赋值(Assign)。,x(3) = 0,x(1 4)=1 1,把上例中的第三个元素重新赋值为0.,把当前x数组的第一 、四个元素都赋值为1。
6、,7,2.3 二维数组的创建,二维数组是由实数或复数排列成矩形而构成的,231 直接输入法,对于较小数组,从键盘上直接输入最简便。,三 要 素:,(1)整个输入数组必须以方括号“ ”为其首尾;,(3)数组的行与行之间必须用分号“;”或回车键Enter隔离;,(2)数组元素必须由逗号“,”或空格分隔。,8,a=2.7358; b=33/79; C=1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i,这两条指令分别给变量a,b赋值,这指令用于创建二维数组C,【例2.3-2】复数数组的另一种输入方式。,M_r=1,2,3;4,5,6,M_i=11,12,13;14,1
7、5,16 CN=M_r+i*M_i,由实部、虚部数组构成复数数组,说明,分号“;”在“ ”方括号内时,它是数组行间的分隔符,分号“;”用作为指令后的结束符时,将不在屏幕上显示该指令执行后的结果,说明,在“ ”方括号中,逗号“,”是元素间的分隔符。逗号“,”用于指令后时,该指令执行后的赋值结果将显示在屏幕上,9,2.3.2 利用M文件创建和保存数组,对于经常需要调用的数组,尤其是比较大而复杂的数组,为它专门建立一个M文件是方便的。下面通过一个简单例子来说明这种M文件的创建过程。,【例2.3-3】创建和保存数组 AM的 MyMatrix.m 文件。,(1)打开文件编辑调试器,输入以下内容,% My
8、Matrix.m Creation and preservation of matrix AM AM=101,102,103,104,105,106,107,108,109;. 201,202,203,204,205,206,207,208,209;. 301,302,303,304,305,306,307,308,309;,(2)保存此文件,命名为MyMatrixm。,(3)以后只要在MATLAB指令窗中,运行MyMatrixm文件,数组AM就会自动生成于MATLAB内存中。,10,24 二维数组元素的标识,二维或更高维数组中单个元素标识和寻访有三种方式:,241 “全下标”标识,对于二维数
9、组来说,“全下标”标识由两个下标组成:行下标,列下标。如A(3,5)就表示在二维数组A的“第3行第5列”的元素。,优点:,几何概念清楚,引述简单。因此最为常用。,242 “单下标”标识,“单下标(Linear Index)”标识就是只用一个下标来指明元素在数组中的位置。,11,数组元素一维编号的方法:,先设想把二维数组的所有列,按先左后右的次序、首尾相接排成“一维长列”;然后,自上往下对元素位置进行编号。,MATLAB有两个指令可以实现“单下标”与“全下标”的转换关系:,sub2ind 据全下标换算出单下标。 ind2sub 据单下标换算出全下标。,sub2ind(size(AM),2,3),
10、i,j=ind2sub(size(AM),8),12,243 “逻辑1”标识,在实际使用中,常会遇到诸如寻找数组中所有大于(或小于)某值的元素的问题。此时,可用“逻辑1”标识法。,A=zeros(2,5); A(:)=-4:5 L=abs(A)3 islogical(L) X=A(L),预生成一个(2x 5)全零数组,运用“全元素单下标”赋值法获得A,产生与A同维的“01”逻辑值数组,%判断L是否逻辑值数组。输出若为1,则是,把L中逻辑值1对应的A元素取出,L是逻辑数组,元素为0或1,所谓“逻辑1”标识法是:通过与A同样大小的逻辑值数组L中“逻辑值1”所在的位置,指示A中元素的位置。,13,2
11、5 二维数组的子数组寻访和赋值,有了元素标识的知识,就容易理解和掌握二维数组的子数组寻访和赋值。现把常用的相关指令形式归纳成下表:,14,【例2.5-1】不同赋值方式示例。,A=zeros(2,4),创建(2x4)的全零数组,A(:)=1:8,s=2 3 5; A(s) Sa=10 20 30 A(s)=Sa,全元素赋值方式,产生单下标数组,由“单下标行数组”寻访产生A元素组成的行数组,产生长度为3的“列数组”,单下标方式赋值,15,26 执行数组运算的常用函数,261 数组运算规则的定义,设数组:,数组运算规则为:,16,262 执行数组运算的常用函救,17,18,ceil fix floo
12、r round,a = -1.9, -0.2, 3.4, 5.6, 7, 2.4+3.6i ceil(a) fix(a) floor(a) round(a),ceil round toward infinity fix round towards zero floor round towards minus infinity round round towards nearst integer,Examples,19,rem mod Remainder after division Syntax R = rem(X,Y) M=mod(X,Y) Description R = rem(X,Y)
13、returns X - fix(X./Y).*Y, where fix(X./Y) is the integer part of the quotient, X./Y. M = mod(X,Y) returns the remainder X - Y.*floor(X./Y) for nonzero Y.,mod(5,2) rem(5,2),mod(-5,-2) rem(-5,-2),mod(-5,2) rem(-5,2),Examples,20,sign Signum function Syntax Y = sign(X) Description Y = sign(X) returns an
14、 array Y the same size as X, where each element of Y is: 1 if the corresponding element of X is greater than zero 0 if the corresponding element of X equals zero -1 if the corresponding element of X is less than zero For nonzero complex X, sign(X) = X./abs(X).,Examples,(1)x=-2,2,-3,-5,0,0,2; sign(x)
15、,(2)sign(3-4*i),21,cart2pol Transform Cartesian coordinates to polar or cylindrical Syntax THETA,RHO,Z = cart2pol(X,Y,Z) THETA,RHO = cart2pol(X,Y) Description THETA,RHO,Z = cart2pol(X,Y,Z) transforms three-dimensional Cartesian coordinates stored in corresponding elements of arrays X, Y, and Z, into
16、 cylindrical coordinates. THETA is a counterclockwise angular displacement in radians from the positive x-axis, RHO is the distance from the origin to a point in the x-y plane, and Z is the height above the x-y plane. Arrays X, Y, and Z must be the same size (or any can be scalar). THETA,RHO = cart2
17、pol(X,Y) transforms two-dimensional Cartesian coordinates stored in corresponding elements of arrays X and Y into polar coordinates.,Example:,theta,rho=cart2pol(1,1),22,23,2.7 数组运算和矩阵运算,对于数组,MATLAB规定了两种运算,即数组运算和矩阵运算。,数组运算:是两矩阵中对应元素之间的运算。如:,If,注意:数组运算中,两矩阵的行数和列数必须相等,否则MATLAB将会产生出错信息。,then a+b=,a.*b=,
18、一 数组运算和矩阵运算的概念,24,数组运算也可在标量和数组之间运行,这时相当于把标量运算于数组的每个元素上。,For example :,矩阵运算:遵循线性代数运算法则。 For example,注:a的列数必须与b的行数相等。,If,then,then,25,MATLAB中,为区别数组运算与矩阵运算,在运算符前加一.以表示数组运算。如“ .* ”。,Table Common Array and Matrix Operations Operation MATLABForm comments Array Addition a+b Array addition and matrix additi
19、on are identical Array Subtraction a-b Array subtraction and matrix subraction are identical Array Multiplication a .* b Element-by-element multiplication of a and b.Both arrays must be the same shape , or one of them must be a scalar. Matrix Multiplication a * b Matrix multiplication of a and b.The
20、 number of columns in a must equal the number of rows in b .,26,Table Common Array and Matrix Operations Operation MATLABForm comments Array Right Divesion a ./ b Element-by-element Array division of a and b :a(i,j)/b(i,j).Both arrays must be the same shape ,or one of them must be a scalar. Array Le
21、ft Division a .b Element-by-element Array division of a and b ,but with b in the numerator: b(i,j)/a(i,j). Both arrays must be the same shape ,or one of them must be a scalar. Matrix Right Division a / b Matrix division defined by a*inv(b),where inv(b) is the inverse of matrix b. Matrix Left Divisio
22、n a b Matrix division defined by inv(a)*b,where inv(a) is the inverse of matrix a. Array Exponentiation a . b Element-by-element exponentiation of a and b:a(i,j)b(i,j).Both arrays must be the same shape,or one of them must be a scalar.,27,二 数组运算和矩阵运算指令对照表,标量与数组的运算对照表,28,矩阵间的运算对照表,29,矩阵间的运算对照表,30,1 在
23、带有运算符的运算中,如果这种运算符对数组运算和矩阵运算都有意义,以”.”表示数组运算.在函数运算指令中,不特别申明均指数组运算.矩阵运算的表示,常用的指令在数值运算指令后加字母”m”,一般矩阵函数表示为: Funm(A,FN).,几点说明:,2 编程时要注意数组运算和矩阵运算的区别,初学者容易混淆。一种情况是:用一种运算替代另一种运算会引起非法运算,MATLAB将给出出错信息。另一种情况,两种运算都是合法的,用一种运算误代另一种运算,MATLAB会执行运算,但结果与实际不符。当矩阵是方阵时,第二种情况最容易发生。因为对于维数相同的两个方阵,数组运算和矩阵运算都是合法的,但是运算结果却大相径庭。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 农学 ch2 数值 数组 运算
链接地址:https://www.31doc.com/p-2003378.html