ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:93.90KB ,
资源ID:4349219      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4349219.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第02讲 数组.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第02讲 数组.docx

1、第02讲 数组第二章 数值数组及其运算 数值数组(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=linspace(0, 1, 11);y=x.*exp(-x) plot(x,y),xlabel(x),ylabel(y),title(y=x*exp(-x) x=0:0.1:1 y=x.*exp(-x) plot(x,y),xlabel(x),ylabel(y),title(y=x*exp(-x)

3、x = Columns 1 through 7 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 Columns 8 through 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 一维数组的创建方括号、冒号、linspacex=1, 2, 3, 4;x=1 2 3 4

4、;冒号linspace.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 =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 =

5、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.9501 【例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。

6、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 【例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.

7、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 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).4 二维数组元素的标识.4.1 “全下标”标

8、识.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 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

9、 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 notes 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

10、 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.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*(

11、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 = 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.00

12、00i 5.0000 - 5.0000i 6.0000 - 6.0000i .8 多项式的表达方式及其操作.8.1 多项式的表达和创建10 一 多项式表达方式的约定10 二 多项式行向量的创建方法【例 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 = s3 - 45 s2 - 18 s + 1.8303e-014 【例 2.8.1.2-2】由给定根向量求多项式系数向量。R=-0.5,-0.3+0.4

13、*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.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,pol

14、y2str(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=polyvalm(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.

15、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,a) r = 1.1274 + 1.1513i 1.1274 - 1.1513i -0.0232 - 0.0722i -0.0232 +

16、 0.0722i 0.7916 s = -1.7680 + 1.2673i -1.7680 - 1.2673i 0.4176 + 1.1130i 0.4176 - 1.1130i -0.2991 k = .9 标准数组生成函数和数组操作函数.9.1 标准数组生成函数【例2.9.1-1】标准数组产生的演示。ones(1,2) ans = 1 1 ones(2) ans = 1 1 1 1 randn(state,0) randn(2,3) ans = -0.4326 0.1253 -1.1465 -1.6656 0.2877 1.1909 D=eye(3) D = 1 0 0 0 1 0 0 0

17、 1 diag(D) ans = 1 1 1 diag(diag(D) ans = 1 0 0 0 1 0 0 0 1 repmat(D,1,3) ans = Columns 1 through 8 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 Column 9 0 01 .9.2 数组操作函数【例 2.9.2-1】diag与reshape的使用演示。a=-4:4A=reshape(a,3,3) a = Columns 1 through 8 -4 -3 -2 -1 0 1 2 3 Column 9 4A = -4 -1 2 -3 0 3 -2

18、 1 4 a1=diag(A,1) a1 = -1 3 A1=diag(a1,-1) A1 = 0 0 0 -1 0 0 0 3 0 【例2.9.2-2】数组转置、对称交换和旋转操作后果的对照比较。A A = -4 -1 2 -3 0 3 -2 1 4 A. ans = -4 -3 -2 -1 0 1 2 3 4 flipud(A) ans = -2 1 4 -3 0 3 -4 -1 2 fliplr(A) ans = 2 -1 -4 3 0 -3 4 1 -2 rot90(A) ans = 2 3 4 -1 0 1 -4 -3 -2 【例2.9.2-3】演示Kronecker乘法不具备“可交

19、换规律”。B=eye(2)C=reshape(1:4,2,2) B = 1 0 0 1C = 1 3 2 4 kron(B,C) ans = 1 3 0 0 2 4 0 0 0 0 1 3 0 0 2 4 kron(C,B) ans = 1 0 3 0 0 1 0 3 2 0 4 0 0 2 0 4 .10 数组构作技法综合【例2.10-1】数组的扩展。(1)数组的赋值扩展法A=reshape(1:9,3,3) A = 1 4 7 2 5 8 3 6 9 A(5,5)=111 A = 1 4 7 0 0 2 5 8 0 0 3 6 9 0 0 0 0 0 0 0 0 0 0 0 111 A(:

20、,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 (2)多次寻访扩展法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 0 111 222 (3)合成扩展法B=ones(2,6) B = 1 1 1 1 1 1 1 1 1

21、 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 【例2.10-2】提取子数组,合成新数组。A A = 1 4 7 0 0 222 2 5 8 0 0 222 3 6 9 0 0 2

22、22 0 0 0 0 0 222 0 0 0 0 111 222 AB_BA=triu(A,1)+tril(A,-1) AB_BA = 0 4 7 0 0 222 2 0 8 0 0 222 3 6 0 0 0 222 0 0 0 0 0 222 0 0 0 0 0 222 AB1=A(1:2,end:-1:1);B(1,:) AB1 = 222 0 0 7 4 1 222 0 0 8 5 2 1 1 1 1 1 1 【例2.10-3】单下标寻访和reshape指令演示。clearA=reshape(1:16,2,8) A = 1 3 5 7 9 11 13 15 2 4 6 8 10 12

23、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 【例2.10-4】“对列(或行)同加一个数”三种的操作方法。clear,A=reshape(1:9,3,3) A = 1 4 7 2 5 8 3 6 9 b=1 2 3;A_b1=A-b(1 1 1,:) A_b1 = 0 2 4 1 3 5 2 4 6 A_b2=A-repmat(b,3,1) A_b2 = 0 2 4 1 3

24、5 2 4 6 A_b3=A(:,1)-b(1),A(:,2)-b(2),A(:,3)-b(3) A_b3 = 0 2 4 1 3 5 2 4 6 【例2.10-5】逻辑函数的运用示例。randn(state,1),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

25、 1 0 1 0 0 0 1 R(L)=0 R = 0.8644 0.8735 -1.1027 0 -0.5523 -0.6149 0 0 0 0 -0.8197 0 -0.8519 0 -0.9649 -0.7443 1.1091 0 s=(find(R=0) 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.9649 -0.744

26、3 1.1091 111.0000 ii,jj=find(R=111);disp(ii),disp(jj) 2 2 3 2 1 2 2 31 2 2 3 4 4 6 6 .11 高维数组.11.1 高维数组的创建【例2.11.1-1】“全下标”元素赋值方式创建高维数组演示。A(2,2,2)=1 A(:,:,1) =0 00 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 【例2.11.1-2】低维数

27、组合成高维数组。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 2 2 2A(:,:,3) = 3 3 3 3 3 3 【例2.11.1-3】由函数ones, zeros, rand, randn直接创建标准高维数组的示例。rand(state,1111),rand(2,4,3) ans(:,:,1) = 0.6278 0.9748 0.2585 0.6949 0.2544 0.2305 0.0313 0.1223ans(:,:,2) = 0.4

28、889 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.2421 【例2.11.1-4】借助cat, repmat, reshape等函数构作高维数组。(1)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 (2)repmat(ones(2,3),1,1,3) ans(:,:,1) = 1 1 1 1 1 1ans(:,:,2) = 1 1 1 1 1 1ans(:,:,3) = 1 1 1 1

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1