2014-10-03 77 views

回答

7
ind = find(x<0, 1, 'first') 
x(ind:end) = 0; 

或者把它全部成一行

x(find(x<0, 1, 'first'):end)= 0; 

另一种方式

x(cumsum(x<0)>0) = 0; 
+1

的'cumsum'做法似乎是对于小于〜4000个元素的矢量最快! +1,nice =) – 2014-10-03 08:31:31

3

x(find(x<0,1):end) = 0。首先,使用find获得第一个小于零的元素的索引i。然后,您将0分配给所有索引,直到数组的末尾。

3

这里是一个可能的解决方案:

>> [m,idx]=max(x<0); 
>> y = x; 
>> y(idx:end)=0 
y = 

    8 5 4 2 0 0 0 0 0