【发布时间】:2017-04-26 17:27:11
【问题描述】:
我有问题。我用连体方法对矩阵进行了洗牌,并使用了以下代码:
function magic = magicsquare(matrix,n)
magic=zeros(n,n);
i=1;
j=(n+1)/2;
for ki=1:n
for kj=1:n
is=i;
js=j;
magic(i,j)=matrix(ki,kj);
i=n-rem(n+1-i,n);
j=rem(j,n)+1;
if magic(i,j)~=0
i=rem(is,n)+1;
j=js;
end
end
end
现在,只有洗牌矩阵,我需要得到初始矩阵。我怎样才能做到这一点? 另外我不得不提一下,我的矩阵只包含 0 和 1。
更新:如果我有一个数字从 1 到 n 的幻方(我测试了一个 11x11 和 5x5 的矩阵),那么获取初始矩阵的代码是:
function magic = reversemagicsquare(matrix,n)
i=1;
j=(n+1)/2;
for ki=1:n
for kj=1:n
is=i;
js=j;
magic(ki,kj)=matrix(i,j);
i=n-rem(n+1-i,n);
j=rem(j,n)+1;
end
if matrix(i,j)~=0
i=rem(is,n)+1;
j=js;
end
end
但我的问题是我有一个包含 1 和 0 的矩阵。在这种特殊情况下,上述解决方案不起作用。
【问题讨论】: