MATLAB Function Reference | ![]() ![]() |
Syntax
M=
magic(n)
Description
M = magic(n)
returns an n
-by-n
matrix constructed from the integers 1
through n^2
with equal row and column sums. The order n must be a scalar greater than or equal to 3
.
Remarks
A magic square, scaled by its magic sum, is doubly stochastic.
Examples
The magic square of order 3 is
M=
magic(3) M = 8 1 6 3 5 7
4
9
2
This is called a magic square because the sum of the elements in each column is the same.
sum(M)
=
15
15
15
And the sum of the elements in each row, obtained by transposing twice, is the same.
sum(M')'
=
15
15
15
This is also a special magic square because the diagonal elements have the same sum.
sum(diag(M)) =
15
The value of the characteristic sum for a magic square of order n
is
sum(1:n^2)/n
Algorithm
There are three different algorithms:
forn
=
3:20
A
=
magic(n);
plot(A,'-');
r(n)
=
rank(A); end r
Limitations
If you supply n
less than 3
, magic
returns either a nonmagic square, or else the degenerate magic squares 1
and []
.
See Also
![]() | luinc | mat2str | ![]() |