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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数值数组及向量化运算.docx

1、数值数组及向量化运算第三章 数值数组及向量化运算 数值数组(Numeric Array)和数组运算(Array Operations)始终是MATLAB的核心内容。本书从第3章起,全部注意力将集中于数值数组及其运算。 本章系统阐述:数组浮点算法的特点;一、二维数值数组的创建和寻访;数组运算和向量化编程;实现数组运算的基本函数;常用标准数组生成函数和数组构作技法;非数NaN、“空”数组概念和应用;关系和逻辑操作。3.1 数值计算的特点和地位【例3.1-1】已知,求。(1)符号计算解法syms t x %定义符号变量ft=t2*cos(t) %定义函数sx=int(ft,t,0,x) %符号积分

2、ft =t2*cos(t)sx =x2*sin(x)-2*sin(x)+2*x*cos(x) 说明:1. 符号计算可以得到和手工数学推导相同的结果;2. 可以得到精确的解析结果(2)数值计算解法dt=0.05; %定义采样间隔t=0:dt:5; %定义数值积分的计算区域,数值计算只在有限的区间的采样点进行 Ft=t.2.*cos(t); %定义计算的函数Sx=dt*cumtrapz(Ft); %数值积分,计算从0开始到每个采样点位置的区间内,Ft曲线 %下的面积,此面积由宽度为t的小梯形面积累加而成; %下面分步看一下计算结果:whosbar(t,Ft) %Ft函数的数值hold onplot

3、(t,Sx,.r,MarkerSize,12) %数值积分结果axis(0,6,-25,10)hold off Name Size Bytes Class Ft 1x101 808 double array Sx 1x101 808 double array dt 1x1 8 double array t 1x101 808 double array xqxqxq1234 1x1 1 logical arrayGrand total is 305 elements using 2433 bytes 说明:1. 进行数值计算,必须首先确定一组自变量采样点,即确定一个自变量的取值区间,并设定取样间

