我有一个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]
让我知道我该如何得到这个。
我有一个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]
让我知道我该如何得到这个。
我假设这是基于矩阵格式的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
可以用Matlab tril
,例如:
index = find(tril(ones(size(A)), -1));
C = A(index);
bsxfun
为基础的方法:
C = A(bsxfun(@gt, (1:size(A,1)).', 1:size(A,2))).';
user962808 - 我添加了'matlab'标签。如果这不正确,请将其删除并为您正在使用的语言添加标签。 – beaker 2014-10-10 17:25:06