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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

ch3数组.docx

1、ch3数组第 3 章 数组运算及数组化编程 与其它编程语言不同,MATLAB数据的保存和传送的基本单元不是标量,而是复数阵列型数据,即数组;MATLAB算术、关系、逻辑运算的基本运算单元也不是标量,而是数组;MATLAB提供的许多M函数的基本作用单元也不是标量,而是数组。 基于数组、数组运算在MATLAB中的基本地位,本章将系统阐述:有关数组的各种基本概念、数组的编制和寻访、数组运算的基本含义和通则、以及数组化编程的重要性。 对于外形、元素排列和编址都与二维数组相同,但概念、运算规则又绝然不同的矩阵,本章也将安排专门的节次加以详述。不但讲述矩阵与数组的区别,而且要特别强调矩阵化编程的重要性,因

2、为矩阵是MATLAB诞生和发展的原动力。 本章之所以如此强调数组与矩阵的区别,是为了帮助读者正确理解“MATLAB帮助文档中Matrix、Vector英文词汇的泛义以及在它们不同意境下定义的两组运算”。.1 数组、结构和创建.1.1 数组及其结构10 1 数组的维度图 3.1-1 二维数组的结构及相关术语10 2 数组的规模及相关术语10 3 获取数组结构参数的M指令说明.1.2 行(列)数组的创建10 1 递增/减型行(列)数组的创建说明10 2 其他类型行(列)数组的创建(1)(2)【例3.1-1】a1=1:6 %na1=ndims(a1) %Sa1=size(a1) %La1=lengt

3、h(a1) %a1 = 1 2 3 4 5 6na1 = 2Sa1 = 1 6La1 = 6 a2=0:pi/4:pi %a3=1:-0.1:0 % a2 = 0 0.7854 1.5708 2.3562 3.1416a3 = Columns 1 through 6 1.0000 0.9000 0.8000 0.7000 0.6000 0.5000 Columns 7 through 11 0.4000 0.3000 0.2000 0.1000 0 b1=linspace(0,pi,4) %b2=logspace(0,3,4) % b1 = 0 1.0472 2.0944 3.1416b2 =

4、 1 10 100 1000 c1=2 pi/2 sqrt(3) 3+5i % c1 = Columns 1 through 3 2.0000 1.5708 1.7321 Column 4 3.0000 + 5.0000i rng default % c2=rand(1,5) % c2 = 0.8147 0.9058 0.1270 0.9134 0.6324 说明.1.3 二维通用数组的创建10 1 小规模数组的直接输入法【例3.1-2】1)a=2.7358; b=33/79; %na=ndims(a) %sa=size(a) %na = 2sa = 1 1 2)C=1,2*a+i*b,b*s

5、qrt(a);sin(pi/4),a+5*b,3.5+i %nC=ndims(C) %SC=size(C) % C = 1.0000 + 0.0000i 5.4716 + 0.4177i 0.6909 + 0.0000i 0.7071 + 0.0000i 4.8244 + 0.0000i 3.5000 + 1.0000inC = 2SC = 2 3 说明10 2 中规模数组的数组编辑器创建法【例3.1-3】 0.6459 0.9637 0.5289 0.0710 0.8326 0.9786 0.4376 0.3834 0.5680 0.0871 0.7782 0.79921.8918 0.79

6、17 0.9256 0.0202 0.8700 0.4615 操作步骤如下:1)2)3)4)图3.1-2 10 3 中规模的M文件创建法【例3.1-4】 操作步骤如下:1)打开文件编辑器EDITOR2)编写脚本内容3)保存文件4)运行文件生成数组图3.1-3 10 4 利用MATLAB函数创建数组表3.1-1 指 令含 义指 令含 义diagoneseyezerosmagicrandrandomrandnrandsrcgallery【例3.1-5】ones(2,4) % ans = 1 1 1 1 1 1 1 1 rng(0) %randn(2,3) % ans = 0.5377 -2.258