4、隔;2. 数值计算的表达式都是在意志的数值采样点进行计算;3. 数值计算的结果也是离散的;4. 再将数值计算的结果扩展到更大的计算区域时不一定成立;5. 直接观察计算结果的离散数值难以看出函数关系,但图形有利于加深对函数的认识。【例3.1-2】已知,求。(1)符号计算解法syms t xft=exp(-sin(t)sx=int(ft,t,0,4) ft =exp(-sin(t)Warning: Explicit integral could not be found. In sym.int at 58sx =int(exp(-sin(t),t = 0 . 4) 说明:符号计算的能力有限,不是在

5、任何情况下都可以得到计算结果;(2)数值计算解法dt=0.05; t=0:dt:4; Ft=exp(-sin(t); Sx=dt*cumtrapz(Ft); Sx(end) bar(t,Ft)hold onplot(t,Sx,.r,MarkerSize,15)hold offxlabel(x)legend(Ft,Sx)hold off ans = 3.0632 说明:数值计算的应用非常广泛,只要给定计算区间、采用点和计算表达式,总是可以得到数值计算的结果。3.2 数值数组的创建和寻访3.2.1 一维数组的创建1递增/减型一维数组的创建主要特征:(1)数组元素值的大小按照递增或者递减的顺序排列,

6、元素之间的“差”是固定的或者“等步长”的。(2)主要用作函数的自变量,for循环中的自变量等。创建方法:(1)“冒号”生成法格式: x = a : inc :b说明:x-变量名称; a/ b-起点/终点 inc -步长(正数或者负数)例子: (1)i = 0:1:10 i = 0 1 2 3 4 5 6 7 8 9 10 (2) i = 0:10 i = 0 1 2 3 4 5 6 7 8 9 10 说明: 缺省的步长是1;(3) i = 0:1:8.5 ans = 0 1 2 3 4 5 6 7 8 (4) i = 0.5:1:10 i = 0.5000 1.5000 2.5000 3.50

7、00 4.5000 5.5000 6.5000 7.5000 8.5000 9.5000 说明: 当abs(b-a)不能被inc整除,生成的最后一个元素将小于b;(5) i = 10:-1:0 i = 10 9 8 7 6 5 4 3 2 1 0 (6) i = 10:-1:20 i = Empty matrix: 1-by-0 说明:步长可以为负数,但此时前面的元素必须大于后面的。(2)线性(或者对数)定点法格式: x=linspace(a,b,n) %以a,b为左右端点,产生线性等间隔的(1*n)行数组;x=logspace(a,b,n) %以10a,10b为左右端点,产生对数等间隔的(1

8、*n)行数组;xl=linspace(0,10,9) xl = 0 1.2500 2.5000 3.7500 5.0000 6.2500 7.5000 8.7500 10.0000 说明:x=linespace(a,b,n) x=a:(b-a)/(n-1):bxl=logspace(1,4,4) xl = 10 100 1000 10000 说明:logspace(x1,x2,N)用于在10x1 and 10x2之间产生N个对数均匀间隔的点。2 通用型一维数组的创建(1)逐个元素输入法,最简单而通用的方法。如:y=1,2, sin(pi/5),-exp(-3) y = 1.0000 2.000

9、0 0.5878 -0.0498 (2)使用Matlab函数生成,如rand(1,n), ones(1,n)rand(1,10) %在0,1之间产生(1*10)的向量;ans = 0.9501 0.2311 0.6068 0.4860 0.8913 0.7621 0.4565 0.0185 0.8214 0.4447 rand(5,5) ans = 0.6154 0.4057 0.0579 0.2028 0.0153 0.7919 0.9355 0.3529 0.1987 0.7468 0.9218 0.9169 0.8132 0.6038 0.4451 0.7382 0.4103 0.009

10、9 0.2722 0.9318 0.1763 0.8936 0.1389 0.1988 0.4660 rand(5,5) ans = 0.5548 0.2731 0.9084 0.6408 0.9943 0.1210 0.2548 0.2319 0.1909 0.4398 0.4508 0.8656 0.2393 0.8439 0.3400 0.7159 0.2324 0.0498 0.1739 0.3142 0.8928 0.8049 0.0784 0.1708 0.3651 补充说明:为了让前面出现过的随机数再次重复出现,需要对随机数生成器的“状态state”或者“种子seed”进行设置。

11、rand(state,0) %设置随机数生成器的状态rand(1,5) ans = 0.9501 0.2311 0.6068 0.4860 0.8913 rand(state,0) %设置随机数生成器的状态rand(1,5) ans = 0.9501 0.2311 0.6068 0.4860 0.8913 ones(3,8) ans = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 思考题、练习题:(1)如何生成在(60,100)之间均匀随机分布的(5*8)的矩阵?如何取整数呢?(2)产生列数组 x2 = (1:6) x2 = linspace

12、(0,pi,4)思考题答案:(1) round(60+rand(5,8).*40) ans = 97 65 83 61 84 83 88 66 87 68 78 75 84 62 63 87 69 84 62 87 61 75 78 88 94 85 61 64 61 85 78 89 85 75 73 61 68 89 74 79 (2) x2 = (1:6) x2 = 1 2 3 4 5 6 x2 = linspace(0,pi,4) x2 = 0 1.0472 2.0944 3.1416 其他函数说明:rand() %生成均匀分布的随机数组;randn() %生成正态分布的随机数组;ro

13、und() %四舍五入取整数zeros() %产生0eye(N) %产生N*N的单位矩阵eye(5) ans = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 3.2.2二维数组的创建一种方法是采用手工输入法,另外还有如下方法。1小规模数组的直接输入法【例3.2-2】在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 a = 2.7358b = 0.4177C = 1.0000 5.4716 + 0.4177i 0.69

14、09 0.7071 4.8244 3.5000 + 1.0000i 2中规模数组的数组编辑器创建法在数组规模比较大了之后,就不适合采用直接手工输入方法了,可以采用数组编辑器。【例3.2-3】根据现有数据创建一个的数组。图3.2-1 利用数组编辑器创建中规模数组3中规模数组的M文件创建法(1)对于常用的数组,可以保存在一个mat文件中,然后就可以在后面调用了。举例:cleara = (1:10);b = (11:20);c = (21: 30);d = a;b;c save myMatrix d;clearload myMatrix d = 1 2 3 4 5 6 7 8 9 10 11 12

15、13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 如果要通过运行m文件产生数组,可以在m文件中编辑数组,然后再运行m文件即可。如:在myMatirx.m文件中输入如下内容,然后运行myMatrix.m就可以载入该数组。%Construct 2D matrixd = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30【例3.2-4】创建和保存数组 AM的 MyMatrix.m 文件。(1) 打开文件编辑调试器,并在空白填写框中输入

16、所需数组(见图3.2-2)。(2) 最好,在文件的首行,编写文件名和简短说明,以便查阅(见图3.2-2)。(3) 保存此文件,并且文件起名为 MyMatrix.m 。(4) 以后只要在MATLAB指令窗中,运行 MyMatrix.m文件 ,数组 AM 就会自动生成于 MATLAB内存中。图3.2-2 利用M文件创建数组4利用MATLAB函数创建数组用于产生特殊二维数组/矩阵的函数如下:diag() %产生对角数组eye() %产生单位数组magic() %产生魔方数组rand() %产生随机数randn() random()3.2.3二维数组元素的标识和寻访【例3.2-6】本例演示:数组元素及

17、子数组的各种标识和寻访格式;冒号的使用;end的作用。A=zeros(2,6) A(:)=1:12 A = 0 0 0 0 0 0 0 0 0 0 0 0A = 1 3 5 7 9 11 2 4 6 8 10 12 A(2,4) A(8) ans = 8ans = 8 A(:,1,3) A(1,2,5,6) ans = 1 5 2 6ans = 1 2 5 6 A(:,4:end) %双下标,显示从第四列到最后一列的所有元素。end表示最后一列ans = 7 9 11 8 10 12 A(2,1:2:5)=-1,-3,-5 A = 1 3 5 7 9 11 -1 4 -3 8 -5 12 A(

18、2,1:2:5)=-1,-3,-5 A = 1 3 5 7 9 11 -1 4 -3 8 -5 12 A(2,1,2,5)=-1,-3,-5 A = 1 3 5 7 9 11 -1 -3 -3 8 -5 12 B=A(1,2,2,2,1,3,5 ) B = 1 5 9 -1 -3 -5 -1 -3 -5 -1 -3 -5 L=A mrdivideMatrix dimensions must agree. aA ans = 0.2000 0.8000 1.4000 0.4000 1.0000 1.6000 0.6000 1.2000 1.8000 说明:这里进行的不是数组运算,而是矩阵运算。总结

19、:(1) 数组运算中,两个数组的加减乘除等都需要使用“.”运算;(2) 数组运算中,一个标量和一个数组的加减运算可以省略“.”运算;(3) 数组运算中,一个标量和一个数组的乘除运算不可以省略“.”运算,否则变成了矩阵运算。思考题:1 为了对班级50名同学的学年综合测评的智育成绩进行统计,假设共有Eng, PE, Phy,Chn, Mth五门课程,分别用5*10的数组表示,学号为k的同学(k=1:50)的课程成绩存储在五个数组中的第k个元素上,任何一门课程的成绩都在(60,100)之间均匀分布且为整数。五门课程的学分为credit= 3,5,4,2,4,请完成如下统计:(1) 统计各门课程的平均分,存入变量meanScore中,;(2) 统计班级学生的加权平均分;(3) 统计加权平均分为6069分的同学的数量,存入数组a;(4) 统计加权平均分为7079分的同学的数量,存入数组b;(5) 统计加权平均分为8089分的同学的数量,存入数组c;(6) 统计加权平均分为90分及以上的同学的数量,存入数组d;(7) 将如上四个分数段的同学的数量存入数组E中。Eng = round(60+(rand(5,10)*40) Eng = 98 90 8

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

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