Info
この質問は閉じられています。 編集または回答するには再度開いてください。
How can I make all the variables in an array 0 after the first time 0 occurs in the array
1 回表示 (過去 30 日間)
古いコメントを表示
I am trying to create a weighting function based on a set of criteria. When the weighting function is created, I get an array containing 1's and 0's. However, I am trying to force the array to be all 0's once the first 0 occurs.
For example: x = [1,1,1,1,1,0,0,1,1,0,0,0...] for which I would then like it to read x = [1,1,1,1,1,0,0,0,0,0,0,0...].
Any tips would be greatly appreciated.
0 件のコメント
回答 (2 件)
Guillaume
2016 年 1 月 20 日
A very simple solution that only works with an array of 0 and 1 starting with 1:
x = [1,1,1,1,1,0,0,1,1,0,0,0]
cumprod(x)
2 件のコメント
Walter Roberson
2016 年 1 月 21 日
I find in practice that most of the time that I want to do this, I want to work row by row; in that case I need to be sure to specify the dimension number,
cumprod(x,2)
Stephen23
2016 年 1 月 21 日
Without a leading one:
>> x = [0,0,1,1,1,1,1,0,0,1,1,0,0,1,0]
x =
0 0 1 1 1 1 1 0 0 1 1 0 0 1 0
>> x .* (1==cumsum(0<diff([0,x])))
ans =
0 0 1 1 1 1 1 0 0 0 0 0 0 0 0
jgg
2016 年 1 月 20 日
Generate your x as normal, with the many 1's afterwards then call:
x = [1,1,1,1,1,0,0,1,1,0,0,0]; %generate x
x(find(x == 0,1,'first'):end) = 0
この質問は閉じられています。
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!