How to read elements of a matrix diagonally in MATLAB?

4 次查看(过去 30 天)
Suppose A is a 3X3 matrix
A=[2,5,7; 3,0,1; 9,17,23]
I want to read the elements in this fashion.
2
5 3
9 0 7
1 17
23

采纳的回答

Andrei Bobrov
Andrei Bobrov 2013-9-18
编辑:Andrei Bobrov 2013-9-18
A=[2,5,7; 3,0,1; 9,17,23]
k = spdiags(rot90(A));
s = size(k);
nns = nan(s);
ptr = tril(triu(ones(s)),s(1)-1);
nns(ptr>0) = k(ptr>0);
nns(:,1:2:end) = nns(end:-1:1,1:2:end);
out = sort(ptr,'descend');
out(out>0) = nns(~isnan(nns));
out = out';
or
A=[2,5,7; 3,0,1; 9,17,23];
ds = spdiags(rot90(A));
l = spdiags(ones(size(A)));
ds(:,1:2:end) = flipud(ds(:,1:2:end));
l(:,1:2:end) = flipud(l(:,1:2:end));
l2 = sort(l,'descend');
l2(l2>0) = ds(l>0);
out = l2';
  4 个评论
Febin Benjamin
Febin Benjamin 2013-9-18
@Jan: I tried hard to frame the question in a comprehensive way but that's what I managed to come up with. :) Fortunately, Andrei got it! hehe :)

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Operating on Diagonal Matrices 的更多信息

标签

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by