已知"上/下三角矩阵"如何快速将"对称阵"补全

适用在哪里

如题,如何根据"上/下三角矩阵"快速补全其相应的"对称阵",适用情况如下:

  • 当有一个三角阵时,快速生成其对应的另一半三角阵;
  • 当想生成一个对称阵时,可以先生成其一半的三角阵,再用该三角阵将原阵补全。

实现

方法: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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容