2026a

# magic


幻方矩阵

函数库: TyMath

# 语法

M = magic(n)

# 说明

M = magic(n) 返回由 1 到 n^2 的整数构成并且总行数和总列数相等的 n×n 矩阵。n的阶数必须是大于或等于 3 的标量才能创建有效的幻方矩阵。示例

# 示例

三阶幻方矩阵

计算三阶幻方矩阵 M。

using TyMath
M = magic(3)
3×3 Matrix{Int64}:
8     1     6
3     5     7
4     9     2

每列中元素的总和等于每行中元素的总和。

sum(M,dims = 1)
1×3 Matrix{Int64}:
15  15  15
sum(M,dims = 2)
3×1 Matrix{Int64}:
15
15
15
幻方矩阵可视化

使用 imagesc 观察 9 阶到 24 阶幻方矩阵的图案。这些图案表明 magic 使用三种不同的算法,取决于 mod(n,4) 的值是 0、2 还是奇数。

using TyMath
using TyPlot
using TyImages
for n = 1:16
ax = subplot(4,4,n)
ord = n+8
m = magic(ord)
imagesc(m)
title("$ord")
axis("equal")
axis("off")
end
tightlayout()

# 输入参数

n-矩阵的阶次
整数标量

矩阵的阶次,指定为大于或等于 3 的整数标量。如果 n 是复数,不是整数,也不是标量,则 magic 会使用 floor(real(n[1]))) 将其转换为可使用的整数。

如果您提供的 n 小于 3,则 magic 将返回非幻方矩阵或退化幻方矩阵 1 和 [ ]。

数据类型: Float16 | Float32 | Float64 | Int8 | Int16 | Int32 | Int64 | Int128 UInt8 | UInt16 | UInt32 | UInt64 | UInt128 | Bool | Char

# 另请参阅

rand | randn