Change diagonal place
古いコメントを表示
How can I switch places the diagonal and the first column from a square matrix?
1 件のコメント
Fangjun Jiang
2011 年 12 月 23 日
You could use an example to explain what you mean.
採用された回答
その他の回答 (1 件)
Image Analyst
2011 年 12 月 23 日
This code works of a square matrix of any size. I present both a looping and vectorized way.
a=magic(6)
b=a;
for i =2:size(a,1)
temp = a(i,i);
b(i,i)= b(i,1);
b(i,1) = temp;
end
b
% Loopless way
a=magic(6)
b=a;
diagonalElementsMask = logical(eye(size(a,1)))
% Save diagonal elements, because we're going to replace them.
bDiagonalElements = b(diagonalElementsMask)
% Replace diagonal elements with first column.
b(diagonalElementsMask) = b(:,1);
% Replace first column with diagonal elements.
b(:,1) = bDiagonalElements
a =
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
b =
35 1 6 26 19 24
32 3 7 21 23 25
2 9 31 22 27 20
17 28 33 8 10 15
14 5 34 12 30 16
11 36 29 13 18 4
3 件のコメント
bym
2011 年 12 月 23 日
careless indeed :| +1
Andrei Bobrov
2011 年 12 月 23 日
b = 1:size(a,1)+1:numel(a)
c = 1:size(a,1)
a([b,c]) = a([c,b])
Image Analyst
2011 年 12 月 23 日
OK, this one works.
カテゴリ
ヘルプ センター および 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!