0

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

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

1 回答 1

1

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

  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
于 2017-04-09T15:09:51.357 回答