特殊矩阵
1、通用的特殊矩阵
(1)0矩阵
>> zeros(4)%等边矩阵
ans =
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
>> zeros(4,5)%自定义长宽
ans =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
(2)1矩阵
>> ones(4)%等边矩阵
ans =
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
>> ones(4,5)%自定义长宽
ans =
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
(3)单位矩阵
>> eye(4)%等边矩阵
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
>> eye(4,5)%自定义长宽
ans =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
(4)随机矩阵
>> rand(4)%等边矩阵
ans =
0.4324 0.1734 0.0605 0.6569
0.8253 0.3909 0.3993 0.6280
0.0835 0.8314 0.5269 0.2920
0.1332 0.8034 0.4168 0.4317
>> rand(4)%等边矩阵
ans =
0.4324 0.1734 0.0605 0.6569
0.8253 0.3909 0.3993 0.6280
0.0835 0.8314 0.5269 0.2920
0.1332 0.8034 0.4168 0.4317
案例:
产生一个5阶随机方阵A,元素为[5,45]区间的随机整数,然后判断A的元素能否被5整除,能整除的输出0,不能整除的使出1;
%方法一:
>> A = fix(rand(5) * 40 + 5)
A =
15 11 23 7 37
28 12 32 17 33
5 21 32 26 43
22 8 30 31 26
17 28 6 21 18
>> B = rem(A,5)
B =
0 1 3 2 2
3 2 2 2 3
0 1 2 1 3
2 3 0 1 1
2 3 1 1 3
>> B ~= 0
ans =
5×5 logical 数组
0 1 1 1 1
1 1 1 1 1
0 1 1 1 1
1 1 0 1 1
1 1 1 1 1
%方法二:
>> A = fix(rand(5) * 40 + 5)
A =
38 29 21 23 11
18 20 23 6 18
36 41 35 12 29
32 5 17 33 12
5 23 36 23 34
>> mod(A,5) == 0
ans =
5×5 logical 数组
0 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 1 0 0 0
1 0 0 0 0
2、用于专门学科的特殊矩阵
magic()%魔方矩阵
vander()%范德蒙矩阵
hilb()%希尔伯特矩阵
toeoilte()%托普利兹矩阵
compan()%伴随矩阵
pascal()%帕斯卡矩阵
3、矩阵变换
(1)对角线矩阵
diag(V,k)
其功能是产生一个对角阵,其中第k条对角线的元素即为向量V的元素
>> A
A =
38 29 21 23 11
18 20 23 6 18
36 41 35 12 29
32 5 17 33 12
5 23 36 23 34
>> D = diag(A)
D =
38
20
35
33
34
>> D = diag(A,2)
D =
21
6
29
(2)三角阵
triu()
其功能是求矩阵A的第k条对角线以上的元素。
>> A = fix(rand(4) * 20)
A =
18 16 17 19
12 11 0 14
12 3 9 10
17 4 3 9
>> triu(A)
ans =
18 16 17 19
0 11 0 14
0 0 9 10
0 0 0 9
>> triu(A,1)
ans =
0 16 17 19
0 0 0 14
0 0 0 10
0 0 0 0
>> tril(A)
ans =
18 0 0 0
12 11 0 0
12 3 9 0
17 4 3 9
>> tril(A,3)
ans =
18 16 17 19
12 11 0 14
12 3 9 10
17 4 3 9
3、矩阵转置与旋转
(1)矩阵的转置
>> A
A =
38 29 21 23 11
18 20 23 6 18
36 41 35 12 29
32 5 17 33 12
5 23 36 23 34
>> A'
ans =
38 18 36 32 5
29 20 41 5 23
21 23 35 17 36
23 6 12 33 23
11 18 29 12 34
(2)矩阵的旋转
>> A
A =
38 29 21 23 11
18 20 23 6 18
36 41 35 12 29
32 5 17 33 12
5 23 36 23 34
>> rot90(A)
ans =
11 18 29 12 34
23 6 12 33 23
21 23 35 17 36
29 20 41 5 23
38 18 36 32 5
>> rot90(A,2)
ans =
34 23 36 23 5
12 33 17 5 32
29 12 35 41 36
18 6 23 20 18
11 23 21 29 38
(3)矩阵的左右旋转
>> A
A =
38 29 21 23 11
18 20 23 6 18
36 41 35 12 29
32 5 17 33 12
5 23 36 23 34
>> fliplr(A)
ans =
11 23 21 29 38
18 6 23 20 18
29 12 35 41 36
12 33 17 5 32
34 23 36 23 5
(4)矩阵的上下旋转
>> A
A =
38 29 21 23 11
18 20 23 6 18
36 41 35 12 29
32 5 17 33 12
5 23 36 23 34
>> flipud(A)
ans =
5 23 36 23 34
32 5 17 33 12
36 41 35 12 29
18 20 23 6 18
38 29 21 23 11
4、矩阵求值
(1)行列式函数的值
>> A
A =
38 29 21 23 11
18 20 23 6 18
36 41 35 12 29
32 5 17 33 12
5 23 36 23 34
>> det(A)
ans =
1.6085e+06
(2)矩阵的秩与迹
%矩阵的秩
>> A
A =
38 29 21 23 11
18 20 23 6 18
36 41 35 12 29
32 5 17 33 12
5 23 36 23 34
>> rank(A)
ans =
5
%矩阵的迹
>> A
A =
38 29 21 23 11
18 20 23 6 18
36 41 35 12 29
32 5 17 33 12
5 23 36 23 34
>> trace(A)
ans =
160
(3)矩阵的条件数
>> A
A =
38 29 21 23 11
18 20 23 6 18
36 41 35 12 29
32 5 17 33 12
5 23 36 23 34
>> cond(A)
ans =
63.4343
(4)矩阵的特征值与特征向量
>> A
A =
38 29 21 23 11
18 20 23 6 18
36 41 35 12 29
32 5 17 33 12
5 23 36 23 34
>> eig(A)
ans =
117.3679
33.0451
19.0142
-5.3516
-4.0756
>> [X,D] = eig(A)
X =
0.4459 0.3604 -0.2077 -0.3391 -0.2466
0.3287 -0.2647 -0.2364 0.1927 0.0401
0.5781 -0.3463 -0.4455 0.5426 0.6615
0.3719 0.7432 0.5931 0.2378 0.1292
0.4697 -0.3574 0.5922 -0.7049 -0.6952
D =
117.3679 0 0 0 0
0 33.0451 0 0 0
0 0 19.0142 0 0
0 0 0 -5.3516 0
0 0 0 0 -4.0756