0
問題があります。私はシャムの方法で行列をシャッフルし、私はこのコードを使用:matlabでシャッフルされた行列の初期行列を取得します
今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
しかし、私の問題は、私はとゼロを含む行列を持っていることである:行列です。この特定のケースでは、上記の解決策は機能しません。
この機能は、暗号化プロセスの一部であるためです。したがって、私は元のイメージを取得する必要があるから私は私の魔法の機能の出力を持っています –