cumsum till condition is met
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Housam
el 1 de Feb. de 2021
Respondida: Housam
el 7 de Feb. de 2021
I want to compare two matrices, each with a size of [35039 1], when the number in the first matrix M1 is bigger than the number in the second matrix M2, then I want the result as the bigger number. However, when the number in M1 is smaller than the number in M2, then I want the result to be the sum of the previous numbers in M1 till the condition is met. i imagine the code to be like this:
M1=[270;270;270;270;270;270;270;270;270;270;270;270;270;270;270;270;270;270;270;270;270]
M2=[100;100;100;500;500;500;100;100;100;100;100;100;100;600;600;600;600;600;600;100;100]
compare=M1>M2 % the condition
[row11,~,~]=find( compare )
M3(row11)= M1(row11)
[row22,~,~]=find( ~compare )
M3(row22)= 0
between = cumsum(M1(1:3),1,'reverse') %sum previous "non zero" elements in M1 starting from last number
M3(row22(1)) = between(1) % replace the first element that doesnt meet the condition M2(row22(1))
% with between(1) which is the new aggregated number, that is greater than M2(4)
%similarly, i want to repeat these steps to get M3.
between2 = cumsum ( M3(1:4),2,'reverse' )
M3(row22(2)) = between2(2)
between3 = cumsum ( M3(1:5),2,'reverse' )
M3(row22(3)) = between3(5)
between4 = cumsum ( M3(1:13),2,'reverse' )
M3(row22(4)) = between4(11)
4 comentarios
Jan
el 5 de Feb. de 2021
The description is not clear yet. What is the wanted output for:
M1 = [1, 1]; M2 = [2, 2];
What does "sum of the previous numbers in M1 till the condition is met" mean in this case?
Respuesta aceptada
Ver también
Categorías
Más información sobre Graphics Object Programming en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!