Convert values upper triangular matrix into vector
显示 更早的评论
Hi all,
Imagine a matrix of the following form:
1 2 3 4 5
0 4 6 8 10
0 0 9 12 15
0 0 0 16 20
0 0 0 0 25
Now i do like to obtain a vector with only the values of the upper triangular matrix. in other words a vector of underneath form.
[1 2 3 4 5 4 6 8 10 9 12 15 16 20 25]
What is the best way to obtain this vector?
Thanks in advance
2 个评论
Fathima Bareeda
2021-6-5
What is the best way to obtain vector in the form of diagonal elements first and then upper triangular elements..
For eg:[1 4 9 16 25 2 3 4 5 6 8 10 12 15 20]
M = [ 1 2 3 4 5
0 4 6 8 10
0 0 9 12 15
0 0 0 16 20
0 0 0 0 25
]
D = diag(M);
eg = [D.', squareform((M-diag(D)).')]
采纳的回答
更多回答(1 个)
A=[
1 2 3 4 5
0 4 6 8 10
0 0 9 12 15
0 0 0 16 20
0 0 0 0 25
];
% The following previously submitted code creates two intermediate
% matrices, At and m, in addition to the solution array v.
tic
At = A.';
m = tril(true(size(At)));
v = At(m).';
toc
v
% The following code does not create any intermediate matrices.
% It might be preferred when dealing with very large matrices.
% In testing, this code was the slower of the two.
tic
nA = size(A,1);
ibeg = 1;
for n = 1:nA
iend = ibeg+nA-n;
v(ibeg:iend) = A(n,n:nA);
ibeg = iend+1;
end
toc
v
类别
在 帮助中心 和 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!