cumulative sum that restarts whenever it reaches certain level
3 次查看(过去 30 天)
显示 更早的评论
Good evening I have a matrix A of 250*3 what i try to do is the following: the first time that the cumsum "of raws" is > 6, i replace the corresponding value in matrix A with zero and restart the cumsum form the value after the zero. then we repeat this once more: the first time the new cumsum >6 we replace it with zero and restart the cum sum we repeat this untill we arrive to the last raw of the matrix
Thank u in advance
0 个评论
采纳的回答
Sean de Wolski
2014-10-14
rng default
x = randi(3,[20 1]);
thresh = 6;
while 1
xc = cumsum(x);
k = find(xc > thresh,1,'first');
if isempty(k)
% done
break
end
x(k) = -xc(k-1);
end
When you say set that row equal to zero, the cumsum on the next row will still be greater than 6. (something greater than 6 + 0 is still greater than 6). Thus you need to set the value to the negative of the previous value in order to reset the cumulative sum. If you need zeros at the end, remove the negatives.
% If you need to zero out those points
x(x<0) = 0
1 个评论
Amanda S
2020-5-24
Where in the code is the command that says to replace the number that comes next in the cumsum that is greater than 6, with a zero? Im doing a similiar thing but i also want to include the number that in this case, is replaced with a zero, but I don't know how. I believe that the change need to be done in the second row from the bottom but I cant seem to get it to work my way.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!