我想使用条件从结构中删除行,如果 hsvmean
字段 = 0,然后删除该行。我试过这个代码:
for j =1:length(selectedIms) % the length of selectedIms is 100
if selectedIms(j).hsvmean == 0
selectedIms(j)=[];
end
end
但我收到此错误:
<块引用>索引超过数组元素的数量(73)。
HSVColorSelection 错误(第 57 行)
if selectedIms(j).hsvmean == 0
如何删除这些项目?
答案 0 :(得分:1)
这里有一个解决方案,以防有人需要它。创建一个新的结构,其中只有过滤的行
newSelectedlms = meanValues([meanValues.selected_ims]~= 0);
答案 1 :(得分:1)
当您遍历元素时,您正在删除元素,使数组变小。您循环的结束索引在循环开始时确定,因此您将索引超过数组的末尾。您也在跳过元素。
一个简单的解决方案是从后面开始循环:
for j=length(selectedIms):-1:1
...
end
另一种解决方案是一次删除所有元素。您可以构建要在循环中删除的索引列表,然后在循环后删除这些元素。或者不用循环就可以:
selectedIms([selectedIms.hsvmean] == 0) = [];