我有一个随机数的向量:
x = [8,5,4,2,-1,-3,-4,2,3];
我想将所有向量值设置为零,从第一个负值出现时开始 . 因此,我希望得到以下结果:
x = [8,5,4,2,0,0,0,0,0];
我该如何实现这一目标?谢谢!
ind = find(x<0, 1, 'first') x(ind:end) = 0;
或者把它全部放在一行
x(find(x<0, 1, 'first'):end)= 0;
其他方式
x(cumsum(x<0)>0) = 0;
做 x(find(x<0,1):end) = 0 . 首先,使用 find 获得小于零的第一个元素的索引i . 然后为所有索引i指定0直到数组的末尾 .
x(find(x<0,1):end) = 0
find
这是一个可能的解决方案:
>> [m,idx]=max(x<0); >> y = x; >> y(idx:end)=0 y = 8 5 4 2 0 0 0 0 0
3 回答
或者把它全部放在一行
其他方式
做
x(find(x<0,1):end) = 0
. 首先,使用find
获得小于零的第一个元素的索引i . 然后为所有索引i指定0直到数组的末尾 .这是一个可能的解决方案: