在不考虑对角元素的情况下提取下三角矩阵

时间:2014-10-10 15:49:12

标签: matlab matrix

我有一个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]

让我知道如何才能得到这个。

3 个答案:

答案 0 :(得分:2)

您可以使用matlab tril,例如:

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

答案 1 :(得分: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

答案 2 :(得分:1)

基于bsxfun的方法:

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