4.7 矩阵运算函数
先介绍几个与矩阵转角有关的函数:rot90, fliplr, flipud,它们的用法及说明请参考以下的例子。
>> A=[2 1 0; -2 5 -1; 3 4 6];
>> B=rot90(A) % 将A矩阵逆时针转90度
B =
0 -1 6
1 5 4
2 -2 3
>> A=[1 2; 4 8; -2 0];
>> B=fliplr(A); % 将A矩阵从左向右翻
>> C=flipud(A); % 将A矩阵从上向下翻
>> B, C
B =
2 1
8 4
0 -2
C =
-2 0
4 8
1 2
另外函数 reshape 则是用来调整矩阵改形,即是在矩阵的元素总数不变下,改变其列及行的大小。见以下范例。
>> A=[2 5 6 -1; 3 -2 10 0];
>> B=reshape(A,4,2); % 将A矩阵改成 4x2 的矩阵
>> C=reshape(A,1,8); % 将A矩阵改成 8x1 的矩阵
>> B, C
B =
2 6
3 10
5 -1
-2 0
C =
2 5
6 1
3 -2
10 0
我们如果要将矩阵内的特定元素读取出来,或是将特定元素以其它值取代,以下的函数diag, triu, tril 提供了这方面的功能。diag是只保留原矩阵的主对角线 (main diagonal) 的元素,其余的元素以零取代。triu, tril 则是分别产生上三角形及下三角形矩阵,其余的元素也以零取代。以下的例子详细的说明这三个函数的用法:
>> V=[1 2 3];
>> A=diag(V)
A =
1 0 0
0 2 0
0 0 3
>> A=[1:2:7; 3:3:12; 4:-1:1; 1:4]
A =
1 3 5 7
3 6 9 12
4 3 2 1
1 2 3 4
>> B=triu(A)
B =
1 3 5 7
0 6 9 12
0 0 2 1
0 0 0 4
>> C=triu(A,-1)
C =
1 3 5 7
3 6 9 12
0 3 2 1
0 0 3 4
>> D=triu(A,3)
D =
0 0 0 7
0 0 0 0
0 0 0 0
0 0 0 0
>> B=tril(A)
B =
1 0 0 0
3 6 0 0
4 3 2 0
1 2 3 4
>> C=triu(A,-1)
C =
0 0 0 0
3 0 0 0
4 3 0 0
1 2 3 0
>> D=triu(A,3)
D =
1 3 5 7
3 6 9 12
4 3 2 1
1 2 3 4