首页 文章

从Matlab中出现第一个负值的点开始,将所有矢量值设置为零

提问于
浏览
2

我有一个随机数的向量:

x = [8,5,4,2,-1,-3,-4,2,3];

我想将所有向量值设置为零,从第一个负值出现时开始 . 因此,我希望得到以下结果:

x = [8,5,4,2,0,0,0,0,0];

我该如何实现这一目标?谢谢!

3 回答

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

    或者把它全部放在一行

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

    其他方式

    x(cumsum(x<0)>0) = 0;
    
  • 7

    x(find(x<0,1):end) = 0 . 首先,使用 find 获得小于零的第一个元素的索引i . 然后为所有索引i指定0直到数组的末尾 .

  • 3

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

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

相关问题