Change diagonal place

How can I switch places the diagonal and the first column from a square matrix?

1 Kommentar

Fangjun Jiang
Fangjun Jiang am 23 Dez. 2011
You could use an example to explain what you mean.

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

bym
bym am 23 Dez. 2011

0 Stimmen

a= magic(3)
a =
8 1 6
3 5 7
4 9 2
>> b=a;
>> for i =2:size(a,1)
b(i,1:i)= fliplr(a(i,1:i));
end
b
b =
8 1 6
5 3 7
2 9 4

3 Kommentare

Paul
Paul am 23 Dez. 2011
Thanks
Image Analyst
Image Analyst am 23 Dez. 2011
proecsm, I know you know better than that, so I assume you just made a careless error. See my solution for the correct answer. Paul, don't use that method if your size is greater than 3 by 3.
Andrei Bobrov
Andrei Bobrov am 23 Dez. 2011
b = 1:size(a,1)+1:numel(a)
c = 1:3
a([b,c]) = a([c,b])

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Image Analyst
Image Analyst am 23 Dez. 2011

1 Stimme

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 Kommentare

bym
bym am 23 Dez. 2011
careless indeed :| +1
Andrei Bobrov
Andrei Bobrov am 23 Dez. 2011
b = 1:size(a,1)+1:numel(a)
c = 1:size(a,1)
a([b,c]) = a([c,b])
Image Analyst
Image Analyst am 23 Dez. 2011
OK, this one works.

Melden Sie sich an, um zu kommentieren.

Kategorien

Tags

Gefragt:

am 22 Dez. 2011

Community Treasure Hunt

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

Start Hunting!

Translated by