2014-10-03 79 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