2017-04-09 103 views
0

我想從矩陣中獲取上三角形。 MATLAB有函數triltriu,不幸的是他們給出了錯誤的三角形。我正在尋找下面的三角形,有沒有一個命令或它必須是一個循環?如果是這樣,它看起來如何?在Matlab中獲取上三角形

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

回答

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

謝謝。我希望這將在未來的版本中發展。 – Orongo