2014-10-10 101 views
0

我有一個5x5矩陣提取下三角矩陣,而不考慮對角元素

A = 
    [0 0 0 0 1; 
    0.36 0 0 0 1; 
    0 0.25 0 0 1; 
    0.35 0 0 0 1; 
    0 0 0.28 0 1]; 

我要提取的矩陣的下三角元件不考慮對角元素。因此,產生的矩陣應該是

C = [0.36 0 0.35 0 0.25 0 0 0 0.28 0] 

讓我知道我該如何得到這個。

+0

user962808 - 我添加了'matlab'標籤。如果這不正確,請將其刪除併爲您正在使用的語言添加標籤。 – beaker 2014-10-10 17:25:06

回答

1

我假設這是基於矩陣格式的Matlab。

如果你想在一個行向量下三角部分的元素,你可以用一個循環做到這一點(雖然我敢肯定有人會擁有一個漂亮的矢量方法):

C=[]; 
for n=1:size(A,1) 
    C=[C,A(n+1:end,n)']; 
end 

輸出是:

C = 

    0.36 0.00 0.35 0.00 0.25 0.00 0.00 0.00 0.28 0.00 

相反,如果你想完整的5x5矩陣,你可以使用的tril第二個參數:

C = tril(A,-1); 

輸出是:

C = 

    0.00 0.00 0.00 0.00 0.00 
    0.36 0.00 0.00 0.00 0.00 
    0.00 0.25 0.00 0.00 0.00 
    0.35 0.00 0.00 0.00 0.00 
    0.00 0.00 0.28 0.00 0.00 
1

可以用Matlab tril,例如:

index = find(tril(ones(size(A)), -1)); 
C = A(index); 
1

bsxfun爲基礎的方法:

C = A(bsxfun(@gt, (1:size(A,1)).', 1:size(A,2))).';