魔方矩陣的matlab實現(xiàn)

clc
clear
a=input("請輸入矩陣的階數(shù)正整數(shù)n:");
b=a*a+1;
A=zeros(a);
d=(a+1)/2;
e=1;f=d;
if(mod(a,4)==0)
? ?for i =0:a-1
? ? ? ?for j =0:a-1
? ? ? ? ? ?if(mod(i,4)==mod(j,4)||mod(i+j,4)==3)
? ? ? ? ? ? ? A(i+1,j+1)=b-(i*a+j+1);
? ? ? ? ? ?else
? ? ? ? ? ? ? A(i+1,j+1)=i*a+j+1;
? ? ? ? ? ?end
? ? ? ?end
? ?end
elseif(mod(a,2)==1)
? ?A(1,d)=1;
? ?for i=2:1:a*a
? ? ? ?e=e-1;f=f+1;
? ? ? ?if(e==0)
? ? ? ? ? ?e=a;
? ? ? ?end
? ? ? ?if(f==a+1)
? ? ? ? ? ?f=1;
? ? ? ?end
? ? ? ?if(A(e,f)==0)
? ? ? ? ? ?A(e,f)=i;
? ? ? ?else
? ? ? ? ? ?if(e==a&&f==1)
? ? ? ? ? ? ? ?e=2;
? ? ? ? ? ? ? ?f=a;
? ? ? ? ? ? ? ?A(e,f)=i;
? ? ? ? ? ?else
? ? ? ? ? ? ? ?e=e+2;
? ? ? ? ? ? ? ?f=f-1;
? ? ? ? ? ? ? ?A(e,f)=i;
? ? ? ? ? ?end
? ? ? ?end
? ?end
elseif(mod(a,4)==2&&a~=2)
? ?m=(a-2)/4;
? ?v=a*a/4;
? ?t=2*m+1;
? ?B=zeros(t);
? ?B(1,m+1)=1;
? ?f=m+1;
? ?for i=2:1:t*t
? ? ? ?e=e-1;f=f+1;
? ? ? ?if(e==0)
? ? ? ? ? ?e=t;
? ? ? ?end
? ? ? ?if(f==t+1)
? ? ? ? ? ?f=1;
? ? ? ?end
? ? ? ?if(B(e,f)==0)
? ? ? ? ? ?B(e,f)=i;
? ? ? ?else
? ? ? ? ? ?if(e==t&&f==1)
? ? ? ? ? ? ? ?e=2;
? ? ? ? ? ? ? ?f=t;
? ? ? ? ? ? ? ?B(e,f)=i;
? ? ? ? ? ?else
? ? ? ? ? ? ? ?e=e+2;
? ? ? ? ? ? ? ?f=f-1;
? ? ? ? ? ? ? ?B(e,f)=i;
? ? ? ? ? ?end
? ? ? ?end
? ?end
? ?C=v+B;
? ?D=2*v+B;
? ?E=3*v+B;
? ?for i=1:t
? ? ? ?if(i==m+1)
? ? ? ? ? ?p=B(m+1,m+1);
? ? ? ? ? ?B(m+1,m+1)=E(m+1,m+1);
? ? ? ? ? ?E(m+1,m+1)=p;
? ? ? ?else
? ? ? ? ? ?n=B(i,1);
? ? ? ? ? ?B(i,1)=E(i,1);
? ? ? ? ? ?E(i,1)=n;
? ? ? ?end
? ? ? ?if(m>1)
? ? ? ? ? ?t=t+1;
? ? ? ? ? ?for o=1:m-1
? ? ? ? ? ? ? ?t=t-1;
? ? ? ? ? ? ? ?for i=1:t
? ? ? ? ? ? ? ? ? ?x=D(i,t);
? ? ? ? ? ? ? ? ? ?D(i,t)=C(i,t);
? ? ? ? ? ? ? ? ? ?C(i,t)=x;
? ? ? ? ? ? ? ?end
? ? ? ? ? ?end
? ? ? ?end
? ? ? ?A=[B,D;E,C];
? ?end
elseif(a==2)
? ?disp("2*2 型無魔方矩陣")
? ?return
end
A
sum(A)