适用在哪里
如题,如何根据"上/下三角矩阵"快速补全其相应的"对称阵",适用情况如下:
- 当有一个三角阵时,快速生成其对应的另一半三角阵;
- 当想生成一个对称阵时,可以先生成其一半的三角阵,再用该三角阵将原阵补全。
实现
方法:triu()与tril()函数
x = rand(3,3);
% 完整的上三角与下下三角矩阵
tri_up = triu(x); % 完整上三角,第二个参数默认为0
tri_low = tril(x); % 完整下三角,第二个参数默认为0
% 缺对角线的上三角与下三角矩阵
tri_up1 = triu(x,1); % 上三角往"右上"少一格
tri_low1 = tril(x,-1); % 下三角往"左下"少一格
% 完整矩阵矩阵生成: 上 + 下(一个完整一个缺一格即可)
all1 = triu(x,0) + tril(x,-1);
all2 = triu(x,1) + tril(x,0);
效果:
% 原始随机矩阵为:rand(x)
x =
0.6948 0.0344 0.7655
0.3171 0.4387 0.7952
0.9502 0.3816 0.1869
% 上三角矩阵:triu(x)
tri_up =
0.6948 0.0344 0.7655
0 0.4387 0.7952
0 0 0.1869
% 下三角矩阵:tril(x)
tri_low =
0.6948 0 0
0.3171 0.4387 0
0.9502 0.3816 0.1869
% 上三角矩阵向"右上"缺一格:triu(x,1)
tri_up1 =
0 0.0344 0.7655
0 0 0.7952
0 0 0
% 下三角矩阵向"左下"缺一格:tril(x,-1)
tri_low1 =
0 0 0
0.3171 0 0
0.9502 0.3816 0
% 完整矩阵生成方法1:triu(x,0) + tril(x,-1) 下缺上不缺
all1 =
0.6948 0.0344 0.7655
0.3171 0.4387 0.7952
0.9502 0.3816 0.1869
% 完整矩阵生成方法2:triu(x,1) + tril(x,0); 上缺下不缺
all2 =
0.6948 0.0344 0.7655
0.3171 0.4387 0.7952
0.9502 0.3816 0.1869