2014-10-10 100 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))).';