我想运行一个循环,当两个东西不相等时,我希望从我的新结构中省略该索引。它一直有效,直到它达到第一个不等式。然后由于某种原因它只是停止循环,并且在省略j = 45之后它不会在j = 46时拾取。我不知道为什么。这是代码
for j=1:length(files_cdf)
z(j)=isequal(files_cdf(j).ith,list(j));
if isequal(z(j),1)
cdf_new(j)=files_cdf(j);
else
cdf_new(j)=[];
end
end
答案 0 :(得分:0)
这是两种方法。第一个可能会导致性能下降,因为这意味着您无法预先分配cdf_new
数组。
for j=1:length(files_cdf)
z(j)=isequal(files_cdf(j).ith,list(j));
if isequal(z(j),1)
cdf_new(end+1)=files_cdf(j);
end
end
这只会增加你想要保留的每个元素的数组cdf_new
。
或者,您可以将索引的单独计数器保留为cdf_new
。
c=0;
for j=1:length(files_cdf)
z(j)=isequal(files_cdf(j).ith,list(j));
if isequal(z(j),1)
c=c+1;
cdf_new(c)=files_cdf(j);
end
end
使用此技术,如果您已预先分配数组cdf_new
,则只能将其截断为有效值:
cdf_new = cdfnew(1:c);