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
但我的問題是,我有一個矩陣包含1和零。在這種特殊情況下,上述解決方案不起作用。
因爲此功能是一個encription過程的一部分。所以在描述部分,我只會有我的魔法功能的輸出,從我需要的原始圖像 –