matlab数值数组及向量化运算文档格式.docx
- 文档编号:6334415
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:19
- 大小:48.85KB
matlab数值数组及向量化运算文档格式.docx
《matlab数值数组及向量化运算文档格式.docx》由会员分享,可在线阅读,更多相关《matlab数值数组及向量化运算文档格式.docx(19页珍藏版)》请在冰点文库上搜索。
图2.1-1在区间[0,5]采样点上算得的定积分值
【例2.1-2】已知
本例演示:
被积函数没有“封闭解析表达式”,符号计算无法解题!
symstx
ft=exp(-sin(t))
sx=int(ft,t,0,4)
exp(-sin(t))
Warning:
Explicitintegralcouldnotbefound.
>
Insym.intat58
int(exp(-sin(t)),t=0..4)
4;
Ft=exp(-sin(t));
Sx(end)
plot(t,Ft,'
*r'
4)
holdon
15)
holdoff
)
legend('
Ft'
)
3.0632
图2.1-2在区间[0,4]中间的被积函数及其原函数的离散计算结果
小结:
(1)符号计算
长处——可以对包含变量字符、参数字符和数字的表达式进行推理、运算,并给出符号结果,与高等数学中的解析式比较接近;
符号计算的短处——很多问题无解或求解时间过长。
(2)数值计算
在确定一组自变量采样点基础上,执行数值计算的表达式在已知的数值点上进行计算。
它适用范围比符号计算广,以有限的精度表现有限时间和范围内的函数关系。
2.2数值数组的创建和寻访
MATLAB把数组看作存储和运算的基本单元,而标量数据看作(1×
1)的数组。
2.2.1一维数组的创建
1.递增/减型一维数组的创建
数组元素值的大小按递增或递减的次序排列,数组元素之间的“差”是“确定的”,即“等步长”。
(1)“冒号”生成法
x=a:
inc:
b;
a—数组的第一个元素;
inc—步长,默认值为1;
最后一个元素小于等于b。
(2)线性(或对数)定点法
x=linspace(a,b,n);
产生线性等间隔(1×
n)行数组,等价于x=a:
(b-a)/(n-1):
x=logspace(a,b,n);
产生对数等间隔(1×
n)行数组,n—一维数组的长度。
(线性等分向量)linspace=linearspacelinear线性的space间隔
2.通用型一维数组的创建
利用函数生成特殊形式数组。
【例2.2-1】一维数组的常用创建方法举例。
a1=1:
6
a2=0:
pi/4:
pi
a3=1:
-0.1:
0
a1=
123456
a2=
00.78541.57082.35623.1416
a3=
Columns1through6
1.00000.90000.80000.70000.60000.5000
Columns7through11
0.40000.30000.20000.10000
b1=linspace(0,pi,4)
b2=logspace(0,3,4)
b1=
01.04722.09443.1416
b2=
1101001000
c1=[2pi/2sqrt(3)3+5i]
c1=
Columns1through3
2.00001.57081.7321
Column4
3.0000+5.0000i
rand('
state'
0)
c2=rand(1,5)%均匀随机数组
c2=
0.95010.23110.60680.48600.8913
2.2.2二维数组的创建
1.小规模数组的直接输入法
【例2.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.00005.4716+0.4177i0.6909
0.70714.82443.5000+1.0000i
数组的三个要素:
括号[];
逗号或空格;
分号或回车键。
2.中规模数组的数组编辑器创建法
【例2.2-3】根据现有数据创建一个
的数组。
图2.2-1利用数组编辑器创建中规模数组
3.中规模数组的M文件创建法
【例2.2-4】创建和保存数组AM的MyMatrix.m文件。
(1)打开文件编辑调试器,并在空白填写框中输入所需数组(见图2.2-2)。
(2)在文件的首行,编写文件名和简短说明,以便查阅(见图2.2-2)。
(3)保存此文件,并且文件起名为MyMatrix.m。
(4)以后只要在MATLAB指令窗中,运行MyMatrix.m文件,数组AM就会自动生成于MATLAB内存中。
图2.2-2利用M文件创建数组
4.利用MATLAB函数创建数组
【例2.2-5】标准数组产生的演示。
ones(2,4)%产生全1元素数组zeros—产生全0元素数组
1111
1111
randn('
0)%产生正态分布随机数组;
rand—产生均匀分布随机数组
randn(2,3)
-0.43260.1253-1.1465
-1.66560.28771.1909
D=eye(3)%产生单位数组
D=
100
010
001
diag(D)%产生对角数组
1
1
diag(diag(D))
randsrc(3,20,[-3,-1,1,3],1)%在指定字符集生成均匀随机数组;
random—生成各种分布随机数组
Columns1through10
313-1-33-3-3-13
1313-111111
3-1-3-11-13-1-11
Columns11through20
-1-1-311-33-113
113-1-1-3-1-11-3
1-1-33-1-13-133
2.2.3二维数组元素的标识和寻访
【例2.2-6】本例演示:
数组元素及子数组的各种标识和寻访格式;
冒号的使用;
end的作用。
A=zeros(2,6)
A(:
)=1:
12
A=
000000
1357911
24681012
A(2,4)
A(8)
8
8
[1,3])
A([1,2,5,6]'
)
15
26
2
5
6
4:
end)
7911
81012
A(2,1:
2:
5)=[-1,-3,-5]
-14-38-512
B=A([1,2,2,2],[1,3,5])
B=
159
-1-3-5
-1-3-5
L=A<
3
A(L)=NaN
L=
100000
101010
NaN357911
NaN4NaN8NaN12
格式
使用说明
全下标法
A(r,c)
A的r行c列上元素
A(r,:
A的r行全部列元素
c)
A的c列全部行元素
单下标法
“单下标全元素”,由A的各列按自左到右次序,首尾相连生成的“一维”数组
A(s)
“单下标”寻访,生成s指定的“一维”数组,s行数组(列数组),则A(s)就是长度相同的行数组(列数组)
逻辑标识法
A(L)
“逻辑1”寻访,由与A同样大小的“逻辑数组”L中的“1”元素选出A的对应元素
【例2.2-7】数组操作函数reshape,diag,repmat的用法;
空阵[]删除子数组的用法。
a=1:
8
A=reshape(a,4,2)%在总元素不变的前提下,改变数组的行数或列数
A=reshape(A,2,4)
a=
12345678
37
48
1357
2468
b=diag(A)
B=diag(b)
b=
4
10
04
D1=repmat(B,2,4)%按指定的行数2、列数4,把B作为模块铺放形成更大维数的数组
D1=
10101010
04040404
04040404
D1([1,3],:
)=[]
【例2.2-8】函数flipud,fliplr,rot90对数组的操作体现着“矩阵变换”。
A=reshape(1:
9,3,3)
147
258
369
B=flipud(A)%以数组“水平中线”为对称轴,交换上下对称位置上的数组元素
369
147
C=fliplr(A)%以数组“垂直中线”为对称轴,交换左右对称位置上的数组元素
741
852
963
D=rot90(A,2)%把数组逆时针旋转90度
963
741
2.3数组运算
1.数组运算规则
(1)同维数组运算
,
(2)标量和数组运算
(3)函数的数组运算
结论:
数组运算是对单个元素进行运算。
2.数组运算符及数组运算函数
(1)运算符
+,-,.*,./(.\),.^(乘方运算),.'
(表示非共轭转置),关系、逻辑运算符。
数组运算两个数组必须同维数,矩阵还必须乘法要求的维数;
矩阵左除运算是MATLAB专门设计的一种运算。
(2)运算函数
三角、反三角函数;
双曲、反双曲函数;
指数、对数函数(exp,sqrt,log,log10);
园整、求余函数(round,fix,mod,floor);
模、角、虚实部(abs,angle,real,imag,conj);
符号函数(sign)。
【例2.3-1】欧姆定律:
,其中
分别是电阻(欧姆)、电压(伏特)、电流(安培)。
验证实验:
据电阻两端施加的电压,测量电阻中流过的电流,然后据测得的电压、电流计算平均电阻值。
(测得的电压电流具体数据见下列程序)。
(1)非向量化程序
clear
vr=[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);
fork=1:
L
r(k)=vr(k)/ir(k);
end
%---------------------------
sr=0;
sr=sr+r(k);
end
rm=sr/L
rm=
30.5247
(2)向量化程序
r=vr./ir
rm=mean(r)
r=
31.785730.000030.900029.448330.678029.883730.066930.817131.493530.1739
小结:
(1)采用“数组运算”(“向量化运算”)模式处理反复执行的标量运算,提高程序的执行性能;
(2)采用“向量或矩阵运算”模式去执行那些传统上靠多重循环标量运算完成的矩阵计算。
【例2.3-2】用间距为0.1的水平线和垂直线均匀分割
的矩形域,在所有水平线和垂直线交点上计算函数
的值,并图示。
(1)
x=-5:
0.1:
y=(-2.5:
2.5)'
;
N=length(x);
M=length(y);
forii=1:
M
forjj=1:
N
X0(ii,jj)=x(jj);
Y0(ii,jj)=y(ii);
Z0(ii,jj)=sin(abs(x(jj)*y(ii)));
end
(2)
[X,Y]=meshgrid(x,y);
Z=sin(abs(X.*Y));
(3)
norm(Z-Z0)
0
(4)
surf(X,Y,Z)
ylabel('
y'
shadinginterp
view([190,70])
图3.3-1指定域上的二元函数图形
2.4关系操作和逻辑操作
在程序流控制、逻辑推理中,需要“真”和“假”判断。
MATLAB约定:
非0看作“逻辑真”;
数组运算结果中的1表示“真”、0表示“假”;
“数值类”有关操作同样适用于关系和逻辑操作。
(大于),>
=(大于等于),<
(小于),<
=(小于等于),==(等于)~=(不等于)
【例2.4-1】关系运算示例。
A=1:
9,B=10-A
r0=(A<
4)
r1=(A==B)
123456789
987654321
r0=
111000000
r1=
000010000
【例2.4-2】关系运算应用。
t=-3*pi:
pi/10:
3*pi;
y=sin(t)./t;
tt=t+(t==0)*eps;
yy=sin(tt)./tt;
subplot(1,2,1),plot(t,y),axis([-9,9,-0.5,1.2]),
t'
),title('
残缺图形'
subplot(1,2,2),plot(tt,yy),axis([-9,9,-0.5,1.2])
tt'
yy'
正确图形'
Dividebyzero.
图2.4-1采用近似极限处理前后的图形对照
&
(与),|(或),~(非),xor(异或)
【例2.4-3】逻辑操作和关系操作。
逻辑、关系操作的组合;
xor的作用。
(1)逻辑、关系操作的组合
A=[-2,-1,0,0,1,2,3]
L1=~(A>
1)%判断A中,哪些元素不大于1
L2=(A>
0)&
(A<
2)%判断A中,哪些元素大于0且小于3
-2-100123
L1=
1111100
L2=
0000100
(2)xor的作用
A,B=[0,-1,1,0,1,-2,-3]
C=xor(A,B)%当A,B数组中,两个对应元素中仅一个为0时,给出1。
否则为0。
0-1101-2-3
1010000
【例2.4-4】试绘制如图2.4-2最下那幅子图所示的“正弦波
的削顶半波整流波形”,削顶发生在每个周期的
之间。
clear,t=linspace(0,3*pi,500);
y=sin(t);
z1=((t<
pi)|(t>
2*pi)).*y;
w=(t>
pi/3&
t<
2*pi/3)+(t>
7*pi/3&
8*pi/3);
wn=~w;
z2=w*sin(pi/3)+wn.*z1;
subplot(4,1,1),plot(t,y,'
:
r'
),axis([0,10,-1.5,1.5])
),gridon
subplot(4,1,2),plot(t,z1,'
),axis([0,10,-0.2,1.5]),ylabel('
z1'
subplot(4,1,3),plot(t,wn,'
wn'
subplot(4,1,4),plot(t,z2,'
-b'
z2'
图2.4-2逐段解析函数的产生
含0数组判断:
all,any
生成逻辑数组:
false,true,logical
数据对象判断:
isempty,isprime,isfinite,isreal,isinf,isletter,isnan,isspace
数据类型判断:
isa,ischar,isglobal,ishandle,islogical,isnumeric
作业2
1.要求在闭区间
上产生具有10个等距采样点的一维数组。
试用两种不同的指令实现。
〖答案〗
2.由指令rand('
0),A=rand(3,5)生成二维数组A,试求该数组中所有大于0.5的元素的位置,分别求出它们的“全下标”和“单下标”。
3.在时间区间[0,10]中,绘制
曲线。
要求分别采取“标量循环运算法”和“数组运算法”编写两段程序绘图。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 数值 数组 量化 运算
![提示](https://static.bingdoc.com/images/bang_tan.gif)