Ich habe ein Problem. I eine Matrix mit der siamesischen Methode gemischt und ich diesen Code:Holen Sie sich die Ausgangsmatrix einer gemischten Matrix in 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
jetzt nur noch die neu gemischt Matrix, muß ich die anfängliche Matrix erhalten. Wie kann ich das machen? Auch ich muss erwähnen, dass meine Matrix nur 0 und 1 besteht.
Update: Wenn ich ein magisches Quadrat mit Zahlen von 1 bis n habe (ich für eine Matrix von 11x11 und 5x5 getestet) den Code für die erste Matrix ist:
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
Aber mein Problem ist, dass ich eine Matrix mit Einsen und Nullen habe. Und in diesem speziellen Fall funktioniert die oben erwähnte Lösung nicht.
Da diese Funktion Teil eines Beschreibungsprozesses ist. Im Beschreibungsteil werde ich nur die Ausgabe meiner magischen Funktion haben, von der ich das ursprüngliche Bild bekommen muss –