第三章 Matlab数值数组及向量化运算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第 3 章 数值数组及向量化运算
数值数组(Numeric Array )和数组运算(Array Operations )始终是MATLAB 的核心内容。本书从第3章起,全部注意力将集中于数值数组及其运算。
本章系统阐述:数组浮点算法的特点;一、二维数值数组的创建和寻访;数组运算和向量化编程;实现数组运算的基本函数;常用标准数组生成函数和数组构作技法;非数NaN 、“空”数组概念和应用;关系和逻辑操作。
3.1 数值计算的特点和地位
【例3.1-1】已知t t t f cos )(2=,求dt t f x s x ⎰=
0 )()(。
(1)符号计算解法
syms t x
ft=t^2*cos(t)
sx=int(ft,t,0,x)
ft =
t^2*cos(t)
sx =
x^2*sin(x)-2*sin(x)+2*x*cos(x)
(2)数值计算解法
dt=0.05;
t=0:dt:5;
Ft=t.^2.*cos(t);
Sx=dt*cumtrapz(Ft);
t(end-4:end)
Sx(end-4:end)
plot(t,Sx,'.k','MarkerSize',12)
xlabel('x'),ylabel('Sx'),grid on
ans =
4.8000 4.8500 4.9000 4.9500
5.0000 ans = -20.1144 -19.9833 -19.7907 -19.5345 -19.2131
图 3.1-1 在区间[0, 5]采样点上算得的定积分值
【例3.1-2】已知)sin()(t e t f -=,求⎰=4
0 )()(dt t f x s 。 (1)符号计算解法
syms t x
ft=exp(-sin(t))
sx=int(ft,t,0,4)
ft =
exp(-sin(t))
Warning: Explicit integral could not be found.
> In sym.int at 58
sx =
int(exp(-sin(t)),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 on
plot(t,Sx,'.k','MarkerSize',15)
hold off
xlabel('x')
legend('Ft','Sx')
ans =
3.0632
图 3.1-2 在区间[0, 4]中间的被积函数及其原函数的离散计算结果3.2数值数组的创建和寻访
3.2.1一维数组的创建
一递增/减型一维数组的创建
二通用型一维数组的创建
【例3.2-1】一维数组的常用创建方法举例。
a1=1:6
a2=0:pi/4:pi
a3=1:-0.1:0
a1 =
1 2 3 4 5 6
a2 =
0 0.7854 1.5708 2.3562 3.1416
a3 =
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.1416
b2 =
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
rand('state',0)
c2=rand(1,5)
c2 =
0.9501 0.2311 0.6068 0.4860 0.8913
3.2.2二维数组的创建
一小规模数组的直接输入法
【例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]
C =
1.0000 5.4716 + 0.4177i 0.6909
0.7071 4.8244 3.5000 + 1.0000i
二中规模数组的数组编辑器创建法
3( 的数组。
【例3.2-3】根据现有数据创建一个)8
图3.2-1 利用数组编辑器创建中规模数组
三中规模数组的M文件创建法
【例3.2-4】创建和保存数组 AM的 MyMatrix.m 文件。
(1)打开文件编辑调试器,并在空白填写框中输入所需数组(见图3.2-2)。
(2)最好,在文件的首行,编写文件名和简短说明,以便查阅(见图3.2-2)。
(3)保存此文件,并且文件起名为 MyMatrix.m 。
(4)以后只要在MATLAB指令窗中,运行 MyMatrix.m文件,数组 AM 就会自动生成于 MATLAB内存中。
图3.2-2 利用M文件创建数组
四利用MATLAB函数创建数组
【例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.1253 -1.1465
-1.6656 0.2877 1.1909
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 10
3 1 3 -1 -3 3 -3 -3 -1 3
1 3 1 3 -1 1 1 1 1 1
3 -1 -3 -1 1 -1 3 -1 -1 1
Columns 11 through 20
-1 -1 -3 1 1 -3 3 -1 1 3
1 1 3 -1 -1 -3 -1 -1 1 -3
1 -1 -3 3 -1 -1 3 -1 3 3
3.2.3二维数组元素的标识和寻访
【例3.2-6】本例演示:数组元素及子数组的各种标识和寻访格式;冒号的使用;end的作