1.目的:
有时我们需要删除某些满足条件的元胞/单个元素,这时千万不能使用for进行遍历,会提示“索引超出范围”。因为在matlab中,for循环使用的是并行计算,即使
for i = 1:size(a,1),这时已经开辟了size(a,1)条并行计算线路了,即使在遍历时a由于a[i]=[]使得size(a,1)减少了,但是仍会遍历原始的size(a,1)个数,当超出现有a的个个数时,便会报错。
ie:
a = [1,2,3,4,5];
for i = 1:size(a,2)
if a(i) < 4
a(i)=[];
end
end
系统报错 “索引超出范围”
2.改正:
使用while循环可以改正这个错误
a = [1,2,3,4,5];
i=1;
while i <= size(a,2)
if a(i) < 4
a(i)=[];
else
i= i+1;
end
end