2017-04-09 7 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 = M .* (bsxfun(@plus, (1:size(M,1)).', 1:size(M,2)) <= size(M,1)+1); 
    

どれ:

M = magic(3); % example matrix 
result = flipud(tril(flipud(M))); 
  • 使用bsxfunは適切なマスクを作成します上記のうち

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

    ありがとうございました。私はこれが将来のバージョンで開発されることを願っています。 – Orongo