我要遵循以下规则,将向量b分为b1和b2两部分:
1)b = b1 + b2
2)所有2的值都分成两个1的值
3)对于元素的前半部分:前1个移到b2;第二个1保持在b1中;第三步移至b2,.....依此类推,直到上半场结束
4)对于元素的后半部分:前1个保留在b1中;第二个1移到b2 ....依此类推,直到结束
My code(which does not work ok):
clc;
clear;
close all;
n=4;
%b
b=zeros((n-1)^2,1);
b1=zeros((n-1)^2,1);b2=zeros((n-1)^2,1);
b(1)=2;
b(2:(n-2))=ones(n-3,1);
b(n-1)=2;
for i=1:n-3
b((n-1)*i+1)=1;
b((n-1)*(i+1))=1;
end
b((n-1)*(n-2)+1)=2;
b((n-1)*(n-2)+2:(n-1)*(n-2)+n-2)=ones(n-3,1);
b((n-1)^2)=2;
lx = (length(b));
half = ceil(lx/2);
j=(n-1)^2;
% 2 is split in two values of 1
for i=1:lx
if find(b(i)==2)
b1(i)=1;
b2(i)=1;
end
end
% odd rows
bimpar = b(1:2:end,:);
% even rows
bpar = b(2:2:end,:);
% loop through first half of b
for i=2:half
if find(bimpar(i)==1)
b1(i)=0;
b2(i)=1;
end
% if find(bpar(i)==1)
% b1(i)=1;
% b2(i)=0;
% end
end
% loop through second half of b
for i= half + 1 : j-1
if find(b(i)==1)
b1(i)=1;
b2(i)=0;
end
end
b1'
b2'
%对于n = 4,结果应为:
b = [2; 1; 2; 1; 0; 1; 2; 1; 2]
b1 = [1; 0; 1; 1; 0; 1; 1; 0; 1]
b2 = [1; 1; 1; 0; 0; 0; 1; 1; 1]