第02章数组
- 格式:doc
- 大小:851.00 KB
- 文档页数:20
第二章 数值数组及其运算数值数组(Numeric Array )和数组运算(Array Operations )始终是MATLAB 的核心内容。
自MATLAB5.x 版起,由于其“面向对象”的特征,这种数值数组(以下简称为数组)成为了MATALB 最重要的一种内建数据类型(Built-in Data Type ),而数组运算就是定义在这种数据结构上的方法(Method )。
本章系统阐述:一、二维数值数组的创建、寻访;数组运算和矩阵运算的区别;实现数组运算的基本函数;多项式的表达、创建和操作;常用标准数组生成函数和数组构作技法;高维数组的创建、寻访和操作;非数NaN 、“空”数组概念和应用;关系和逻辑操作。
顺便指出:(1)本章所涉内容和方法,不仅使用于数值数组,而且也将部分地延伸使用于在其他数据结构中。
(2)MATLAB5.x 和 6.x 版在本章内容上的差异极微。
(3)MATLAB6.5版新增的两种逻辑操作,在第2.13.2节给予介绍。
2.1 引导【例2.1-1】绘制函数x xe y -=在10≤≤x 时的曲线。
linspacex=0:0.1:1y=x.*exp(-x)plot(x,y),xlabel('x'),ylabel('y'),title('y=x*exp(-x)') x =Columns 1 through 70 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 Columns 8 through 110.7000 0.8000 0.9000 1.0000y =Columns 1 through 70 0.0905 0.1637 0.2222 0.2681 0.3033 0.3293 Columns 8 through 112.2 一维数组的创建和寻访2.2.1一维数组的创建2.2.2一维数组的子数组寻访和赋值【例2.2.2-1】子数组的寻访(Address)。
rand('state',0)x=rand(1,5)x =0.9501 0.2311 0.6068 0.4860 0.8913x(3)ans =0.6068x([1 2 5])ans =0.9501 0.2311 0.8913x(1:3)ans =0.9501 0.2311 0.6068x(3:end) %ans =0.6068 0.4860 0.8913x(3:-1:1) %ans =0.6068 0.2311 0.9501x(find(x>0.5))ans =0.9501 0.6068 0.8913x([1 2 3 4 4 3 2 1])ans =Columns 1 through 70.9501 0.2311 0.6068 0.4860 0.4860 0.6068 0.2311 Column 80.9501【例2.2.2-2】子数组的赋值(Assign)。
x(3) = 0x =0.9501 0.2311 0 0.4860 0.8913x([1 4])=[1 1]x =1.0000 0.2311 0 1.0000 0.89132.3二维数组的创建2.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.69090.7071 4.8244 3.5000 + 1.0000i【例2.3.1-2】复数数组的另一种输入方式。
M_r=[1,2,3;4,5,6],M_i=[11,12,13;14,15,16]CN=M_r+i*M_iM_r =1 2 34 5 6M_i =11 12 1314 15 16CN =1.0000 +11.0000i2.0000 +12.0000i3.0000 +13.0000i4.0000 +14.0000i5.0000 +15.0000i6.0000 +16.0000i2.3.2 利用M 文件创建和保存数组【例2.3.2-1】创建和保存数组 AM 的 MyMatrix.m 文件。
(1)% MyMatrix.m Creation and 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)2.4二维数组元素的标识 2.4.1“全下标”标识 2.4.2“单下标”标识 2.4.3 “逻辑1”标识【例2.4.3-1】找出数组⎥⎦⎤⎢⎣⎡----=5311342024A 中所有绝对值大于3的元素。
A=zeros(2,5);A(:)=-4:5L=abs(A)>3islogical(L)X=A(L)A =-4 -2 0 2 4-3 -1 1 3 5L =1 0 0 0 10 0 0 0 1ans =1X =-445【例2.4.3-2】演示逻辑数组与一般双精度数值数组的关系和区别。
(本例在例2.4.3-1基础上进行)。
(1)Num=[1,0,0,0,1;0,0,0,0,1];N_L=Num==Lc_N=class(Num)c_L=class(L)N_L =1 1 1 1 11 1 1 1 1c_N =doublec_L =double(2)islogical(Num)Y=A(Num)ans =??? Index into matrix is negative or zero. See release notes on changes tological indices.2.5二维数组的子数组寻访和赋值【例2.5-1】不同赋值方式示例。
A=zeros(2,4)A =0 0 0 00 0 0 0A(:)=1:8A =1 3 5 72 4 6 8s=[2 3 5];A(s)Sa=[10 20 30]'A(s)=Saans =2 3 5Sa =102030A =1 20 30 710 4 6 8A(:,[2 3])=ones(2)A =1 1 1 710 1 1 82.6执行数组运算的常用函数2.6.1函数数组运算规则的定义:2.6.2执行数组运算的常用函数【例2.6.2-1】演示pow2的数组运算性质。
A=[1:4;5:8]A =1 2 3 45 6 7 8pow2(A)ans =2 4 8 1632 64 128 2562.7数组运算和矩阵运算2.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.0000i2.0000 + 2.0000i 4.0000 + 4.0000i 6.0000 + 6.0000i A_A =1.0000 + 1.0000i2.0000 + 2.0000i3.0000 + 3.0000i4.0000 + 4.0000i5.0000 + 5.0000i6.0000 + 6.0000iA_M =1.0000 - 1.0000i2.0000 - 2.0000i3.0000 - 3.0000i4.0000 - 4.0000i5.0000 - 5.0000i6.0000 - 6.0000i2.8多项式的表达方式及其操作2.8.1多项式的表达和创建一多项式表达方式的约定二多项式行向量的创建方法【例 2.8.1.2-1】求3阶方阵A的特征多项式。
A=[11 12 13;14 15 16;17 18 19];PA=poly(A)PPA=poly2str(PA,'s')PA =1.0000 -45.0000 -18.0000 0.0000PPA =s^3 - 45 s^2 - 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 =x^3 + 1.1 x^2 + 0.55 x + 0.1252.8.2 多项式运算函数【例2.8.2-1】求1)1)(4)(2(32+++++s s s s s 的“商”及“余”多项式。
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 s^2 + 4 s + 3【例 2.8.2-2】两种多项式求值指令的差别。
S=pascal(4)P=poly(S);PP=poly2str(P,'s')PA=polyval(P,S)PM=polyvalm(P,S)S =1 1 1 11 2 3 41 3 6 101 4 10 20PP =s^4 - 29 s^3 + 72 s^2 - 29 s + 1PA =1.0e+004 *0.0016 0.0016 0.0016 0.00160.0016 0.0015 -0.0140 -0.05630.0016 -0.0140 -0.2549 -1.20890.0016 -0.0563 -1.2089 -4.3779PM =1.0e-010 *0.0016 0.0033 0.0090 0.02050.0045 0.0101 0.0286 0.06970.0095 0.0210 0.0653 0.15960.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,a)r =1.1274 + 1.1513i1.1274 - 1.1513i-0.0232 - 0.0722i-0.0232 + 0.0722i0.7916s =-1.7680 + 1.2673i-1.7680 - 1.2673i0.4176 + 1.1130i0.4176 - 1.1130i-0.2991k =[]2.9标准数组生成函数和数组操作函数2.9.1标准数组生成函数【例2.9.1-1】标准数组产生的演示。