我有一个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 :(得分: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)) ).';