Borrar filtros
Borrar filtros

cumulative sum that restarts whenever it reaches certain level

7 visualizaciones (últimos 30 días)
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

Respuesta aceptada

Sean de Wolski
Sean de Wolski el 14 de Oct. de 2014
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 comentario
Amanda S
Amanda S el 24 de Mayo de 2020
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.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by