前言
看书上关于n阶魔方矩阵创建的例题的时候,对逻辑矩阵的相关语句产生了些疑惑,解决以后感觉有点意思,记录一下
一、魔方矩阵
魔方矩阵(magic matrix),是指由1~ n 2 n^2 n2的正整数按照一定规则排列而成,且每行每列、每对角线的和都等于 n ( n 2 + 1 ) 2 \frac{n(n^2+1)}{2} 2n(n2+1)。
就生成规则而言,魔方矩阵可分为三类:1. n为奇数;2. n为不能被4整除的偶数;3. n为能被4整除的偶数。这里只讨论第三种情况。
二、代码部分
代码如下:
n=4; % n为任何能被4整除的整数,这里取4使阶数不大更好阐述
G=logical(eye(4,4)+rot90(eye(4,4))); %注意这里生成的是逻辑阵!
m=n/4;
K=repmat(G,m,m); %repmat以指定的行列铺放模块数组,这里得到需要“补运算”的元素位置阵
N=n^2;
A=reshape(1:N,n,n); %把1~N个数字按顺序从列方向上一个个放过去生成一个n*n阵
A(K)=N-A(K)+1 %最后输出的是“补运算”过的A阵,即魔方矩阵
这里先列出,取n=4时,未进行第7行前G、K、A的值:
逻辑阵G =K=
( 1 0 0 1 0 1 1 0 0 1 1 0