Matlab 参考教程第三章 数值数组及其运算.docx
- 文档编号:4691520
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:34
- 大小:95.48KB
Matlab 参考教程第三章 数值数组及其运算.docx
《Matlab 参考教程第三章 数值数组及其运算.docx》由会员分享,可在线阅读,更多相关《Matlab 参考教程第三章 数值数组及其运算.docx(34页珍藏版)》请在冰豆网上搜索。
Matlab参考教程第三章数值数组及其运算
3数值数组及其运算
3.1引导
【*例3.1-1】绘制函数
在
时的曲线。
x=0:
0.1:
1%定义自变量的采样点取值数组
y=x.*exp(-x)%利用数组运算计算各自变量采样点上的函数值
plot(x,y),xlabel('x'),ylabel('y'),title('y=x*exp(-x)')%绘图
x=
Columns1through7
00.10000.20000.30000.40000.50000.6000
Columns8through11
0.70000.80000.90001.0000
y=
Columns1through7
00.09050.16370.22220.26810.30330.3293
Columns8through11
0.34760.35950.36590.3679
图3.1-1
3.2一维数组的创建和寻访
3.2.1一维数组的创建
3.2.2一维数组的子数组寻访和赋值
【*例3.2.2-1】子数组的寻访(Address)。
rand('state',0)%把均匀分布伪随机发生器置为0状态
x=rand(1,5)%产生
的均布随机数组
x=
0.95010.23110.60680.48600.8913
x(3)%寻访数组x的第三个元素。
ans=
0.6068
x([125])%寻访数组x的第一、二、五个元素组成的子数组。
ans=
0.95010.23110.8913
x(1:
3)%寻访前三个元素组成的子数组
ans=
0.95010.23110.6068
x(3:
end)%寻访除前2个元素外的全部其他元素。
end是最后一个元素的下标。
ans=
0.60680.48600.8913
x(3:
-1:
1)%由前三个元素倒排构成的子数组
ans=
0.60680.23110.9501
x(find(x>0.5))%由大于0.5的元素构成的子数组
ans=
0.95010.60680.8913
x([12344321])%对元素可以重复寻访,使所得数组长度允许大于原数组。
ans=
Columns1through7
0.95010.23110.60680.48600.48600.60680.2311
Column8
0.9501
【*例3.2.2-2】子数组的赋值(Assign)。
x(3)=0%把上例中的第三个元素重新赋值为0
x=
0.95010.231100.48600.8913
x([14])=[11]%把当前x数组的第一、四个元素都赋值为1。
x=
1.00000.231101.00000.8913
3.3二维数组的创建
3.3.1直接输入法
【*例3.3.1-1】在MATLAB环境下,用下面三条指令创建二维数组C。
a=2.7358;b=33/79;%这两条指令分别给变量a,b赋值。
C=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i]
%这指令用于创建二维数组C
C=
1.00005.4716+0.4177i0.6909
0.70714.82443.5000+1.0000i
【*例3.3.1-2】复数数组的另一种输入方式。
M_r=[1,2,3;4,5,6],M_i=[11,12,13;14,15,16]
CN=M_r+i*M_i%由实部、虚部数组构成复数数组
M_r=
123
456
M_i=
111213
141516
CN=
1.0000+11.0000i2.0000+12.0000i3.0000+13.0000i
4.0000+14.0000i5.0000+15.0000i6.0000+16.0000i
3.3.2利用M文件创建和保存数组
【例3.3.2-1】创建和保存数组AM的MyMatrix.m文件。
%MyMatrix.mCreationandpreservationofmatrixAM
AM=[101,102,103,104,105,106,107,108,109;...
201,202,203,204,205,206,207,208,209;...
301,302,303,304,305,306,307,308,309];
3.4二维数组元素的标识
3.4.1“全下标”标识
3.4.2“单下标”标识
3.4.3“逻辑1”标识
【*例3.4.3-1】找出数组
中所有绝对值大于3的元素。
A=zeros(2,5);%预生成一个(2*5)全零数组
A(:
)=-4:
5%运用“全元素”赋值法获得A
L=abs(A)>3%产生与A同维的“0-1”逻辑值数组
islogical(L)%判断L是否逻辑值数组。
输出若为1,则是。
X=A(L)%把L中逻辑值1对应的A元素取出
A=
-4-2024
-3-1135
L=
10001
00001
ans=
1
X=
-4
4
5
【*例3.4.3-2】演示逻辑数组与一般双精度数值数组的关系和区别。
(本例在例3.4.3-1基础上进行)。
(1)逻辑数组与双精度数组的相同之处
Num=[1,0,0,0,1;0,0,0,0,1];%产生与L数组外表完全相同的“双精度数组”
N_L=Num==L%假如Num与L数值相等,则应得1。
c_N=class(Num)%用class指令检查Num的类属
c_L=class(L)%用class指令检查L的类属
N_L=
11111
11111
c_N=
double
c_L=
double
(2)逻辑数组与一般双精度数组的差别
islogical(Num)%检查Num是否属于逻辑数组类
Y=A(Num)%试探Num能否象L一样具有标识作用
ans=
0
?
?
?
Indexintomatrixisnegativeorzero.Seereleasenotesonchangesto
logicalindices.
3.5二维数组的子数组寻访和赋值
【*例3.5-1】不同赋值方式示例。
A=zeros(2,4)%创建
的全零数组
A=
0000
0000
A(:
)=1:
8%全元素赋值方式
A=
1357
2468
s=[235];%产生单下标数组行数组
A(s)%由“单下标行数组”寻访产生A元素组成的行数组
Sa=[102030]'%Sa是长度为3的“列数组”
A(s)=Sa%单下标方式赋值
ans=
235
Sa=
10
20
30
A=
120307
10468
A(:
[23])=ones
(2)%双下标赋值方式:
把A的第2、3列元素全赋为1
A=
1117
10118
3.6执行数组运算的常用函数
3.6.1函数数组运算规则的定义:
3.6.2执行数组运算的常用函数
【*例3.6.2-1】演示pow2的数组运算性质。
A=[1:
4;5:
8]%生成
数组
A=
1234
5678
pow2(A)%计算
的结果也是
数组
ans=
24816
3264128256
3.7数组运算和矩阵运算
3.7.1数组运算和矩阵运算指令对照汇总
【*例3.7.1-1】两种不同转置的比较
clear;A=zeros(2,3);
A(:
)=1:
6;%全元素赋值法
A=A*(1+i)%运用标量与数组乘产生复数矩阵
A_A=A.'%数组转置,即非共轭转置
A_M=A'%矩阵转置,即共轭转置
A=
1.0000+1.0000i3.0000+3.0000i5.0000+5.0000i
2.0000+2.0000i4.0000+4.0000i6.0000+6.0000i
A_A=
1.0000+1.0000i2.0000+2.0000i
3.0000+3.0000i4.0000+4.0000i
5.0000+5.0000i6.0000+6.0000i
A_M=
1.0000-1.0000i2.0000-2.0000i
3.0000-3.0000i4.0000-4.0000i
5.0000-5.0000i6.0000-6.0000i
3.8多项式的表达方式及其操作
3.8.1多项式的表达和创建
3.8.1.1多项式表达方式的约定
3.8.1.2多项式行向量的创建方法
【*例3.8.1.2-1】求3阶方阵A的特征多项式。
A=[111213;141516;171819];
PA=poly(A)%A的特征多项式
PPA=poly2str(PA,'s')%以较习惯的方式显示多项式
PA=
1.0000-45.0000-18.0000-0.0000
PPA=
s^3-45s^2-18s-2.8387e-015
【*例3.8.1.2-2】由给定根向量求多项式系数向量。
R=[-0.5,-0.3+0.4*i,-0.3-0.4*i];%根向量
P=poly(R)%R的特征多项式
PR=real(P)%求PR的实部
PPR=poly2str(PR,'x')
P=
1.00001.10000.55000.1250
PR=
1.00001.10000.55000.1250
PPR=
x^3+1.1x^2+0.55x+0.125
3.8.2多项式运算函数
【*例3.8.2-1】求
的“商”及“余”多项式。
p1=conv([1,0,2],conv([1,4],[1,1]));%计算分子多项式
p2=[1011];%注意缺项补零
[q,r]=deconv(p1,p2);
cq='商多项式为';cr='余多项式为';
disp([cq,poly2str(q,'s')]),disp([cr,poly2str(r,'s')])
商多项式为s+5
余多项式为5s^2+4s+3
【*例3.8.2-2】两种多项式求值指令的差别。
S=pascal(4)%生成一个4阶方阵
P=poly(S);PP=poly2str(P,'s')
PA=polyval(P,S)%独立变量取数组S元素时的多项式值
PM=polyvalm(P,S)%独立变量取矩阵S时的多项式值
S=
1111
1234
13610
141020
PP=
s^4-29s^3+72s^2-29s+1
PA=
1.0e+004*
0.00160.00160.00160.0016
0.00160.0015-0.0140-0.0563
0.0016-0.0140-0.2549-1.2089
0.0016-0.0563-1.2089-4.3779
PM=
1.0e-011*
-0.00770.0053-0.00960.0430
-0.00680.0481-0.01100.1222
0.00750.1400-0.00950.2608
0.04300.2920-0.00070.4737
【*例3.8.2-3】部分分式展开。
a=[1,3,4,2,7,2];%分母多项式系数向量
b=[3,2,5,4,6];%分子多项式系数向量
[r,s,k]=residue(b,a)
r=
1.1274+1.1513i
1.1274-1.1513i
-0.0232-0.0722i
-0.0232+0.0722i
0.7916
s=
-1.7680+1.2673i
-1.7680-1.2673i
0.4176+1.1130i
0.4176-1.1130i
-0.2991
k=
[]
3.9标准数组生成函数和数组操作函数
3.9.1标准数组生成函数
【*例3.9.1-1】标准数组产生的演示。
ones(1,2)%产生长度为2的全1行数组
ans=
11
ones
(2)%产生
的全1阵
ans=
11
11
randn('state',0)%把正态随机数发生器置0
randn(2,3)%产生
的正态随机阵
ans=
-0.43260.1253-1.1465
-1.66560.28771.1909
D=eye(3)%产生
的单位阵
D=
100
010
001
diag(D)%取D阵的对角元
ans=
1
1
1
diag(diag(D))%内diag取D的对角元,外diag利用一维数组生成对角阵
ans=
100
010
001
repmat(D,1,3)%在水平方向“铺放”三个D阵
ans=
100100100
010010010
001001001
3.9.2数组操作函数
【*例3.9.2-1】diag与reshape的使用演示。
a=-4:
4%产生一维数组
A=reshape(a,3,3)%把一维数组a重排成
的二维数组
a=
-4-3-2-101234
A=
-4-12
-303
-214
a1=diag(A,1)%取A阵“第一上对角线”的元素
a1=
-1
3
A1=diag(a1,-1)%产生以a1数组元素为“第一下对角线”元素的二维数组
A1=
000
-100
030
【*例3.9.2-2】数组转置、对称交换和旋转操作后果的对照比较。
A
A=
-4-12
-303
-214
A.'%转置
ans=
-4-3-2
-101
234
flipud(A)%上下对称交换
ans=
-214
-303
-4-12
fliplr(A)%左右对称交换
ans=
2-1-4
30-3
41-2
rot90(A)%逆时针旋转90度
ans=
234
-101
-4-3-2
【*例3.9.2-3】演示Kronecker乘法不具备“可交换规律”。
B=eye
(2)%产生
单位阵
C=reshape(1:
4,2,2)%利用重组操作产生
矩阵
B=
10
01
C=
13
24
kron(B,C)
ans=
1300
2400
0013
0024
kron(C,B)
ans=
1030
0103
2040
0204
3.10数组构作技法综合
【*例3.10-1】数组的扩展。
(1)数组的赋值扩展法
A=reshape(1:
9,3,3)%创建
数组A
A=
147
258
369
A(5,5)=111%扩展为
数组。
扩展部分除(5,5)元素为111外,其余均为0。
A=
14700
25800
36900
00000
0000111
A(:
6)=222%标量对子数组赋值,并扩展为
数组。
A=
14700222
25800222
36900222
00000222
0000111222
(2)多次寻访扩展法
AA=A(:
[1:
6,1:
6])%相当于指令repmat(A,1,2),读者可以试试。
AA=
1470022214700222
2580022225800222
3690022236900222
0000022200000222
00001112220000111222
(3)合成扩展法
B=ones(2,6)%创建
全1数组
B=
111111
111111
AB_r=[A;B]%行数扩展合成
AB_r=
14700222
25800222
36900222
00000222
0000111222
111111
111111
AB_c=[A,B(:
1:
5)']%列数扩展合成
AB_c=
1470022211
2580022211
3690022211
0000022211
000011122211
【*例3.10-2】提取子数组,合成新数组。
A%重显A数组
A=
14700222
25800222
36900222
00000222
0000111222
AB_BA=triu(A,1)+tril(A,-1)%利用操作函数,使主对角元素为全0
AB_BA=
04700222
20800222
36000222
00000222
00000222
AB1=[A(1:
2,end:
-1:
1);B(1,:
)]%灵活合成
AB1=
22200741
22200852
111111
【*例3.10-3】单下标寻访和reshape指令演示。
clear%清除内存变量
A=reshape(1:
16,2,8)%变一维数组成
数组
A=
13579111315
246810121416
reshape(A,4,4)%变
数组为
数组
ans=
15913
261014
371115
481216
s=[13689111416];%定义“单下标”数组
A(s)=0%利用“单下标”数组对A的元素重新赋值
A=
0057001315
2400101200
【*例3.10-4】“对列(或行)同加一个数”三种的操作方法。
clear,A=reshape(1:
9,3,3)
A=
147
258
369
b=[123];A_b1=A-b([111],:
)%使A的第1,2,3行分别减b向量[123]
A_b1=
024
135
246
A_b2=A-repmat(b,3,1)
A_b2=
024
135
246
A_b3=[A(:
1)-b
(1),A(:
2)-b
(2),A(:
3)-b(3)]
A_b3=
024
135
246
【*例3.10-5】逻辑函数的运用示例。
randn('state',1),R=randn(3,6)%创建正态随机阵
R=
0.86440.8735-1.10270.1684-0.5523-0.6149
0.0942-0.43800.3962-1.9654-0.8197-0.2546
-0.8519-0.4297-0.9649-0.74431.1091-0.2698
L=abs(R)<0.5|abs(R)>1.5%不等式条件运算,结果给出逻辑数组
L=
000100
111101
010001
R(L)=0%“逻辑1”对应的元素赋0值。
R=
0.86440.8735-1.10270-0.5523-0.6149
0000-0.81970
-0.85190-0.9649-0.74431.10910
s=(find(R==0))'%利用find获得符合关系等式条件的元素“单下标”
s=
256810111718
R(s)=111%利用“单下标”定位赋值
R=
0.86440.8735-1.1027111.0000-0.5523-0.6149
111.0000111.0000111.0000111.0000-0.8197111.0000
-0.8519111.0000-0.9649-0.74431.1091111.0000
[ii,jj]=find(R<0);%利用find获得符合关系等式条件的元素“双下标”
disp(ii'),disp(jj')
3133121
1334556
3.11高维数组
3.11.1高维数组的创建
【*例3.11.1-1】“全
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 参考教程第三章 数值数组及其运算 参考 教程 第三 数值 数组 及其 运算