0
原理: 我有一個碼字ü,我想改變你的4位的所有2位。如何修改碼字中的兩位?
例如:如果u = [1 1 0 0]
,我想獲得:
u1 = [0 0 0 0] ; u2 = [0 1 1 0] ; u3 = [0 1 0 1];
u4 = [1 0 1 0] ; u5 = [1 0 0 1] ; u6 = [1 1 1 1];
計劃:
u = rand(1,4)>0.5
for i = 1:size(u,2)
if u(:,1)==0 && u(:,2)==0
u1 = [1 1 u(:,3) u(:,4)];
elseif u(:,1)==1 && u(:,2)==0
u1 = [0 1 u(:,3) u(:,4)];
elseif u(:,1)==0 && u(:,2)==1
u1 = [1 0 u(:,3) u(:,4)];
elseif u(:,1)==1 && u(:,2)==1
u1 = [0 0 u(:,3) u(:,4)];
end
if u(:,1)==0 && u(:,3)==0
u2 = [1 u(:,2) 1 u(:,4)];
elseif u(:,1)==1 && u(:,3)==0
u2 = [0 u(:,2) 1 u(:,4)];
elseif u(:,1)==0 && u(:,3)==1
u2 = [1 u(:,2) 0 u(:,4)];
elseif u(:,1)==1 && u(:,3)==1
u2 = [0 u(:,2) 0 u(:,4)];
end
if u(:,1)==0 && u(:,4)==0
u3 = [1 u(:,2) u(:,3) 1];
elseif u(:,1)==1 && u(:,4)==0
u3 = [0 u(:,2) u(:,3) 1];
elseif u(:,1)==0 && u(:,4)==1
u3 = [1 u(:,2) u(:,3) 0];
elseif u(:,1)==1 && u(:,4)==1
u3 = [0 u(:,2) u(:,3) 0];
end
if u(:,2)==0 && u(:,3)==0
u4 = [u(:,1) 1 1 u(:,4)];
elseif u(:,2)==1 && u(:,3)==0
u4 = [u(:,1) 0 1 u(:,4)];
elseif u(:,2)==0 && u(:,4)==1
u4 = [u(:,1) 1 0 u(:,4)];
elseif u(:,2)==1 && u(:,3)==1
u4 = [u(:,1) 0 0 u(:,4)];
end
if u(:,2)==0 && u(:,4)==0
u5 = [u(:,1) 1 u(:,3) 1];
elseif u(:,2)==1 && u(:,4)==0
u5 = [u(:,1) 0 u(:,3) 1];
elseif u(:,2)==0 && u(:,4)==1
u5 = [u(:,1) 1 u(:,3) 0];
elseif u(:,2)==1 && u(:,4)==1
u5 = [u(:,1) 0 u(:,3) 0];
end
if u(:,3)==0 && u(:,4)==0
u6 =[u(:,1) u(:,2) 1 1];
elseif u(:,3)==1 && u(:,4)==0
u6 =[u(:,1) u(:,2) 0 1];
elseif u(:,3)==0 && u(:,4)==1
u6 =[u(:,1) u(:,2) 1 0];
elseif u(:,3)==1 && u(:,4)==1
u6 =[u(:,1) u(:,2) 0 0];
end
end
我需要我的程序推廣到u的所有長度,使其短,因爲如果長度你很大很難以這種方式進行。
有人可以幫助我概括我的程序,並使其更短?
謝謝!