matlab数值数组及向量化运算解析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第 3 章 数值数组及向量化运算

MATLAB 的核心内容:数值数组和数组运算

3.1 数值计算的特点和地位

符号计算的局限性:有很多问题1)无法解,2)求解时间过长

数值计算:适用范围广,能处理各种复杂的函数关系,计算速度快,容量大。

【例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) ezplot(sx,0,5) hold on ft =

t^2*cos(t) sx =

(2)数值计算解法

dt=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) xlabel('x'),ylabel('Sx'),grid on

图 3.1-1 在区间[0, 5]采样点上算得的定积分值

【例3.1-2】已知

)

sin(

)(t

e

t

f-

=,求⎰=4

)(

)

(dt

t

f

x

s。

(1)符号计算解法无解

syms t x

ft=exp(-sin(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 on

plot(t,Sx,'.k','MarkerSize',15)

hold off

xlabel('x')

legend('Ft','Sx')

3.2数值数组的创建和寻访

3.2.1一维数组的创建

x=[1,3,5,7,9] 逐个元素输入法

x=a:inc:b 步长生成法,inc缺省时步长为1

x=linspace(a,b,n) 线性采样法,以a,b为左右端点,产生1*n行数组 x=logspace(a,b,n) 对数采样法,以a,b为左右端点,产生1*n行数组运用diag, eye等标准数组生成函数。

【例3.2-1】一维数组的常用创建方法举例。

a1=1:6

a2=0:pi/4:pi

a3=1:-0.1:0

b1=linspace(0,pi,4)

b2=logspace(0,3,4) %创建数组[100 101 102 103]

c1=[2 pi/2 sqrt(3) 3+5i]

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]

三个要素:整个输入数组“[ ]”

行与行间“;”或“Enter”

同行中元素间“,”或“空格”

二中规模数组的数组编辑器创建法

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) %产生(2×4)全1数组

randn('state',0) %把正态随机数发生器置0

randn(2,3) %产生正态随机阵

ans =

0.8644 -0.8519 -0.4380

0.0942 0.8735 -0.4297

D=eye(3) %产生3×3的单位阵

diag(D) %取D阵的对角元

diag(diag(D)) %外diag利用一维数组生成对角阵

randsrc(3,20,[-3,-1,1,3],1) %在[-3,-1,1,3]上产生3×20均布随机数组,随机发生

器的状态设置为1

3.2.3二维数组元素的标识和寻访

【例3.2-6】本例演示:数组元素及子数组的各种标识和寻访格式;冒号的使用;end的作用。

A=zeros(2,6)

A(:)=1:12 % 单下标法:单下标全元素寻访

A(2,4) % 全下标法:指定行、指定列

A(8) %单下标法:单下标寻访

A(:,[1,3]) % 全下标法:全部行、指定列

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:8

A=reshape(a,4,2)

A=reshape(A,2,4) %改变行数和列数

b=diag(A) % 提取对角元素,。

B=diag(b) % 生成对角阵

相关文档
最新文档