想要通过for和if循环从已经生成的颜色数组中按照条件生成两个新的颜色数组,但是最后输出的两个数组discolor1和discolor2还是原来的zeros(180,3)的样子,想知道我的代码到底是哪里出了问题呢?
代码如下:
%% 建立颜色库
RGB=imread([pwd,'\wheel.jpg'],'jpg');
color_seq=zeros(360,3);
for i=1:360
color_seq(i,:)=impixel(RGB,xy(i,1),xy(i,2));
end
%% 抽取cuecolor 确定discolor
a=randperm(360,1); %抽取cue的颜色
cuecolor=color_seq(a,:);
discolor1=zeros(180,3);
discolor2=zeros(180,3);
for i=1:180
if randIndexList1(i:2)==1 %条件1,包含6个子条件
if randIndexList1(i:3)==1
(discolor1(i,:)==discolor2(i,:))==cuecolor;
elseif randIndexList1(i:3)==2
if a<4
discolor1(i,:)=color_seq(a-3+359,:);
discolor2(i,:)=color_seq(a+3,:);
else
discolor1(i,:)=color_seq(a-3,:);
discolor2(i,:)=color_seq(a+3,:);
end
elseif randIndexList1(i:3)==3
if a<6
discolor1(i,:)=color_seq(a-5+359,:);
discolor2(i,:)=color_seq(a+5,:);
else
discolor1(i,:)=color_seq(a-5,:);
discolor2(i,:)=color_seq(a+5,:);
end
elseif randIndexList1(i:3)==4
if a<7
discolor1(i,:)=color_seq(a-6+359,:);
discolor2(i,:)=color_seq(a+6,:);
else
discolor1(i,:)=color_seq(a-6,:);
discolor2(i,:)=color_seq(a+6,:);
end
elseif randIndexList1(i:3)==5
if a<8
discolor1(i,:)=color_seq(a-7+359,:);
discolor2(i,:)=color_seq(a+7,:);
else
discolor1(i,:)=color_seq(a-7,:);
discolor2(i,:)=color_seq(a+7,:);
end
else
if a<10
discolor1(i,:)=color_seq(a-9+359,:);
discolor2(i,:)=color_seq(a+9,:);
else
discolor1(i,:)=color_seq(a-9,:);
discolor2(i,:)=color_seq(a+9,:);
end
end
elseif randIndexList1(i:2)==2 %条件2,也包含6个子条件
if randIndexList1(i:3)==1
(discolor1(i,:)==discolor2(i,:))==cuecolor;
elseif randIndexList1(i:3)==2
if a<9
discolor1(i,:)=color_seq(a-8+359,:);
discolor2(i,:)=color_seq(a-13+359,:);
elseif 9<a &&a<14
discolor1(i,:)=color_seq(a-8,:);
discolor2(i,:)=color_seq(a-13+359,:);
else
discolor1(i,:)=color_seq(a-8,:);
discolor2(i,:)=color_seq(a-13,:);
end
elseif randIndexList1(i:3)==3
if a<9
discolor1(i,:)=color_seq(a-8+359,:);
discolor2(i,:)=color_seq(a-13+359,:);
elseif 9<a &&a<18
discolor1(i,:)=color_seq(a-8,:);
discolor2(i,:)=color_seq(a-17+359,:);
else
discolor1(i,:)=color_seq(a-8,:);
discolor2(i,:)=color_seq(a-17,:);
end
elseif randIndexList1(i:3)==4
if a<9
discolor1(i,:)=color_seq(a-8+359,:);
discolor2(i,:)=color_seq(a-19+359,:);
elseif 9<a &&a<20
discolor1(i,:)=color_seq(a-8,:);
discolor2(i,:)=color_seq(a-19+359,:);
else
discolor1(i,:)=color_seq(a-8,:);
discolor2(i,:)=color_seq(a-19,:);
end
elseif randIndexList1(i:3)==5
if a<9
discolor1(i,:)=color_seq(a-8+359,:);
discolor2(i,:)=color_seq(a-21+359,:);
elseif 9<a && a<22
discolor1(i,:)=color_seq(a-8,:);
discolor2(i,:)=color_seq(a-21+359,:);
else
discolor1(i,:)=color_seq(a-8,:);
discolor2(i,:)=color_seq(a-21,:);
end
else
if a<9
discolor1(i,:)=color_seq(a-8+359,:);
discolor2(i,:)=color_seq(a-25+359,:);
elseif 9<a &&a<26
discolor1(i,:)=color_seq(a-8,:);
discolor2(i,:)=color_seq(a-25+359,:);
else
discolor1(i,:)=color_seq(a-8,:);
discolor2(i,:)=color_seq(a-25,:);
end
end
end
end
discolor1=[]
discolor2=[]
for i=1:n
if 条件
discolor1(end+1,:)=........
discolor2(end+1,:)
end
end