在 Matlab 中获取上三角

Get upper triangle in Matlab

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

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

您需要手动完成。有几种方法:

  1. 使用flipud前后垂直翻转tril:

    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);
    

以上任一项给出

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