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

上传人:国*** 文档编号:769629 上传时间:2018-10-31 格式:DOC 页数:16 大小:281.50KB
下载 相关 举报
数值数组及向量化运算.DOC_第1页
第1页 / 共16页
数值数组及向量化运算.DOC_第2页
第2页 / 共16页
数值数组及向量化运算.DOC_第3页
第3页 / 共16页
数值数组及向量化运算.DOC_第4页
第4页 / 共16页
数值数组及向量化运算.DOC_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、1第 3 章 数值数组及向量化运算MATLAB 的核心内容: 数值数组和数组运算 二维数值数组的创建和寻访 数组运算和向量化编程 实现数组运算的基本函数 常用标准数组生成函数和数组构作技法 非数 NaN、“空”数组概念和应用 关系和逻辑操作3.1 数值计算的特点和地位符号计算的局限性:有很多问题 1)无法解,2)求解时间过长数值计算:适用范围广,能处理各种复杂的函数关系,计算速度快,容量大。【例 3.1-1】已知 ,求 。ttfcos)(2dtfx 0)()((1)符号计算解法syms t xft=t2*cos(t)sx=int(ft,t,0,x)ezplot(sx,0,5)hold on d

2、t=0.05;t=0:dt:5;Ft=t.2.*cos(t);Sx=dt*cumtrapz(Ft); % 小梯形面积的累加求 Ft 曲线下的面积,由一个个宽度为 dt 的小梯形面积累加得到的t(end-4:end) % end 指示最后一个元素的位置%Sx(end-4:end)%plot(t,Sx,.k,MarkerSize,12)(2)数值计算解法dt=0.05;t=0:dt:5;Ft=t.2.*cos(t);Sx=dt*cumtrapz(Ft); % 小梯形面积的累加求 Ft 曲线下的面积,由一个个宽度为 dt 的小梯形面积累加得到的t(end-4:end) % end 指示最后一个元素的

3、位置Sx(end-4:end)2plot(t,Sx,.k,MarkerSize,12)xlabel(x),ylabel(Sx),grid on ans =4.8000 4.8500 4.9000 4.9500 5.0000ans =-20.1144 -19.9833 -19.7907 -19.5345 -19.21310 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-25-20-15-10-505xSx图 3.1-1 在区间0, 5 采样点上算得的定积分值【例 3.1-2】已知 ,求 。)sin()(tetf4 0)()dtfx(1)符号计算解法syms t xft=exp(-s

4、in(t)sx=int(ft,t,0,4) (2)数值计算解法dt=0.05;t=0:dt:4; Ft=exp(-sin(t);Sx=dt*cumtrapz(Ft);Sx(end)plot(t,Ft,*r,MarkerSize,4)hold onplot(t,Sx,.k,MarkerSize,15)hold offxlabel(x)legend(Ft,Sx) 3.2 数值数组的创建和寻访3.2.1 一维数组的创建x=1,3,5,7,9 逐个元素输入法 x=a:inc:b 冒号生成法,inc 缺省时步长为 1x=linspace(a,b,n) 线性定点法x=logspace(a,b,n) 对数定

5、点法3运用 diag, eye 等标准数组生成函数。【例 3.2-1】一维数组的常用创建方法举例。a1=1:6a2=0:pi/4:pia3=1:-0.1:0 b1=linspace(0,pi,4)b2=logspace(0,3,4) %创建数组10 0 101 102 103c1=2 pi/2 sqrt(3) 3+5i rand(state,0) %利用标准数组生成函数产生均匀分布随机数组c2=rand(1,5) 3.2.2 二维数组的创建一 小规模数组的直接输入法【例 3.2-2】在 MATLAB 环境下,用下面三条指令创建二维数组 C。a=2.7358; b=33/79;C=1,2*a+i

6、*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i 三个要素:整个输入数组 “ ”行与行间 “;”或“Enter ” 同行中元素间 “,”或“空格”二 中规模数组的数组编辑器创建法 【例 3.2-3】根据现有数据创建一个 的数组。)83(图 3.2-1 利用数组编辑器创建中规模数组4三 中规模数组的 M 文件创建法【例 3.2-4】创建和保存数组 AM 的 MyMatrix.m 文件。(1) 打开文件编辑调试器,并在空白填写框中输入所需数组(见图 3.2-2)。(2) 最好,在文件的首行,编写文件名和简短说明,以便查阅(见图 3.2-2)。(3) 保存此文件,并且文件起名为

7、MyMatrix.m 。(4) 以后只要在 MATLAB 指令窗中,运行 MyMatrix.m 文件 ,数组 AM 就会自动生成于 MATLAB 内存中。图 3.2-2 利用 M 文件创建数组四 利用 MATLAB 函数创建数组【例 3.2-5】利用最常用标准数组生成函数产生标准数组的演示。ones(2,4) %产生(2 4)全 1 数组ans =1 1 1 11 1 1 1 randn(state,0) %把正态随机数发生器置 0randn(2,3) %产生正态随机阵ans =-0.4326 0.1253 -1.1465-1.6656 0.2877 1.1909 D=eye(3) %产生 3

8、3 的单位阵D =1 0 00 1 00 0 1 diag(D) %取 D 阵的对角元diag(diag(D) %外 diag 利用一维数组生成对角阵randsrc(3,20,-3,-1,1,3,1) %在-3,-1,1,3 上产生 320 均布随机数组,随机发生器的状态设置为 153.2.3 二维数组元素的标识和寻访【例 3.2-6】本例演示:数组元素及子数组的各种标识和寻访格式;冒号的使用;end 的作用。A=zeros(2,6)A(:)=1:12 % 单下标法:单下标全元素寻访A(2,4) % 全下标法:指定行、指定列A(8) % 单下标法:单下标寻访A(:,1,3) % 全下标法:全部

9、行、指定列A(1,2,5,6) % 单下标法 :生成指定的一维行(或列)数组A(:,4:end) % 全下标法:全部行、指定列,end 表示最后一列。A(2,1:2:5)=-1,-3,-5 % 全下标法:指定行、指定列B=A(1,2,2,2,1,3,5 ) % 全下标法:指定行、指定列3.2.4 数组操作技法综合【例 3.2-7】数组操作函数 reshape, diag, repmat 的用法; 空阵 删除子数组的用法。a=1:8A=reshape(a,4,2)A=reshape(A,2,4) %改变行数和列数b=diag(A) % 提取对角元素,。B=diag(b) % 生成对角阵D1=re

10、pmat(B,2,4) %排列 B 模块 repmat(A,m,n) creates a large matrix B consisting of an m-by-n tiling of copies of A.6D1(1,3,: )= %删除指定行【例 3.2-8】函数 flipud, fliplr, rot90 对数组的操作体现着“矩阵变换”。A=reshape(1:9,3,3) B=flipud(A) %上下对称交换C=fliplr(A) %左右对称交换D=rot90(A,2) %逆时针旋转 90 度,2 次3.3 数组运算MATLAB 面向数组/矩阵编程和运算: 用“数组或矩阵运算”模

11、式去处理那些“借助循环而反复执行的标量运算” 显著提高程序执行速度 书写简洁、便于阅读7数组/矩阵运算符:见 MATLAB 帮助(在 Index 窗中输入 +)服从数组运算规则的函数及其它算符举例三角、反三角 sin, cos, tan, cot, sec, csc, asin, acos, atan, acot, asec, acsc双曲、反双曲 sinh, cosh, , asinh, acosh,指数、对数 exp, sqrt, pow2, log, log10, log2圆整、求余 ceil, floor, fix, round, mod, rem模、角、虚实部 abs, angle,

12、 real, imag, conj服从数组运算规则的函数符号函数 sign关系运算符 = =, =, , =, =逻辑运算符 ir=0.028, 0.040, 0.100, 0.145, 0.118, 0.258, 0.299, 0.257, 0.308, 0.345;% -L=length(vr);for k=1:Lr(k)=vr(k)/ir(k);end% -sr=0;for k=1:Lsr=sr+r(k);endrm=sr/L rm =30.5247 (2)向量化程序clearvr=0.89, 1.20, 3.09, 4.27, 3.62, 7.71, 8.99, 7.92, 9.70,

13、 10.41;ir=0.028, 0.040, 0.100, 0.145, 0.118, 0.258, 0.299, 0.257, 0.308, 0.345;r=vr./ir % 注意:运算发生在两数组 相同位置元素间rm=mean(r) % MATLAB 现成的求平均函数r =831.7857 30.0000 30.9000 29.4483 30.6780 29.8837 30.0669 30.8171 31.4935 30.1739rm =30.5247 【例 3.3-2】用间距为 0.1 的水平线和垂直线均匀分割 的矩形5.2,5yx域,在所有水平线和垂直线交点上计算函数 的值,并图示。

14、|sinyz(1)非向量化编程clearx=-5:0.1:5;y=(-2.5:0.1:2.5);N=length(x);M=length(y);for ii=1:Mfor jj=1:NX0(ii,jj)=x(jj); %所有格点的 x 坐标Y0(ii,jj)=y(ii); %所有格点的 y 坐标Z0(ii,jj)=sin(abs(x(jj)*y(ii); %所有格点的函数值endend (2)向量化编程x=-5:0.01:5;y=(-2.5:0.01:2.5); X,Y=meshgrid(x,y); % 指定矩形域内所有格点的(x,y )坐标Z=sin(abs(X.*Y); % 数组运算计算矩

15、形域所有格点坐标(x,y )对应的函数值% 注意:函数 f()对数组的逐个元素起作用。(3)比较二维双精度数是否相等norm(Z-Z0) %范数接近 eps,认为相等。(4)绘图surf(X,Y,Z)xlabel(x)ylabel(y)shading interpview(190,70) 图 3.3-1 指定域上的二元函数图形93.4 “非数”和“空”数组 MATLAB 中特有的两个概念和“预定义变量”3.4.1 非数 NaN (或记为 nan)由 , , 等运算产生。0NaN 的性质: NaN 参与运算所得的结果也是 NaN,即具有传递性; NaN 没有 “大小”概念,不能比较两个 NaN

16、的大小。NaN 的功用: 真实记述 , , 等运算的后果;0 避免可能因 , , 等运算而造成程序执行的中断; 在测量数据处理中,可以用来标识“野点(非正常点)”; 在数据可视化中,可以裁剪图形。10【例 3.4-1】非数的产生和性质演示。(1)非数的产生a=0/0,b=0*log(0),c=inf-inf a =NaNb =NaNc =NaN (2)非数的传递性0*a,sin(a) ans =NaNans =NaN (3)非数的属性判断class(a)isnan(a) % 唯一判断非数的指令ans =doubleans =1 【例 3.4-2】非数元素的寻访。rand(state,0) %

17、将随机发生器置 0R=rand(2,5);R(1,5)=NaN;R(2,3)=NaN R =0.9501 0.6068 0.8913 0.4565 NaN0.2311 0.4860 NaN 0.0185 0.4447 LR=isnan(R) % 对数组元素是否非数进行判断LR =0 0 0 0 10 0 1 0 0 si=find(LR) % 确定非零数的 “单下标”标识 Find indices and values of nonzero elementsri,ci=ind2sub(size(R),si) % 转换成“全下标”标识rj,cj=find(LR) % 直接确定非数的全下标disp(非数在二维数组 R 中的位置)disp(单下标时的第,int2str(si(1),和第,int2str(si(2),个元素) si =69ri =21ci =35

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 1

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。