在Matlab中获取上三角形

时间:2017-04-09 14:51:07

标签: matlab triangular

我想从矩阵中获取上三角形。 MATLAB具有函数triltriu,不幸的是它们给出了错误的三角形。我正在寻找下面的三角形,是否有命令或者它必须是一个循环?如果是这样,它看起来如何?

test=[1 1 1; 1 1 0; 1 0 0];

1 个答案:

答案 0 :(得分:1)

您需要手动执行此操作。有几种方法:

  1. 在应用tril

    之前和之后,使用flipud垂直翻转
    M = magic(3); % example matrix
    result = flipud(tril(flipud(M)));
    
  2. 使用bsxfun创建适当的掩码:

    M = magic(3); % example matrix
    result = M .* (bsxfun(@plus, (1:size(M,1)).', 1:size(M,2)) <= size(M,1)+1);
    
  3. 上述任何一项

    >> M
    M =
         8     1     6
         3     5     7
         4     9     2
    >> result
    result =
         8     1     6
         3     5     0
         4     0     0