6.1矩阵
6.1.11操作矩阵
6.1.12矩阵的可视化
6.1.13多维数组
下面是一些用于处理矩阵的函数:
diag
提取或创建对角线。fliplr
从左到右翻转flipud
从上到下翻转rot90
旋转tril
提取下三角形部分diag
函数可以用于提取或创建矩阵的对角线。具体来说,如果输入一个矩阵,diag
函数会返回该矩阵的主对角线元素组成的向量。如果输入一个向量,diag
函数会创建一个以该向量为主对角线元素的矩阵。例如,假设有一个3x3的矩阵A:
A = [1 2 3;
4 5 6;
7 8 9];
要提取A的主对角线元素,可以使用以下代码:
d = diag(A);
运行结果为:
d =
1
5
9
要创建一个以向量v
为主对角线元素的矩阵,可以使用以下代码:
B = diag(v);
例如,要创建一个3x3的矩阵,其主对角线元素为1、2、3,可以使用以下代码:
v = [1 2 3];
B = diag(v);
运行结果为:
B = [1 0 0;
0 2 0;
0 0 3]
fliplr
函数可以用于将矩阵从左到右翻转。具体来说,fliplr
函数会将矩阵的每一行从左到右翻转。例如,假设有一个3x3的矩阵A:
A = [1 2 3;
4 5 6;
7 8 9];
要将A从左到右翻转,可以使用以下代码:
B = fliplr(A);
运行结果为:
B = [3 2 1;
6 5 4;
9 8 7]
flipud
函数可以用于将矩阵从上到下翻转。具体来说,flipud
函数会将矩阵的每一列从上到下翻转。例如,假设有一个3x3的矩阵A:
A = [1 2 3;
4 5 6;
7 8 9];
要将A从上到下翻转,可以使用以下代码:
B = flipud(A);
运行结果为:
B = [7 8 9;
4 5 6;
1 2 3]
rot90
函数可以用于将矩阵旋转。具体来说,rot90
函数可以将矩阵逆时针旋转90度、180度或270度。例如,假设有一个3x3的矩阵A:
A = [1 2 3;
4 5 6;
7 8 9];
要将A逆时针旋转90度,可以使用以下代码:
B = rot90(A);
运行结果为:
B = [3 6 9;
2 5 8;
1 4 7]
要将A逆时针旋转180度,可以使用以下代码:
C = rot90(A, 2);
运行结果为:
C = [9 8 7;
6 5 4;
3 2 1]
要将A逆时针旋转270度,可以使用以下代码:
D = rot90(A, 3);
运行结果为:
D = [7 4 1;
8 5 2;
9 6 3]
tril
函数可以用于提取矩阵的下三角形部分。具体来说,tril
函数会将矩阵的上三角形部分置为0,返回矩阵的下三角形部分。例如,假设有一个3x3的矩阵A:
A = [1 2 3;
4 5 6;
7 8 9];
要提取A的下三角形部分,可以使用以下代码:
B = tril(A);
运行结果为:
B = [1 0 0;
4 5 0;
7 8 9]
注意,tril
函数默认提取矩阵的主对角线及以下部分。如果要提取矩阵的次对角线及以下部分,可以使用tril(A, -1)
。
A =
1 2 3
4 5 6
7 8 9
>> tril(A, -1)
ans =
0 0 0
4 0 0
7 8 0
矩阵可以在MATLAB中可视化。这一主题在第9章作了简要讨论,并附有插图。
MATLAB数组可以有两个以上的维度。例如,假设你创建了一个矩阵a = [1:2; 3:4]
,可以向其中添加第三个维度a(:,:,2) = [5:6; 7:8]
>> a = [1:2; 3:4]
a =
1 2
3 4
>> a(:,:,2) = [5:6; 7:8]
a(:,:,1) =
1 2
3 4
a(:,:,2) =
5 6
7 8
首先创建了一个2x2的矩阵a,其中第一行为1和2,第二行为3和4。然后,它在第三维上添加了一个新的2x2的矩阵,其中第一行为5和6,第二行为7和8。最后,通过a(:,:,1)
和a(:,:,2)
可以分别访问这两个矩阵。
我们可以把三维数组a想象成一系列的“页面”,每页上都有一个矩阵。a的第三个维度是页数。这类似于具有多个工作表的电子表格:每个工作表包含一个表格(矩阵)。
联系客服