1、数学建模ch02第二章 数值数组及其运算 数值数组(Numeric Array)和数组运算(Array Operations)始终是MATLAB的核心内容。自MATLAB5.x版起,由于其“面向对象”的特征,这种数值数组(以下简称为数组)成为了MATALB最重要的一种内建数据类型(Built-in Data Type),而数组运算就是定义在这种数据结构上的方法(Method)。 本章系统阐述:一、二维数值数组的创建、寻访;数组运算和矩阵运算的区别;实现数组运算的基本函数;多项式的表达、创建和操作;常用标准数组生成函数和数组构作技法;高维数组的创建、寻访和操作;非数NaN、“空”数组概念和应用;
2、关系和逻辑操作。 顺便指出:(1)本章所涉内容和方法,不仅使用于数值数组,而且也将部分地延伸使用于在其他数据结构中。(2)MATLAB5.x和6.x 版在本章内容上的差异极微。(3)MATLAB6.5版新增的两种逻辑操作,在第2.13.2节给予介绍。.1 引导【例2.1-1】绘制函数在时的曲线。x=0:0.1:1 y=x.*exp(-x) plot(x,y),xlabel(x),ylabel(y),title(y=x*exp(-x) x = Columns 1 through 7 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 Columns 8 thr
3、ough 11 0.7000 0.8000 0.9000 1.0000y = Columns 1 through 7 0 0.0905 0.1637 0.2222 0.2681 0.3033 0.3293 Columns 8 through 11 0.3476 0.3595 0.3659 0.3679图2.1-1.2 一维数组的创建和寻访.2.1 一维数组的创建.2.2 一维数组的子数组寻访和赋值【例2.2.2-1】子数组的寻访(Address)。rand(state,0) x=rand(1,5) x =0.9501 0.2311 0.6068 0.4860 0.8913 x(3) ans =
4、0.6068 x(1 2 5) ans =0.9501 0.2311 0.8913 x(1:3) ans = 0.9501 0.2311 0.6068 x(3:end) % ans = 0.6068 0.4860 0.8913 x(3:-1:1) % ans = 0.6068 0.2311 0.9501 x(find(x0.5) ans =0.9501 0.6068 0.8913 x(1 2 3 4 4 3 2 1) ans = Columns 1 through 7 0.9501 0.2311 0.6068 0.4860 0.4860 0.6068 0.2311 Column 8 0.950
5、1 【例2.2.2-2】子数组的赋值(Assign)。x(3) = 0 x = 0.9501 0.2311 0 0.4860 0.8913 x(1 4)=1 1 x = 1.0000 0.2311 0 1.0000 0.8913 .3 二维数组的创建.3.1 直接输入法【例2.3.1-1】在MATLAB环境下,用下面三条指令创建二维数组C。a=2.7358; b=33/79; C=1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i C = 1.0000 5.4716 + 0.4177i 0.6909 0.7071 4.8244 3.5000 + 1.0000i
6、【例2.3.1-2】复数数组的另一种输入方式。M_r=1,2,3;4,5,6,M_i=11,12,13;14,15,16CN=M_r+i*M_i M_r = 1 2 3 4 5 6M_i = 11 12 13 14 15 16CN = 1.0000 +11.0000i 2.0000 +12.0000i 3.0000 +13.0000i 4.0000 +14.0000i 5.0000 +15.0000i 6.0000 +16.0000i .3.2 利用M文件创建和保存数组【例2.3.2-1】创建和保存数组 AM的 MyMatrix.m 文件。(1)% MyMatrix.m Creation an
7、d preservation of matrix AMAM=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)(3).4 二维数组元素的标识.4.1 “全下标”标识.4.2 “单下标”标识.4.3 “逻辑1”标识【例2.4.3-1】找出数组中所有绝对值大于3的元素。A=zeros(2,5); A(:)=-4:5 L=abs(A)3 islogical(L) X=A(L) A = -4 -2 0 2 4 -3 -1 1
8、 3 5L = 1 0 0 0 1 0 0 0 0 1ans = 1X = -4 4 5 【例2.4.3-2】演示逻辑数组与一般双精度数值数组的关系和区别。(本例在例2.4.3-1基础上进行)。(1)Num=1,0,0,0,1;0,0,0,0,1;N_L=Num=L c_N=class(Num) c_L=class(L) N_L = 1 1 1 1 1 1 1 1 1 1c_N =doublec_L =double (2)islogical(Num) Y=A(Num) ans = 0? Index into matrix is negative or zero. See release not
9、es on changes to logical indices. .5 二维数组的子数组寻访和赋值【例2.5-1】不同赋值方式示例。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 .6 执行数组运算的常用函数.6.1 函数数组运算规则的定义:.6.2 执行数组运算的常用函数【例2.6.
10、2-1】演示pow2的数组运算性质。A=1:4;5:8 A = 1 2 3 4 5 6 7 8 pow2(A) ans = 2 4 8 16 32 64 128 256 .7 数组运算和矩阵运算.7.1 数组运算和矩阵运算指令对照汇总【例 2.7.1-1】两种不同转置的比较clear;A=zeros(2,3);A(:)=1:6; A=A*(1+i) A_A=A. A_M=A A = 1.0000 + 1.0000i 3.0000 + 3.0000i 5.0000 + 5.0000i 2.0000 + 2.0000i 4.0000 + 4.0000i 6.0000 + 6.0000iA_A =
11、1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i 4.0000 + 4.0000i 5.0000 + 5.0000i 6.0000 + 6.0000iA_M = 1.0000 - 1.0000i 2.0000 - 2.0000i 3.0000 - 3.0000i 4.0000 - 4.0000i 5.0000 - 5.0000i 6.0000 - 6.0000i .8 多项式的表达方式及其操作.8.1 多项式的表达和创建10 一 多项式表达方式的约定10 二 多项式行向量的创建方法【例 2.8.1.2-1】求3阶方阵A的特征多项式。A=11
12、12 13;14 15 16;17 18 19;PA=poly(A) PPA=poly2str(PA,s) PA = 1.0000 -45.0000 -18.0000 0.0000PPA = s3 - 45 s2 - 18 s + 1.8303e-014 【例 2.8.1.2-2】由给定根向量求多项式系数向量。R=-0.5,-0.3+0.4*i,-0.3-0.4*i;P=poly(R) PR=real(P) PPR=poly2str(PR,x) P = 1.0000 1.1000 0.5500 0.1250PR = 1.0000 1.1000 0.5500 0.1250PPR = x3 + 1
13、.1 x2 + 0.55 x + 0.125 .8.2 多项式运算函数【例2.8.2-1】求的“商”及“余”多项式。p1=conv(1,0,2,conv(1,4,1,1); p2=1 0 1 1; q,r=deconv(p1,p2);cq=商多项式为 ; cr=余多项式为 ;disp(cq,poly2str(q,s),disp(cr,poly2str(r,s) 商多项式为 s + 5余多项式为 5 s2 + 4 s + 3 【例 2.8.2-2】两种多项式求值指令的差别。S=pascal(4)P=poly(S);PP=poly2str(P,s)PA=polyval(P,S)PM=polyval
14、m(P,S) S = 1 1 1 1 1 2 3 4 1 3 6 10 1 4 10 20PP = s4 - 29 s3 + 72 s2 - 29 s + 1PA = 1.0e+004 * 0.0016 0.0016 0.0016 0.0016 0.0016 0.0015 -0.0140 -0.0563 0.0016 -0.0140 -0.2549 -1.2089 0.0016 -0.0563 -1.2089 -4.3779PM = 1.0e-010 * 0.0016 0.0033 0.0090 0.0205 0.0045 0.0101 0.0286 0.0697 0.0095 0.0210 0.0653 0.1596 0.0163 0.0387 0.1226 0.3019 【例 2.8.2-3】部分分式展开。a=1,3,4,2,7,2;b=3,2,5,4,6; r,s,k=residue(b,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1