Matlab学习笔记二.docx
《Matlab学习笔记二.docx》由会员分享,可在线阅读,更多相关《Matlab学习笔记二.docx(21页珍藏版)》请在冰豆网上搜索。
![Matlab学习笔记二.docx](https://file1.bdocx.com/fileroot1/2023-2/22/9f0dee70-7c09-4829-a498-1f909232f6f9/9f0dee70-7c09-4829-a498-1f909232f6f91.gif)
Matlab学习笔记二
Matlab学习笔记二
26.%例3-19块状复制函数repmat
>>A=eye
(2)
repmat(A,3,3)
A=
10
01
ans=
101010
010101
101010
010101
101010
010101
27.逻辑索引
>>A=rand(5)
A=
0.95010.76210.61540.40570.0579
0.23110.45650.79190.93550.3529
0.60680.01850.92180.91690.8132
0.48600.82140.73820.41030.0099
0.89130.44470.17630.89360.1389
>>B=A>0.8
B=
10000
00010
00111
01000
10010
>>A(B)=0
A=
00.76210.61540.40570.0579
0.23110.45650.791900.3529
0.60680.0185000
0.486000.73820.41030.0099
00.44470.176300.1389
28.数组数据类型测试函数
>>A=[12;35]
isnumeric(A)%返回Boolean值,指出表达式的运算结果是否为数字。
isreal(A)%isreal判断是不是实数
isfloat(A)
isinteger(A)
ischar(A)
A=
12
35
ans=
1
ans=
1
ans=
1
ans=
0
ans=
0
29.数组裁剪
A=magic(8)
A(1:
2:
5,3:
7)%提取数组A的1、3、5行,3到7列
A(2,:
)%提取数组A第2行所有元素
A(:
3:
2:
7)%提取数组A第3、5、7列所有元素
A([321],[658])%提取第3、2、1行的第6、5、8列元素
A(50:
60)%单下标索引裁减数组,提取第50到60号元素
30.数组查找函数find
>>A=rand(3,5)
A>0.3
A<0.5
(A>0.3)&(A<0.5)
A=
0.20280.27220.74680.46600.5252
0.19870.19880.44510.41860.2026
0.60380.01530.93180.84620.6721
ans=
00111
00110
10111
ans=
11010
11111
01000
ans=
00010
00110
00000
%find逻辑数组中的非零元素,返回符合关系的元素索引
>>find((A>0.3)&(A<0.5))
ans=
8
10
11
%实现元素访问
>>A(find((A>0.3)&(A<0.5)))
ans=
0.4451
0.4660
0.4186
31.数组排序
>>A=rand(1,8)
[B,I]=sort(A,'descend')
A=
0.83810.01960.68130.37950.83180.50280.70950.4289
B=
0.83810.83180.70950.68130.50280.42890.37950.0196%降序排序结果
I=
15736842%矩阵元素索引
>>A(I)
ans=
0.83810.83180.70950.68130.50280.42890.37950.0196
%对每一列进行升序排序
>>C=rand(3,6)
sort(C)
C=
0.30460.68220.15090.86000.49660.6449
0.18970.30280.69790.85370.89980.8180
0.19340.54170.37840.59360.82160.6602
ans=
0.18970.30280.15090.59360.49660.6449
0.19340.54170.37840.85370.82160.6602
0.30460.68220.69790.86000.89980.8180
%指定对每一行进行升序排序,并返回排序后各元素的列号
>>[D,I]=sort(C,2)%2代表按行排序,默认是升序
D=
0.15090.30460.49660.64490.68220.8600
0.18970.30280.69790.81800.85370.8998
0.19340.37840.54170.59360.66020.8216
I=
315624
123645
132465
%对二维数组不能通过sort返回的单下标索引产生排序的数组
>>C(I)
ans=
0.19340.30460.30280.54170.18970.6822
0.30460.18970.19340.54170.68220.3028
0.30460.19340.18970.68220.54170.3028
32.矩阵除法
>>A=[356;214;256]
B=randn(3)
A/B
A*inv(B)
A\B
pinv(A)*B
A=
356
214
256
B=
-0.43260.28771.1892
-1.6656-1.1465-0.0376
0.12531.19090.3273
ans=
4.9369-3.08030.0406
3.9586-2.4124-2.4389
4.7620-2.38060.7564
ans=
4.9369-3.08030.0406
3.9586-2.4124-2.4389
4.7620-2.38060.7564
ans=
-0.5579-0.90320.8619
0.59020.57350.3559
-0.28500.0216-0.5293
ans=
-0.5579-0.90320.8619
0.59020.57350.3559
-0.28500.0216-0.5293
33.数组大小
>>A=[]
size(A)
B=[12345]
length(B)
size(B)
size(B')
C=[1:
5;2:
6]
size(C)
length(C)
numel(C)
A=
[]
ans=
00
B=
12345
ans=
5
ans=
15
ans=
51
C=
12345
23456
ans=
25
ans=
5
ans=
10
34.数组的内存占用
>>A=[325]
whos
A=
325
NameSizeBytesClass
A1x324doublearray
Grandtotalis3elementsusing24bytes
35.数组结构测试函数
>>A=32
isscalar(A)%标量
B=1:
5
isvector(B)%向量
isempty(B)
B=[]
isempty(B)
A=
32
ans=
1
B=
12345
ans=
1
ans=
0
B=
[]
ans=
1
36.数组维度
>>A=[]
ndims(A)
B=2
ndims(B)
C=1:
5
ndims(C)
D=[12;21]
ndims(D)
A=
[]
ans=
2
B=
2
ans=
2
C=
12345
ans=
2
D=
12
21
ans=
2
37.数组元素的索引与寻址
A=[4256;3170;12457823]%创建数组
A(2,3)%双下标索引访问数组第2行第3列元素
A
(2)%单下标索引访问数组第2个元素(即第2行第1列)
A(7)%单下标索引访问数组第7个元素(即第1行第3列)
A(3:
5)%单下标索引访问数组第3到5位的元素(即第1列第3行和第2列第1、2行)
A(2,1:
4)%双下标索引访问数组第2行,第1到4列的元素
A([3,1],2)%双下标索引访问数组第3、第1行,第2列的元素
A([3,1],[2,1])%双下标索引访问数组第3、第1行,第2、第1列的元素
A(7)=100%对数组第7个元素(即第1行第3列)重新赋值
38.数组元素删除
A=magic(7)
A(1:
3:
8,:
)=[]
A(:
[356])=[]
39.数组运算函数
A=magic(4)
sqrt(A)
sqrtm(A)
exp(A)
expm(A)
40.索引扩展
>>A=eye(3)
A(4,6)=25%索引扩展
A(5,2)=3%索引扩展
A(5,5)=10%索引寻址修改零元素
A=
100
010
001
A=
100000
010000
001000
0000025
A=
100000
010000
001000
0000025
030000
A=
100000
010000
001000
0000025
0300100
41.通过cat函数扩展数组
A=rand(3,5)
B=eye(3)
C=magic(5)
cat(1,A,B)%列数不同,不能垂直连接
cat(2,A,B)%行数相同,可以水平连接
cat(1,A,C)%列数相同,可以垂直连接
cat(2,A,C)%行数不同,不能水平连接
>>cat(2,A,B)%行数相同,可以水平连接
ans=
0.95010.48600.45650.44470.92181.000000
0.23110.89130.01850.61540.738201.00000
0.60680.76210.82140.79190.1763001.0000
cat(1,A,C)%列数相同,可以垂直连接
ans=
0.95010.48600.45650.44470.9218
0.23110.89130.01850.61540.7382
0.60680.76210.82140.79190.1763
17.000024.00001.00008.000015.0000
23.00005.00007.000014.000016.0000
4.00006.000013.000020.000022.0000
10.000012.000019.000021.00003.0000
11.000018.000025.00002.00009.0000
>>horzcat(A,B)
ans=
0.95010.48600.45650.44470.92181.000000
0.23110.89130.01850.61540.738201.00000
0.60680.76210.82140.79190.1763001.0000
>>vertcat(A,C)
ans=
0.95010.48600.45650.44470.9218
0.23110.89130.01850.61540.7382
0.60680.76210.82140.79190.1763
17.000024.00001.00008.000015.0000
23.00005.00007.000014.000016.0000
4.00006.000013.000020.000022.0000
10.000012.000019.000021.00003.0000
11.000018.000025.00002.00009.0000
42.%转置
>>B=[2-i,3+4i,2,5i;6+i,4-i,2i,7]
B'
ctranspose(B)%转置
B=
2.0000-1.0000i3.0000+4.0000i2.00000+5.0000i
6.0000+1.0000i4.0000-1.0000i0+2.0000i7.0000
ans=
2.0000+1.0000i6.0000-1.0000i
3.0000-4.0000i4.0000+1.0000i
2.00000-2.0000i
0-5.0000i7.0000
ans=
2.0000+1.0000i6.0000-1.0000i
3.0000-4.0000i4.0000+1.0000i
2.00000-2.0000i
0-5.0000i7.0000
43.矩阵的特征值和特征向量
在MATLAB中,计算矩阵A的特征值和特征向量的函数是eig(A),常用的调用格式有5种:
(1)E=eig(A):
求矩阵A的全部特征值,构成向量E。
(2)[V,D]=eig(A):
求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。
(3)[V,D]=eig(A,'nobalance'):
与第2种格式类似,但第2种格式中先对A作相似变换后求矩阵A的特征值和特征向量,
而格式3直接求矩阵A的特征值和特征向量。
(4)E=eig(A,B):
由eig(A,B)返回N×N阶方阵A和B的N个广义特征值,构成向量E。
(5)[V,D]=eig(A,B):
由eig(A,B)返回方阵A和B的N个广义特征值,构成N×N阶对
角阵D,其对角线上的N个元素即为相应的广义特征值,同时将返回相应的特征向
量构成N×N阶满秩矩阵,且满足AV=BVD
>>A=[122;268;2813]
eig(A)
A=
122
268
2813
ans=
0.0859
1.2477
18.6664
44.Cholesky分解
>>A=[122;268;2813]
R=chol(A)
R'*R
A=
122
268
2813
R=
1.00002.00002.0000
01.41422.8284
001.0000
ans=
122
268
2813
45.LU分解
>>A=rand(3)
[L,U]=lu(A)
L*U
[L,U,P]=lu(A)
A=
0.40570.41030.3529
0.93550.89360.8132
0.91690.05790.0099
L=
0.4337-0.02781.0000
1.000000
0.98021.00000
U=
0.93550.89360.8132
0-0.8180-0.7872
00-0.0216
ans=
0.40570.41030.3529
0.93550.89360.8132
0.91690.05790.0099
L=
1.000000
0.98021.00000
0.4337-0.02781.0000
U=
0.93550.89360.8132
0-0.8180-0.7872
00-0.0216
P=
010
001
100
46.QR分解
A=rand(3)
[Q,R]=qr(A)
Q'*Q
Q*R
B=rand(2,4)
[QQ,RR]=qr(B)
QQ*QQ'
QQ*RR
47.对角元素操作
>>A=rand(3)
diag(A)
trace(A)
sum(diag(A))
A=
0.13890.60380.0153
0.20280.27220.7468
0.19870.19880.4451
ans=
0.1389
0.2722
0.4451
ans=
0.8562
ans=
0.8562
>>tril(A,0)
ans=
0.138900
0.20280.27220
0.19870.19880.4451
>>tril(A,1)
ans=
0.13890.60380
0.20280.27220.7468
0.19870.19880.4451
>>tril(A,2)
ans=
0.13890.60380.0153
0.20280.27220.7468
0.19870.19880.4451
48.矩阵的标准正交基
A=rand(3)
B=orth(A)
B'*B
A=
0.53410.83850.7027
0.72710.56810.5466
0.30930.37040.4449
B=
-0.69790.6002-0.3907
-0.6098-0.7841-0.1153
-0.37560.15770.9133
ans=
1.00000.0000-0.0000
0.00001.00000.0000
-0.00000.00001.0000
49.矩阵的范数和条件数
norm(magic(3))
norm(inv(magic(3)))
cond(magic(3))
cond(inv(magic(3)))
cond(zeros(3,3))
ans=
15
ans=
0.2887
ans=
4.3301
ans=
4.3301
ans=
Inf
50.矩阵的特征值、特征向量和特征多项式
>>A=rand(3,3)
d=eig(A)
[V,D]=eig(A)
A*V
V*D
roots(poly(A))
A=
0.69460.95680.1730
0.62130.52260.9797
0.79480.88010.2714
d=
1.9726
-0.1728
-0.3112
V=
-0.5399-0.74020.6566
-0.61770.6724-0.7267
-0.5718-0.00790.2020
D=
1.972600
0-0.17280
00-0.3112
ans=
-1.06490.1279-0.2043
-1.2185-0.11620.2261
-1.12800.0014-0.0629
ans=
-1.06490.1279-0.2043
-1.2185-0.11620.2261
-1.12800.0014-0.0629
ans=
1.9726
-0.3112
-0.1728
51.矩阵的秩
>>rank(magic(3))
rank(eye(5))
rank(zeros(2,4))
ans=
3
ans=
5
ans=
0
52.矩阵行列式
A=magic(3)
det(A)
A=
816
357
492
ans=
-360
53.稀疏矩阵的创建
A=(rand(20)>0.99);
S=sparse(A)
whos
S=
(20,2)1
(13,6)1
(11,11)1
NameSizeBytesClass
A20x20400logicalarray
B3x372doublearray
C4x396doublearray
D3x372doublearray
L3x372doublearray
P3x372doublearray
R3x372doublearray
S20x2099logicalarray(sparse)
U3x372doublearray
V3x372doublearray
a3x124doublearray
ans1x18doublearray
b2x116doublearray
c4x132doublearray
d3x124doublearray
x3x124doublearray
Grandtotalis494elementsusing1227bytes