我正在使用for循环中的单元格数组,但是我想在运行时删除指定条件下的单元格,并希望其余的循环迭代保持稳定。当从单元格数组中删除任何单元格时,应该在迭代更改时重新格式化循环条件。有什么建议/可能吗?
错误:
Index exceeds matrix dimensions.
Error in myCode (line 33)
if (CellArray2{jj}(ii,:) ~= 0)
我的代码:
while ii<=1000
for jj=1:10
if (CellArray2{jj}(ii,:) ~= 0)
CellArray1(jj) = [];
CellArray2(jj) = [];
end
end
end
答案 0 :(得分:1)
在索引数组时从数组中删除元素的最简单方法是向后编制索引:
for index=numel(MyArray):-1:1
if (condition)
MyArray(index)=[]
end
end
如果您无法在案例中向后迭代,请跟踪要删除的元素并立即删除所有元素:
toDelete=false(size(MyArray))
for index=1:numel(MyArray)
if (condition)
toDelete(index)=true
end
end
%deletes everything afterwards, using logical indexing
MyArray(toDelete)=[]
我假设第二个解决方案更快,因为数据只需要移位一次,但我没有测试它。