在Matlab中创建幻方函数
我在matlab中创建了一个大小为n的幻方函数,用zeros()命令初始化,并使用迭代器I使用for循环 我得到的输出是正确的,但我无法确定如何解决这样一个问题,即如果该位置的对角线对于行和列都超出边界。在幻方(5)中,这个数字将是16 magicsqure(5) 母体=在Matlab中创建幻方函数,matlab,function,magic-square,Matlab,Function,Magic Square,我在matlab中创建了一个大小为n的幻方函数,用zeros()命令初始化,并使用迭代器I使用for循环 我得到的输出是正确的,但我无法确定如何解决这样一个问题,即如果该位置的对角线对于行和列都超出边界。在幻方(5)中,这个数字将是16 magicsqure(5) 母体= 0 0 1 8 15 0 5 7 14 0 4 6 13 0 0 10 12 0 0 3 11
0 0 1 8 15
0 5 7 14 0
4 6 13 0 0
10 12 0 0 3
11 0 0 2 9
%
函数输出=magicsquare(n)
%使用zeros()函数初始化
矩阵=零(n);
%排名第一
列=(n-1)/2+1;%第一排幻方在中行中间开始
行=1;%第一排
%带迭代器i的for循环
对于i=1:(n^2)%1到n^2(n大小矩阵的完美平方)
%如果已填充,则从原始位置向下移动
如果(矩阵(行,列)~=0)%。。。
行=行+2;%。。。向下移动2行。。。
列=列-1;%。。。左边有一列
结束
%上一个,对吗
矩阵(行,列)=矩阵(a,b)位置输入i的i%
行=行-1;%上移一行
列=列+1;%右移一列
%矩阵空间外——包裹矩阵
如果列位于列1的左侧,则列小于1%
col=n;%转到最右边的列
结束
if row>(n+1)%if row超过最后一行超过一个空格
行=2;%到第二排
结束
如果行>n%不存在于一个空格中
行=1;%到第一排
结束
如果列>n
列=1;%转到最左边的列
结束
如果行<1
行=n;%到最后一排
结束
如果行<1&&col>n%!!故障排除
行=2;
col=n;
结束
输出=矩阵;%打印幻方图
故障排除行(如果行<1&&col>n)几乎解决了我的问题。如果行<1,则只需将其上移到前面
%重要提示:仅适用于大于3的奇数
函数输出=magicsquare(n)
%使用zeros()函数初始化
矩阵=零(n);
%排名第一
列=(n-1)/2+1;%第一排幻方在中行中间开始
行=1;%第一排
%带迭代器i的for循环
对于i=1:(n^2)%1到n^2(n大小矩阵的完美平方)
%如果已填充,则从原始位置向下移动一个
如果(矩阵(行,列)~=0)%。。。
行=行+2;%。。。向下移动2行。。。
列=列-1;%。。。左边有一列
结束
%上一个,右一个方法
矩阵(行,列)=矩阵(a,b)位置输入i的i%
行=行-1;%上移一行
列=列+1;%右移一列
%超出矩阵空间--创建换行矩阵
如果列位于列1的左侧,则列小于1%
col=n;%转到最右边的列
结束
if row>(n+1)%if row超过最后一行超过一个空格
行=2;%到第二排
结束
如果行>n%不存在于一个空格中
行=1;%到第一排
结束
如果行<1&&col>n%对角线,则行和列都超出边界
行=2;
col=n;
结束
如果列>n
列=1;%转到最左边的列
结束
如果行<1
行=n;%到最后一排
结束
结束
输出=矩阵;%打印魔方
结束