我想使用一个条件从结构中删除行,即如果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行(中出错
如果selectedIms(j(.hsvmean==0
如何删除这些项目?
这里有一个解决方案,以备有人需要。创建一个新的结构,其中只有经过过滤的行
newSelectedlms = meanValues([meanValues.selected_ims]~= 0);
在元素上循环时,您正在删除元素,使数组变小。循环结束的索引是在循环开始时确定的,因此您将索引到数组结束之后。您也在跳过元素。
一个简单的解决方案是从后面开始循环:
for j=length(selectedIms):-1:1
...
end
另一种解决方案是一次删除所有元素。您可以构建一个索引列表,以便在循环中删除,然后在循环后删除这些元素。或者不用循环:
selectedIms([selectedIms.hsvmean] == 0) = [];