7、8 0.3188 1.8339 0.8622 -1.3077 D=eye(3) % D = 1 0 0 0 1 0 0 0 1 diag(D) % ans = 1 1 1 diag(diag(D) % ans = 1 0 0 0 1 0 0 0 1 randsrc(3,20,-3,-1,1,3,1) % % ans = Columns 1 through 12 -1 -1 -3 1 -3 1 -3 3 3 -3 -3 1 1 -3 -1 -1 3 -1 -3 -1 3 -3 -1 1 -3 -3 -1 1 -3 1 3 1 -3 3 3 -1 Columns 13 through 20 1 3

8、 -1 -1 -1 1 -1 -3 3 3 3 3 -3 -3 -3 1 -3 1 -3 -1 -3 -1 1 1 .1.4 数组构作技法综合表3.1-2 指 令含 义diagrepmatreshapeflipudfliplrrot90【例 3.1-6】a=1:8 %A=reshape(a,4,2) %A=reshape(A,2,4) % a = 1 2 3 4 5 6 7 8A = 1 5 2 6 3 7 4 8A = 1 3 5 7 2 4 6 8 b=diag(A) %B=diag(b) % b = 1 4B = 1 0 0 4 D1=repmat(B,2,4) % D1 = 1 0 1

9、 0 1 0 1 0 0 4 0 4 0 4 0 4 1 0 1 0 1 0 1 0 0 4 0 4 0 4 0 4 D1(1,3,: )= % D1 = 0 4 0 4 0 4 0 4 0 4 0 4 0 4 0 4 【例3.1-7】A=reshape(1:9,3,3) A = 1 4 7 2 5 8 3 6 9 B=flipud(A) % B = 3 6 9 2 5 8 1 4 7 C=fliplr(A) % C = 7 4 1 8 5 2 9 6 3 D=rot90(A,2) % D = 9 6 3 8 5 2 7 4 1 .2 数组元素编址及寻访.2.1 数组元素的编址10 1 全下标

10、编址和单序号编址(1)(2)图 3.2-1 10 2 两种编址间的转换说明.2.2 二维数组元素的寻访10 1 按址寻访表3.2-1 格式使 用 说 明全下标寻访A ( r , c )A ( r , : )A ( : , c )单序号寻访A (ind)A ( : )10 2 按条件寻访【例3.2-1】1)clearA=1:3:16;2:3:17;3:3:18 % A = 1 4 7 10 13 16 2 5 8 11 14 17 3 6 9 12 15 18 2)Ass1=A(2,3) %r=2,3; %c=1,5; %As22=A(r,c) % %Ass1 = 8As22 = 2 14 3

11、15 As26=A(1,3,:) % As26 = 1 4 7 10 13 16 3 6 9 12 15 18 3)Ais1=A(8) % ind=1,3,18; % %Ai1r=A(ind) %Ai1c=A(ind) % Ais1 = 8Ai1r = 1 3 18Ai1c = 1 3 18 4)A(r,c)=zeros(2,2) %A(1,end)=-A(1,end) % A = 1 4 7 10 13 16 0 5 8 11 0 17 0 6 9 12 0 18A = -1 4 7 10 13 16 0 5 8 11 0 17 0 6 9 12 0 -18 5)L=A=、=、=逻辑运算&|

12、10 4 算符数组运算实例及机理解释【例3.3-1】cleart=-3*pi:pi/10:3*pi; %st=sin(t); %y=st./t; %Lt=(t=0); %tt=t+Lt.*realmin; %yy=sin(tt)./tt; %subplot(1,2,1),plot(t,y),axis(-9,9,-0.5,1.2),xlabel(t),ylabel(y),title(残缺图形)subplot(1,2,2),plot(tt,yy),axis(-9,9,-0.5,1.2)xlabel(tt),ylabel(yy),title(正确图形) 图3.3-1 说明图 3.3-2 图 3.3-

13、3 图 3.3-4 【例3.3-2】1)A=-2,-1,0,0,1,2,3B=0,-1,1,0,1,-2,-3disp(A的数据类型是, class(A)A = -2 -1 0 0 1 2 3B = 0 -1 1 0 1 -2 -3A的数据类型是double 2)R1=A=B %R2=AB %fprintf(R1的数据类型是什么? %sn,class(R1)fprintf(R2的数据属于逻辑类?(1为真;0为假) %dn,islogical(R2) %R1 = 0 1 0 1 1 0 0R2 = 0 0 0 0 0 1 1R1的数据类型是什么? logicalR2的数据属于逻辑类?(1为真;0

14、为假) 1 3)LA=logical(A) %LB=logical(B)L1=LA&LBLL1=A&B %LA = 1 1 0 0 1 1 1LB = 0 1 1 0 1 1 1L1 = 0 1 0 0 1 1 1LL1 = 0 1 0 0 1 1 1 4)L3=xor(LA,LB) % LL3=xor(A,B) % L3 = 1 0 1 0 0 0 0LL3 = 1 0 1 0 0 0 0 5)TOTAL1=all(1,1,1,1,1)TOTAL2=all(1,0,1,1,1) TOTAL1 = 1TOTAL2 = 0 6)ANYONE1=any(0,1,0,0,0)ANYONE2=any(

15、0,0,0,0,0) ANYONE1 = 1ANYONE2 = 0 说明.3.2 实施数组运算的函数10 1 函数数组运算通则10 2 服从数组运算通则的M函数表3.2-4 服从数组运算通则的MATLAB函数分类M函数名称三角函数Trigonometry弧度单位sin, cos, tan, cot, sec, cscasin, acos, atan, acot, asec, acsc度数单位sind, cosd, tand, cotd, secd, cscdasind, acosd, atand, acotd, asecd, acscd双曲类sinh, cosh, tanh, coth, se

16、ch, cschasinh, acosh, atanh, acoth, asech, acsch指数函数Exponentialexplog, log10, log2, log1p, reallognexpow2, pow2, realpow, sqrt, realsqrt, nthroot复函数Complexabs, anglereal, imag, conj, sign, unwrap圆整求余函数Rounding and Remainderceil, fix, floor, idivide, mod, rem, round特殊函数Special Functionsairy, besselh,

