a=[1,1,1,1,1,1,1,1,1,-1,-1,-1,1,1,1,-1,1,-1,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0;
-1,0,1,-1,0,1,-1,0,1,-1,0,1,1,0,-1,-1,0,1,-1,0,1,-1,0,1,-1,0,-1,1,0,-1,1,0,-1,1,0,1,-1,0,1;
-1,-1,-1,0,0,0,1,1,1,-1,-1,-1,0,0,0,1,-1,1,-1,-1,-1,0,0,0,1,1,-1,1,1,1,0,0,0,-1,-1,0,1,1,1;
0,0,0,0,0,0,0,0,0,1,1,1,-1,-1,-1,1,-1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0];
x=[0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;0;
0;0;0;];
y=a*x;
error=0;
for i=1:39
x=[0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;];
x(i,1)=1;
z(:,i)=a*x;
end
for i=1:39
x=[0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;];
x(i,1)=-1;
z(:,39+i)=a*x;
end
for i=1:78
for j=i+1:78
if z(:,i)==z(:,j)
error = 1;
e1=i;
e2=j;
end
end
end
MATLAB还用的不熟,很多都是刚刚百度到的语法
以上的矩阵a是:
39个物品,可以分清轻重的称量方法
代码可以直接在MATLAB上跑,error为0
如果随意更改a中的一个数,error结果为1,
其他的还没有测试,不过a应该没有问题 |