每日热点:魔方矩阵的matlab实现

来源:哔哩哔哩 2023-03-12 11:49:24

clc

clear

a=input("请输入矩阵的阶数正整数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)

关键词:

相关新闻