magic - Magic square - MATLAB (original) (raw)
Main Content
Syntax
Description
M = magic([n](#d126e1032165))
returns ann
-by-n
matrix constructed from the integers 1
throughn
2 with equal row and column sums. The order n
must be a scalar greater than or equal to3
in order to create a valid magic square.
Examples
Compute the third-order magic square M
.
M = 3×3
8 1 6
3 5 7
4 9 2
The sum of the elements in each column and the sum of the elements in each row are the same.
Visually examine the patterns in magic square matrices with orders between 9 and 24 using imagesc
. The patterns show that magic
uses three different algorithms, depending on whether the value of mod(n,4)
is 0, 2, or odd.
for n = 1:16 subplot(4,4,n) ord = n+8; m = magic(ord); imagesc(m) title(num2str(ord)) axis equal axis off end
Input Arguments
Matrix order, specified as a scalar integer greater than or equal to 3. Ifn
is complex, not an integer, or not scalar, thenmagic
converts it into a usable integer withfloor(real(double(n(1))))
.
If you supply n
less than 3
, thenmagic
returns either a nonmagic square, or the degenerate magic squares 1
and[]
.
Data Types: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
Extended Capabilities
Usage notes and limitations:
- The input argument
n
must be a constant at code generation time.
Version History
Introduced before R2006a