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:

for`n`

`=`

`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 |