How to read elements of a matrix diagonally in MATLAB?

3 ビュー (過去 30 日間)
Febin Benjamin
Febin Benjamin 2013 年 9 月 18 日
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 :)
Andrei Bobrov
Andrei Bobrov 2013 年 9 月 18 日
B = [2,5,7; 3,0,1; 9,17,23];
A = fliplr(B); % and etc

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeOperating on Diagonal Matrices についてさらに検索

タグ

製品

Community Treasure Hunt

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

Start Hunting!

Translated by