matlab做一个三维矩阵如何设计一个三维矩阵,相当于一个有27个小格的正方体,给其中小格赋值,有13个0,14个1,然后计算每条有3个格子的线上的值,比如水平线,垂直线,对角线,当3个数之和为0或3时
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/15 02:02:36
matlab做一个三维矩阵如何设计一个三维矩阵,相当于一个有27个小格的正方体,给其中小格赋值,有13个0,14个1,然后计算每条有3个格子的线上的值,比如水平线,垂直线,对角线,当3个数之和为0或3时
matlab做一个三维矩阵
如何设计一个三维矩阵,相当于一个有27个小格的正方体,给其中小格赋值,有13个0,14个1,然后计算每条有3个格子的线上的值,比如水平线,垂直线,对角线,当3个数之和为0或3时计一次数,要使这样的线最少,共有多少种排法,最少有几条线
matlab做一个三维矩阵如何设计一个三维矩阵,相当于一个有27个小格的正方体,给其中小格赋值,有13个0,14个1,然后计算每条有3个格子的线上的值,比如水平线,垂直线,对角线,当3个数之和为0或3时
clear
tt=0;
for nn=1:1000 %nn的上限可以调整nn=10000时,我算出来是7条线最少
for tt=1:100
t=0;n=0;
for i=1:3
for j=1:3
for k=1:3
h=randperm(2)-1;
f(i,j,k)=h(1);
t=t+f(i,j,k);
end
end
end
tt=tt+1;
ttt(tt)=t;
if t==13
break;
end
end
for i=1:3
for j=1:3
for k=1:3
if sum(f(i,j,:))==3|sum(f(i,j,:))==0|sum(f(:,j,k))==3|sum(f(:,j,k))==0|sum(f(i,:,k))==3|sum(f(i,:,k))==0
n=n+1;
elseif i==2&j==2&k~=2
for k=1:3
if f(1,1,k)==f(2,2,k)&f(1,1,k)==f(3,3,k)
n=n+1;
elseif f(3,1,k)==f(2,2,k)&f(3,1,k)==f(1,3,k)
n=n+1;
end
end
elseif j==2&k==2&i~=2
for i=1:3
if f(i,1,1)==f(i,2,2)&f(i,1,1)==f(i,3,3)
n=n+1;
elseif f(i,1,3)==f(i,2,2)&f(i,1,3)==f(i,3,1)
n=n+1;
end
end
elseif i==2&k==2&j~=2
for j=1:3
if f(1,j,1)==f(2,j,2)&f(1,j,1)==f(3,j,3)
n=n+1;
elseif f(3,j,1)==f(2,j,2)&f(3,j,1)==f(1,j,3)
n=n+1;
end
end
elseif =2&k~=2&j~=2
if f(i,j,k)+f(4-i,4-j,4-k)==2*f(2,2,2)
n=n+1;
end
end
end
end
end
qq(nn)=n;
g(:,:,:,nn)=f;
if nn>1
if qq(nn)>qq(nn-1)
g(:,:,:,nn)=g(:,:,:,nn-1);
qq(nn)=qq(nn-1);
end
end
end
qq(nn)
g(:,:,:,nn) %这个程序应该就可以解决问题了,至于精度的话,你可以通过调整nn的上限来解决.最后输出了一个是条数,另外一组是0,1的分布,按三层描述的.