在条件未满足时省略指数

时间:2016-02-04 22:43:41

标签: matlab loops indexing

我想运行一个循环,当两个东西不相等时,我希望从我的新结构中省略该索引。它一直有效,直到它达到第一个不等式。然后由于某种原因它只是停止循环,并且在省略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

1 个答案:

答案 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);