




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 数值数组及向量化运算教学目标教学重点教学内容教学目标掌握数组的创建方法掌握数组的标识与寻访掌握数组的运算了解“非数”NaN和“空”数组掌握关系操作和逻辑操作教学重点数组的创建方法数组的标识与寻访关系操作和逻辑操作教学内容3.1 数值计算的特点和地位 3.2 一、二维数值数组的创建和寻访3.3 数组运算和向量化编程3.4 “非数”NaN和“空”数组3.5 关系操作和逻辑操作3.1 数值计算的特点和地位符号计算可以对包含变量字符,参数字符和数字的表达式进行推理,运算,并给出符号结果。缺点:有很多问题无法解,有很多问题求解时间过长 。syms t xft=t2*cos(t)sx=int(ft
2、,t,0,x)ft =t2*cos(t)sx =x2*sin(x) - 2*sin(x) + 2*x*cos(x)符号计算解法:dt=0.05; t=0:dt:15; Ft=t.2.*cos(t);Sx=dt*cumtrapz(Ft); plot(t,Sx,.k,MarkerSize,12) xlabel(x),ylabel(Sx),grid on 数值计算解法: ezplot(sx,0,15)例 3.1-2 已知求(1) 符号计算解法syms t;ft=exp(-sin(t);sx=int(ft, t, 0, 4)Warning: Explicit integral could not be
3、 found.sx =int(1/exp(sin(t), t = 0.4) (2) 数值计算解法delt=0.01; x=0:delt:4;y=exp(-sin(x);sx=delt*cumtrapz(y);plot(x,y, r, LineWidth, 6); hold on;plot(x, sx, .b, MarkerSize, 15);plot(x, ones(size(x), k);3.2 数值数组的创建和寻访3.2.1 一维数组的创建3.2.2 二维数组的创建3.2.3 二维数组元素的标识和寻访3.2.4 数组操作技法综合(1) 冒号生成法: array=a: inc: b a数组的
4、第一个元素 inc采样点之间的间隔, 即步长. 最后一个元素不一定等于b,其大小为b=a +inc*fix(b-a)/inc); 步长可以省略, 默认为1; inc可以取正数或负数, 但要注意当取正时,要保证ba, 数组最后一个元素不超过b, 取负时b0abInc2) )注意: 数组的第一个元素为x(1), 与C语言中第一个元素为x0不同 第3题Matlab6.5 版符号限定假设对解方程根不起作用。上机问题%23题 解为一个求解变量clear, syms x y SS = dsolve(Dy*y/5+x/4=0,x)ezplot(subs(S(1),C3,1),-2,2 -2,2,1), ho
5、ld onezplot(subs(S(2),C3,1),-2,2 -2,2,1)S = 1/2*(-5*x2+4*C1)(1/2) -1/2*(-5*x2+4*C1)(1/2)%25题 解为两个求解变量S=dsolve(Df=3*f+4*g,Dg=-4*f+3*g,f(0)=0,g(0)=1,x)S = f: 1x1 sym g: 1x1 sym S.f S.g exp(3*x)*sin(4*x), exp(3*x)*cos(4*x)disp(blanks(6), S.f, blanks(18),S.g)disp(S.f,S.g) 上机问题syms x y w t uz=x2+y+3*t+w3
6、+u;findsym(z,8)findsym(expression,n) %当n大于实际的基本变量数目时,按字母表顺序列出所有本符号变量;当n小于等于时实际的基本变量数目时,按与x距离最近的顺序列出。symvar(expression,n) 多一个参数n在Matlab6.5中不能用。ans = t, u, w, x, yans = x,y,w,u,tfindsym(z,5)ans = x,y,wfindsym(z,3)review(1) 冒号生成法: array=a: inc: b 3.2.1 一维数组的创建和寻访 1. 递增/递减一维数组的创建:(2) 线性(或对数)定点采样法在设定的总点数
7、下, 均匀采样生成一维行数组格式为:x=linspace (a, b, n)(2) 运用MATLAB函数生成法:均匀分布随机数组rand(1,n), 全1数组ones(1,n)(1) 逐个元素输入法: 2.其他类型一维数组的创建:x=1,2,3,4,53.2.2 二维数组的创建创建二维数组与创建一维数组的方式类似。在创建二维数组时,整个输入数组以方括号 为其首尾。用逗号或者空格区分同一行的不同元素,用分号或者回车(Enter)区分不同行。1.小规模数组的直接输入法2.中规模数组的数组编辑器创建法 3.中规模数组的M文件创建法例3.2.4利用文件创建和保存数组1. 编写M文件并运行AM=100,
8、101,102;103,104,105;106,107,108,保存为文件名MyMatrix .m2. 在命令窗中输入MyMatrix3.2.2 二维数组的创建4.利用MATLAB函数创建数组 指 令含 义指 令含 义diag产生对角形数组(二维以下)rand产生均匀分布随机数组eye产生单位数组(二维以下)randn产生正态分布随机数组magic产生魔方数组(二维以下)zeros产生全0数组ones产生全1数组【例3.2-5】标准数组产生的演示。ones(2,4)ans = 1 1 1 1 1 1 1 1 randn(state,0) randn(2,3)ans = -0.4326 0.12
9、53 -1.1465 -1.6656 0.2877 1.1909D=eye(3)D = 1 0 0 0 1 0 0 0 1 diag(D)ans = 1 1 1 3.2.3 二维数组元素的标识和寻访数组名(行下标m, 列下标n)数组的第m行n列的元素.A=1,2,3; 4,5,6A(2,3)=61) 全下标标识2) 单下标标识只用一个下标来指定元素在数组中的位置将数组中所有的元素按照从上到下(列), 从左到右的方法从开始编号, 其编号就是单下标 A(4)=2 | 1 2 3 |A= | 4 5 6 | | 7 8 9 |A(:)按单下标方式列出全部元素,组成列向量。A(:)=1,4,7,2,5
10、,8,3,6,9A = 1 2 3 4 5 63) 逻辑1标识法A=1, 2, 3, 4, 5; L=logical(1, 0, 1, 0, 1)A(L)ans=1,3,5【例3.2-6】数组标识与寻访A=zeros(2,6)A = 0 0 0 0 0 0 0 0 0 0 0 0A(:)=1:12A =1 3 5 7 9 11 2 4 6 8 10 12A(2,4)ans = 8A(8)ans = 8 A(:,1,3)ans =1 5 2 6A(:,4:end)ans =7 9 11 8 10 12 A(2,1:2:5)=-1,-3,-5A =1 3 5 7 9 11 -1 4 -3 8 -5
11、 12 B=A(1,2,2,2,1,3,5 )B =1 5 9 -1 -3 -5 -1 -3 -5 -1 -3 -5 L=A3L = 1 0 0 0 0 0 1 0 1 0 1 0A(L)=NaNA = NaN 3 5 7 9 11 NaN 4 NaN 8 NaN 12A(1,2,5,6)ans = 1 2 5 6 3.2.4 数组操作技法综合【例 3.2-7】数组操作函数reshape, diag, repmat的用法;空阵 删除子数组的用法。a=1:8A=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 8
12、A = 1 3 5 7 2 4 6 8 D1=repmat(B,2,4)% D1 = 1 0 1 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,: )= % 删除1,3行 D1 = 0 4 0 4 0 4 0 4 0 4 0 4 0 4 0 4 b=diag(A)b = 1 4B=diag(b)B = 1 0 0 4 3.2.4 数组构作技法综合【例3.2-8】函数flipud, fliplr, rot90对数组的操作体现着“矩阵变换”。A=reshape(1:9,3,3) A = 1 4 7 2 5 8 3
13、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 3.3 数组运算1. 函数关系数值计算模型的分类个别的,无规律的数据集所执行的函数关系运算;一组有规律数据需要反复所执行的函数关系运算;一组有规律数据按矩阵运算法则执行的函数关系运算。3.3.1数组运算的由来和规则对一般编程,后两种运算程序包含一重或多重循环体。2. 提高程序执行性能的三大措施JIT(just in time)-Accelerator; 数组运算;向量或矩
14、阵运算。3.3.1数组运算的由来和规则3. 数组运算规则数组运算是指每个对应元素之间的运算,比如对应元素相加,相减,相乘,相除等,而矩阵运算则服从线性代数中的矩阵运算规则数组运算符是 .opr, opr运算符为+,-, *, /, , , 矩阵运算则没有在操作符左边加 . , matlab中矩阵的运算是按照线性代数中的定义进行的。详细的数组运算符意义见表3.3-1 数组的加减法数组加减法为数组元素的加减法,与矩阵加减法相同。利用运算符“+”和“-”实现该运算。需要注意的是相加或相减的两个数组必须有相同的维数,或者是数组与数值相加减。数组的乘除法数组乘除为元素的乘除,通过运算符“.*”和“./”
15、来实现。运算时需要两个数组有相同的维数,或者数组与数值相乘除。数组的乘方数组乘方用符号“.”实现。数组乘方运算以三种方式进行。 底为数组,指数为标量的形式。这种形式的结果是将数组的每个元素进行指数相同的乘方。返回的结果为与底维数相同的数组,结果数组的每个元素为底中相应元素的乘方。底为标量,指数为数组的形式。该形式返回的结果为数组,维数与指数数组相同。结果数组的每个元素为底以指数数组相应元素为指数做乘方的结果。 底和指数都是数组的形式。此时两个数组需要有相同的维数。返回结果为一个数组,维数与前面两个数组相同,每个元素为底数数组和指数数组做乘方的结果。函数 f (.) 的数组运算规则函数数组运算规
16、则的定义 x11 x12 x1n x21 x22 x2n 对于(m x n)数组X =xij m x n xm1 xm2 xmn 函数 f (.) 的数组运算规则是指: f (X) = f (xij) m x n也就是对数组中每个元素都实施同样的操作名称含义名称含义名称含义acos反余弦asinh反双曲正弦csch双曲余割acosh反双曲余弦atan反正切sec正割acot反余切atan2四象限反正切sech双曲正割acoth反双曲余切atanh反双曲正切sin正弦acsc反余割cos余弦sinh双曲正弦acsch反双曲余割cosh双曲余弦tan正切asec反正割cot余切tanh双曲正切as
17、ech反双曲正割coth双曲余切asin反正弦csc余割 三角函数和双曲函数4. 数组运算符和数组运算函数指数函数名称含义名称含义名称含义exp指数(ex)log10常用对数pow2的幂log自然对数log2以为底对数sqrt平方根复数函数名称含义名称含义名称含义abs模或绝对值conj复数共轭real复数实部angle相角(弧度)imag复数虚部坐标变换函数名称含义名称含义cart2sph直角坐标变球坐标pol2cart极坐标变直角坐标cart2pol直角坐标变极坐标sph2cart球坐标变直角坐标圆整函数与求余函数名称含义名称含义ceil向圆整函数rem求余数fix向圆整函数round向最
18、近整数圆整函数floor向圆整函数sign符号函数 - (-1), + (1) 0 (0)mod模除求余clearvr=0.89, 1.20, 3.09, 4.27, 3.62, 7.71, 8.99, 7.92, 9.70, 10.41;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); endsr=0;for k=1:Lsr=sr+r(k); endrm=sr/L非向量化程序3.3.2 数组运算与向量化编程向量化编程
19、r=vr./irrm=mean(r) 【例 3.3-1】欧姆定律: ,其中 r,u,i 分别是电阻 ( 欧姆 ) 、 电压(伏特)、电流(安培)。验证实验:据电阻两端施加的电压,测量电阻中流过的电流,然后据测得的电压、电流计算平均电阻值。(测得具体数据见程序)。3.3.2 数组运算与向量化编程clearx=-5:0.1:5;y=(-2.5:0.1:2.5);N=length(x);M=length(y);for ii=1:M for jj=1:N Z0(ii,jj)=sin(abs(x(jj)*y(ii); endend 非向量化程序【例 3.3-2】用间距为0.1的水平线和垂直线均匀分割 的
20、矩形域,在所有水平线和垂直线交点上计算函 数y=sin|xy| 的值,并图示。X,Y=meshgrid(x,y); Z=sin(abs(X.*Y); 向量化程序norm(Z-Z0)ans = 0 比较两个数组是否相等(2范数接近eps)surf(X,Y,Z)xlabel(x)ylabel(y)shading interpview(190,70) 绘制二元函数图形按IEEE规定, 0/0, /, 0*等运算都会产生非数, 在matlab 中记为nan.它具有以下性质:1) nan参与运算所得结果也是nan,即具有传递性2) 非数没有大小概念,不能比较两个非数的大小功能:真实记述0/0, / ,
21、0* 运算的后果; 避免可能因以上运算而造成的程序执行的中断;在数据可视化中,用来裁减图形3.4 “非数”和“空”数组3.4.1 非数NaN【例3.4-1】非数的产生和性质演示(1) 非数的产生a=0/0, b=0*log(0), c=inf - inf(2) 非数的传递性0*a, sin (a);(3) 非数的属性判断class (a), isnan (a)isnan唯一能正确判断非数的指令3.4.2“空”数组空数组的功能:空数组没参与运算时,计算结果中的空可以合理地解释所得结果的含义(如在某数组中寻找满足一定条件的数据,结果没有,得到空数组,表示没有满足条件的元素);a=1,2,3; f_
22、array=find (a0)f_array = Empty matrix: 1-by-0运用空数组对其他非空数组赋值,可以改变数组的大小,但不能改变数组的维数A=reshape(-4:5,2,5) A = -4 -2 0 2 4 -3 -1 1 3 5 size(A)ans = 2 5A(:,2,4)= A = -4 0 4 -3 1 5 size(A)ans = 2 3ndims(A)ans = 2运用空数组对其他非空数组赋值,可以改变数组的大小,但不能改变数组的维数A=rand(2,3,2,4);size(A)ans = 2 3 2 4ndims(A)ans = 4A(:, :,1,2
23、,:)= A = Empty array: 2-by-3-by-0-by-4size(A)ans = 2 3 0 4ndims(A)ans = 43.4.2“空”数组(1)创建 ”空” 数组的几种方法a= b=ones(2,0),c=zeros(2,0),d=eye(2,0)f=rand(2,3,0,4); array3=1:-5;(2)空数组的属性【例3.4-3】关于“空”数组的算例。class(a) isnumeric(a)isempty(a) %空数组的判断ans = doubleans = 1ans = 1 which andims(a)size(a)a is a variable.a
24、ns = 2ans = 0 0 3.5 关系操作和逻辑操作3.5.1 关系操作3.5.2 逻辑操作3.5.3 常用逻辑函数 matlab 的约定1) 在所有关系表达式和逻辑表达式中,作为输入的任何非0数都被看作逻辑真,只有0才被认为是逻辑假.2) 所有关系表达式和逻辑表达式的计算结果,即输出,是一个由0和作成的逻辑数组. 其中表示真, 0表示假.3) 逻辑数组是一种特殊的数值数组,它表示着对事物的判断结论“真”与”假“3.5 关系操作和逻辑操作3.5.1关系操作指令含义指令含义=大于等于大于=不等于说明:1) 标量可以与任何维数的数组进行比较,比较在此标量和数组 每个元素之间进行,因此比较结果
25、为与被比较数组同维的数组.2) 数组进行比较时,两数组必须是同维的, 结果也得到一个同维的数组 | 2, 4, 6 | | 1, 3, 5 |A=| 3, 5, 7 | B= | 4, 6, 8 | | 1, 8, 9 | | 2, 7, 9 | |1, 1, 1| |0, 0, 1|AB= |0, 0, 0| A5= |0, 0, 1| |0, 1, 0| |0, 1, 1|A=2 4 6;3 5 7;1 8 9find(A5) = ans=6,7,8,9 % 得到数组下标,单下标A(find(A5) = ans= 8,6,7,9A(find(A5)=5; % A(A5)=5A = 2 4
26、5 3 5 5 1 5 5【例3.5-2】关系运算应用。求近似极限,修补图形缺口sin (t)/t, t-2,2t=-2*pi : pi/10 : 2*pi;y=sin(t)./t; %在t=0处产生非数tt=t+(t=0)*eps ; % 处理分母为的点yy=sin(tt)./tt;subplot(2,1, 1),plot(t,y);axis(-7,7,-0.5,1.2);xlabel(t),ylabel(y),title(残缺图形);subplot(2,1, 2),plot(tt,yy);axis(-7,7,-0.5,1.2);xlabel (t), ylabel(yy), title(完
27、整图形)tt=t; tt(find(tt=0)=eps;tt(tt=0)=eps;3.5.2 逻辑操作说明:1) 标量可以与任何维的数组运算.逻辑运算在标量与数组每个元素间进行, 因此运算结果是与参与运算的数组维数相同的数组.2) 数组之间也可以进行逻辑运算,参与运算的必须维数相同.此时运算在两数组同位置上的元素之间进行.因此运算结果是与参与运算的数组维数相同的数组指令 &| xor含义与或非异或【例3.5-3】逻辑操作和关系操作。本例演示:逻辑、关系操作的组合;xor的作用。%(1) A=-2,-1,0,0,1,2,3L1=(A1)L2=(A0)&(A2)%(2)A,B=0,-1,1,0,1
28、,-2,-3C=xor(A,B)A = -2 -1 0 0 1 2 3L1 = 1 1 1 1 1 0 0L2 = 0 0 0 0 1 0 0A = -2 -1 0 0 1 2 3B = 0 -1 1 0 1 -2 -3C = 1 0 1 0 0 0 0 逻辑操作中任何非零数都看作逻辑10, pi, 2pi, 3pit2pi, z=sin(t)*1; 否则 z=sin(t)*0 ; z=sin(t)*(t2*pi) 【例3.5-4】试绘制如图3.5-2最下那幅子图所示的“正弦波y=sint (t0,3 )的削顶半波整流波形”,削顶发生在每个周期的600,1200之间。t=linspace(0,
29、 3*pi, 500); y=sin(t);z1=(t2*pi).*y; %半波整流波形w=(tpi/3&t7*pi/3&t8*pi/3); %削顶区间置1,其余为零wn=w; %削顶区间置零,其余为1z2=w*sin(pi/3)+wn.*z1; %削顶半波整流波形subplot(4,1,1),plot(t,y, :r ), axis(0 10 -1.5 1.5); ylabel(y);subplot(4,1,2),plot(t,z1, :r ), axis(0 10 -0.2 1.5); ylabel(z1);subplot(4,1,3),plot(t,wn, :r ), axis(0 10
30、 -0.2 1.5); ylabel(wn);subplot(4,1,4),plot(t,z2,-b), axis(0 10 -0.2 1.5); ylabel(z2); 3.5.2 常用逻辑函数 指令 含 义指 令 含 义all (A)A中元素全为非0时为1, 否则0isfinite(x)X中有限大小元素的位置取1,其余取0any(A)A中有非0则为1isempty(x)X为空,则为1false创建全0逻辑数组isspace(x)空格元素处取1,其余取0true创建全1逻辑数组isletter(x)X中英文字母处取1,其余为0logical创建逻辑数组, 1对应输入数组中非0元素, 其余为0isprime(x)质数元素位置处取1,其余取0isreal(x)实数元素位置处取1,其余取0isnan(x)判断数组中元素是否为NaNisinf(x)x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 子公司广告管理制度
- 实验室菌种管理制度
- 小公司经典管理制度
- 政务110管理制度
- 机械厂设备管理制度
- 标准砂专项管理制度
- 桁吊车安全管理制度
- 检修牌领用管理制度
- 检验动物房管理制度
- 楼层设备间管理制度
- 2025年7月浙江省普通高中学业水平考试历史仿真模拟卷01(含答案)
- 2024福建省闽投深海养殖装备租赁有限责任公司招聘7人笔试参考题库附带答案详解
- 法人变更交接协议书
- 地七年级下册全册知识要点总复习-2024-2025学年七年级地理教学课件(人教版2024)
- 2024-2025学年部编版四年级语文下册期末模拟试卷
- 车牌过户协议书范本
- 2025年中考历史考试纲要解读
- 2025年统编版八年级下册道德与法治期末复习课件327张
- 财务培训:AI与财税合规的未来
- 2025年四级调饮师职业技能鉴定理论考试题库(含答案)
- 直招军官面试题库及答案
评论
0/150
提交评论