17、 besseli,beta, ellipj, erf,erfinv,gamma, gammaln, psi数据类型转换函数Conversion Functionchar, double, logical, int2str, int8, int16, num2str, uint8, uint16示例.3.3 数组运算中的溢出及非数处理.3.4 数组化编程(1) (2)【例3.3-3】1)function y=exm030303_1(x)% exm030303_1 % x % y M=length(x);y=zeros(1,M);for jj=1:M if x(jj)=-1y(jj)=x(jj);

18、elseif -1x(jj)&x(jj)=1y(jj)=x(jj)3*cos(2*pi*x(jj);elsey(jj)=exp(-x(jj)+1);endendfunction y=exm030303_2(x)% exm030303_2 L1=x=1; %L2=-1x&x=1; %L3=1x; %y=zeros(size(x);%y(L1)=x(L1); %y(L2)=x(L2).3.*cos(2*pi*x(L2); %y(L3)=exp(-x(L3)+1); %2)x=-2:0.01:2; %y1=exm030303_1(x); %y2=exm030303_2(x); %e12=max(ab

19、s(y1(:)-y2(:) %clf %plot(x,y2,r,Linewidth,3) %xlabel(x),ylabel(y) %grid on %axis(-2,2,min(min(y1),max(max(y1) % e12 = 0 图3.3-5 说明.4 矩阵及其运算.4.1 矩阵和数组的异同表3.4-1 数 组矩 阵概念来源和背景一般记述方式维(度)的含义元素排列结构算法定义加法乘法代数结构.4.2 矩阵运算符和矩阵函数10 1 独特的矩阵运算符表3.4-2 矩阵运算名称算符运算规则乘标量与矩阵乘*矩阵与矩阵乘除左除或右除或/幂标量为底的方阵指数方阵底的标量指数10 2 矩阵函数表3

20、.4-3 分类函数名称举 例M码M码的数学内涵简述专用矩阵函数矩阵指数函数矩阵对数函数矩阵平方根函数通用矩阵函数【例 3.4-1】1)Am=magic(3) %Aa=reshape(1:12,3,4) %B=repmat(1:4,3,1) % Am = 8 1 6 3 5 7 4 9 2Aa = 1 4 7 10 2 5 8 11 3 6 9 12B = 1 2 3 4 1 2 3 4 1 2 3 4 2)AmmB=Am*B %AamB=Aa.*B % AmmB = 15 30 45 60 15 30 45 60 15 30 45 60AamB = 1 8 21 40 2 10 24 44 3

21、 12 27 48 3)AmLdB=AmB %AaadB=Aa.B %AmLdB = 0.0667 0.1333 0.2000 0.2667 0.0667 0.1333 0.2000 0.2667 0.0667 0.1333 0.2000 0.2667AaadB = 1.0000 0.5000 0.4286 0.4000 0.5000 0.4000 0.3750 0.3636 0.3333 0.3333 0.3333 0.3333 4)Amm2=Am2 %Ama2=Am.2 % Amm2 = 91 67 67 67 91 67 67 67 91Ama2 = 64 1 36 9 25 49 16

22、 81 4 5)Am2m=2Am %Am2a=2.Am % Am2m = 1.0e+04 * 1.0942 1.0906 1.0921 1.0912 1.0933 1.0924 1.0915 1.0930 1.0923Am2a = 256 2 64 8 32 128 16 512 4 6)rng(0) %D=randn(3,3); %AmLdD=AmD %DRdAm=D/Am % AmLdD = -0.3301 -0.0027 0.1153 -0.2305 -0.1836 0.4118 0.5681 0.1778 -0.2946DRdAm = 0.0349 -0.1404 0.1699 0.2

23、438 -0.1931 0.1156 -0.3222 0.9731 -0.6501 .4.3 矩阵化编程【例 3.4-2】采用“实数标量+循环”法和“MATLAB矩阵乘算符”分别计算两个复数矩阵和的乘积。 1)function D=exm030402_1(A,B)%D=exm030402_1(A,B) %A、B %D m,p=size(A); %q,n=size(B); %if p=q % error(A阵的列数不等于B阵的行数,所以A不能与B相乘!)endfor ii=1:m for jj=1:n wr=0;wi=0; for k=1:p wr=wr+real(A(ii,k)*real(B(

24、k,jj). -imag(A(ii,k)*imag(B(k,jj); wi=wi+real(A(ii,k)*imag(B(k,jj). +imag(A(ii,k)*real(B(k,jj); end D(ii,jj)=wr+j*wi; endend2)clearrng(default) %m=100;p=300;n=200;A=randn(m,p)+1j*randn(m,p); %B=randn(p,n)+1j*randn(p,n); % 3)tic %Dc=exm030402_1(A,B); %Tc=toc; % 4)ticDm=A*B; %Tm=toc; % 5)RE=abs(Dm-Dc)./Dm); %re=max(RE(:); %tmc=Tm/Tc; %fprintf(两种编码所得矩阵间的最大元素相对误差为 %6.4en, re)fprintf(“直接乘算符法”耗时与“标量循环法”耗

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

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