我有一個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