精通与掌握MATLAB 4文档格式.docx
《精通与掌握MATLAB 4文档格式.docx》由会员分享,可在线阅读,更多相关《精通与掌握MATLAB 4文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
x(find(x>
0.5))
0.95010.60680.8913
x([12344321])
0.95010.23110.60680.48600.48600.60680.2311
Column8
0.9501
【例2.2-2】子数组的赋值(Assign)。
x(3)=0
0.95010.231100.48600.8913
x([14])=[11]
1.00000.231101.00000.8913
.3二维数组的创建
.3.1直接输入法
【例2.3-1】在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.3-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.2利用M文件创建和保存数组
【例2.3-3】创建和保存数组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];
.4二维数组元素的标识
.4.1“全下标”标识
.4.2“单下标”标识
.4.3“逻辑1”标识
【例2.4-1】找出数组
中所有绝对值大于3的元素。
A=zeros(2,5);
A(:
)=-4:
5
L=abs(A)>
3
islogical(L)
X=A(L)
A=
-4-2024
-3-1135
L=
10001
00001
1
X=
-4
4
5
.5二维数组的子数组寻访和赋值
【例2.5-1】不同赋值方式示例。
A=zeros(2,4)
0000
0000
)=1:
8
1357
2468
s=[235];
A(s)
Sa=[102030]'
A(s)=Sa
235
Sa=
10
20
30
120307
10468
[23])=ones
(2)
1117
10118
.6执行数组运算的常用函数
.6.1函数数组运算规则的定义:
.6.2执行数组运算的常用函数
.7数组运算和矩阵运算
.7.1数组运算和矩阵运算指令对照汇总
【例2.7-1】两种不同转置的比较
clear;
A=zeros(2,3);
6;
A=A*(1+i)
A_A=A.'
A_M=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
.8标准数组生成函数和数组操作函数
.8.1标准数组生成函数
【例2.8-1】标准数组产生的演示。
ones(1,2)
11
randn('
0)
randn(2,3)
-0.43260.1253-1.1465
-1.66560.28771.1909
D=eye(3)
D=
100
010
001
diag(D)
1
diag(diag(D))
.8.2数组操作函数
【例2.8-2】reshape的使用演示。
a=-4:
4
A=reshape(a,3,3)
a=
-4-3-2-101234
-4-12
-303
-214
【例2.8-3】数组转置、对称交换和旋转操作后果的对照比较。
A
A.'
-4-3-2
-101
234
flipud(A)
-214
-4-12
fliplr(A)
2-1-4
30-3
41-2
【例2.8-4】演示Kronecker乘法不具备“可交换规律”。
B=eye
(2)
C=reshape(1:
4,2,2)
B=
10
01
13
24
kron(B,C)
1300
2400
0013
0024
kron(C,B)
1030
0103
2040
0204
.9数组构作技法综合
【例2.9-1】数组的扩展。
A=reshape(1:
9,3,3)
147
258
369
A(5,5)=111
14700
25800
36900
00000
0000111
6)=222
14700222
25800222
36900222
00000222
0000111222
AA=A(:
[1:
6,1:
6])
AA=
1470022214700222
2580022225800222
3690022236900222
0000022200000222
00001112220000111222
B=ones(2,6)
111111
111111
AB_r=[A;
B]
AB_r=
0000111222
AB_c=[A,B(:
1:
5)'
]
AB_c=
1470022211
2580022211
3690022211
0000022211
000011122211
【例2.9-2】单下标寻访和reshape指令演示。
clear
16,2,8)
13579111315
246810121416
reshape(A,4,4)
15913
261014
371115
481216
s=[13689111416];
A(s)=0
0057001315
2400101200
【例2.9-3】逻辑函数的运用示例。
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
000100
111101
010001
R(L)=0
0.86440.8735-1.10270-0.5523-0.6149
0000-0.81970
-0.85190-0.9649-0.74431.10910
s=(find(R==0))'
s=
256810111718
R(s)=111
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==111);
disp(ii'
),disp(jj'
22321223
12234466
.10高维数组
.10.1高维数组的创建
【例2.10-1】“全下标”元素赋值方式创建高维数组演示。
A(2,2,2)=1
:
1)=
00
2)=
11
B(2,5,:
3
B(:
00002
3)=
00003
【例2.10-2】低维数组合成高维数组。
clear,A=ones(2,3);
2)=ones(2,3)*2;
3)=ones(2,3)*3
111
222
333
333
【例2.10-3】由函数ones,zeros,rand,randn直接创建标准高维数组的示例。
1111),rand(2,4,3)
ans(:
0.62780.97480.25850.6949
0.25440.23050.03130.1223
0.48890.38980.84890.0587
0.91380.30710.42600.6331
0.28020.20730.74380.2714
0.40510.20330.45660.2421
【例2.10-4】借助cat,repmat,reshape等函数构作高维数组。
cat(3,ones(2,3),ones(2,3)*2,ones(2,3)*3)
repmat(ones(2,3),[1,1,3])
111
reshape(1:
12,2,2,3)
24
57
68
911
1012
.10.2高维数组的标识
【例2.10-5】维数、大小和长度
24,2,3,4);
dim_A=ndims(A)
size_A=size(A)
L_A=length(A)
dim_A=
3
size_A=
234
L_A=
4
.10.3高维数组构作和操作函数汇总
【例2.10-6】“孤维”的撤消和降维。
18,2,3,3)
135
246
7911
81012
131517
141618
B=cat(4,A(:
1),A(:
2),A(:
3))
1,1)=
1,2)=
1,3)=
size(B)
2313
C=squeeze(B)
C(:
size(C)
233
【例2.10-7】赋“空阵”值操作。
2:
3,:
)=[]
B=A;
2
7
8
13
14
size(A)
213
A_1=squeeze(A)
A_1=
1713
2814
size(B)
1,:
)=[]
Emptyarray:
2-by-0-by-3
.11“非数”和“空”数组
.11.1非数NaN
【例2.11-1】非数的产生和性质演示。
a=0/0,b=0*log(0),c=inf-inf
Warning:
Dividebyzero.
NaN
Logofzero.
b=
c=
NaN
0*a,sin(a)
class(a)
isnan(a)
double
【例2.11-2】非数元素的寻访
0)
R=rand(2,5);
R(1,5)=NaN;
R(2,3)=NaN
0.95010.60680.89130.4565NaN
0.23110.4860NaN0.01850.4447
isnan(R)
00100
Linear_index=find(isnan(R))
[r_index,c_index]=ind2sub(size(R),Linear_index);
disp('
r_indexc_index'
),disp([r_indexc_index])
Linear_index=
6
9
r_indexc_index
23
15
.11.2“空”数组
【例2.11-3】关于“空”数组的算例。
a=[],b=ones(2,0),c=zeros(2,0),d=eye(2,0),f=rand(2,3,0,4)
[]
Emptymatrix:
2-by-0
d=
f=
2-by-3-by-0-by-4
class(a)
isnumeric(a)
isempty(a)
whicha
ndims(a)
size(a)
aisavariable.
00
A=reshape(-4:
5,2,5)
-3-1135
[2,4])=[]
-404
-315
.12关系操作和逻辑操作
.12.1关系操作
【例2.12-1】关系运算示例。
A=1:
9,B=10-A,r0=(A<
4),r1=(A==B)
123456789
987654321
r0=
111000000
r1=
000010000
【例2.12-2】关系运算运用之一:
求近似极限,修补图形缺口。
(见图2.12-1)
t=-2*pi:
pi/10:
2*pi;
y=sin(t)./t;
tt=t+(t==0)*eps;
yy=sin(tt)./tt;
subplot(1,2,1),plot(t,y),axis([-7,7,-0.5,1.2]),
xlabel('
t'
残缺图形'
)
subplot(1,2,2),plot(tt,yy),axis([-7,7,-0.5,1.2])
yy'
正确图形'
图2.12-1极限处理前后的图形对照
.12.2逻辑操作
【例2.12-3】逻辑操作示例。
9,L1=~(A>
5)
L2=(A>
3)&
(A<
7)
L1=
111110000
L2=
000111000
【例2.12-4】逻辑操作应用之一:
逐段解析函数的计算和表现。
本例演示削顶整流正弦半波的计算和图形绘制。
(见图2.12-2)
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);
w_n=~w;
z2=w*sin(pi/3)+w_n.*z1;
subplot(1,3,1),plot(t,y,'
:
r'
subplot(1,3,2),plot(t,z1,'
),axis([010-11])
subplot(1,3,3),plot(t,z2,'
-b'
),axis([010-11])
图2.12-2逐段解析函数的产生
.12.3关系、逻辑函数
习题2