vectorization of symmetrical matrix with off-diagonal vectors multiplied with 2
1 次查看(过去 30 天)
显示 更早的评论
Hi all,
I want to vectorize a matrix H. However the matrix H is symetric in the off-diagonal entries. The off diagonal entries on the to disired vector have the value of 2*H(ij).
imagine H as:
H =
1 6 7 8 9
6 2 10 11 12
7 10 3 13 14
8 11 13 4 15
9 12 14 15 5
than, the to desired vector has the following form. if H is nxn matrix. the vector should have dimensions n(n+1)/2 with the off-diagonal vectors 2*H(ij) like
1 2*6 2*7 2*8 2*9 2*10 2*11 2*12 3 2*13 2*14 4 2*15 5
What is the best way to solve this problem?
0 个评论
采纳的回答
Andrei Bobrov
2019-5-14
编辑:Andrei Bobrov
2019-5-14
k = 2;
o = ones(size(H));
Hl = H.*(tril(o,-1)*(k-1) + 1);
out = Hl(tril(o)>0);
or
e = H.*((k-1)*(1-eye(size(H))) + 1);
out = e(tril(e) > 0);
0 个评论
更多回答(1 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Operating on Diagonal Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!