2016-10-03 72 views
0

我有一个100X1阵列,与100个零开始,从数组的尾部删除不需要的元素?

roots = zeros(100, 1); 

我然后有一个循环元素在其中这个数组被填充在每个迭代上。

for iRoots = 1:100 
    roots(iRoots) = a; 

但是,如果满足一定的条件,循环终止提前,我留下了很多不必要的零在数组中。例如,我可能会得到这样一个根数组:

charVals = [ 1 5 2 2 8 0 0 0 ... 0 ] 

我只想保留前五个非零元素。如何从这个数组中删除所有的零?

+0

所以,如果你只想要第一个五年非零元素,你不能只运行从'1循环:5',并初始化'零(5,1)'数组? – hbaderts

+0

这仅仅是一个例子,可能会出现多于或少于五个元素。 – csss

回答

1

当循环终止早,你仍然会拥有最新的执行指标的价值,所以才这样做:

roots(iRoots:end) = []; 

另外,如果你检查的条件提前终止循环,你可能会考虑使用,而循环而不是for循环。