在Matlab中获取上三角形

问题描述:

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

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 
+0

谢谢。我希望这将在未来的版本中发展。 – Orongo