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

use*_*392 2 matlab

我有一个随机数的向量:

x = [8,5,4,2,-1,-3,-4,2,3];
Run Code Online (Sandbox Code Playgroud)

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

x = [8,5,4,2,0,0,0,0,0];
Run Code Online (Sandbox Code Playgroud)

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

Kev*_*nMc 7

ind = find(x<0, 1, 'first')
x(ind:end) = 0;
Run Code Online (Sandbox Code Playgroud)

或者把它全部放在一行

x(find(x<0, 1, 'first'):end)= 0;
Run Code Online (Sandbox Code Playgroud)

其他方式

x(cumsum(x<0)>0) = 0;
Run Code Online (Sandbox Code Playgroud)