前言
看书上关于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 1 0 0 1 ) \left( \begin{array}{cccc} 1 & 0 & 0 & 1\\ 0 & 1 & 1 & 0\\ 0 & 1 & 1 & 0\\ 1 & 0 & 0 & 1\\ \end{array} \right)

本文介绍了如何使用Matlab创建魔方矩阵,特别是针对n为能被4整除的偶数的情况。通过逻辑矩阵的操作,详细解释了代码过程,包括如何利用逻辑阵G和K来构建魔方矩阵,并展示了当n=4时的实例,展示逻辑矩阵在更新矩阵A中的作用,最终得出完整的魔方矩阵。
最低0.47元/天 解锁文章
3436

被折叠的 条评论
为什么被折叠?



