How to use cumsum function?
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
not able to get the expected output.
if col5<200 then, col5+25
and the result will be replaced in next row of col5 untill col5 <200.
for example:
B(30,5)=194.87 so, it will be 194.87+25 = 219.87
B(31,5)=219.87 +25 = 244.87
B(32,5)=244.87+25 = 269.87
B(33,5)=269.87+0= 269.87
A=load("B.mat");
B=A.B;
B(:,5)=B(1,4)-cumsum(B(:,3));
CG=25;
for i=1:size(B,1)
if B(i,5)<200
B(i,6)=CG;
else
B(i,6)=0;
end
B(i,7)=B(i,6)+cumsum(B(i,5));
% B(i,5)=B(i,7);
end
1 comentario
Jan
el 30 de Sept. de 2022
Please avoid pseudo-syntax like "if col5<200 then, col5+25". Use Matlab syntax, because the readers can understand it.
cumsum of a single element replies the value of the element. A cumulative sum is meaningful for a vector only.
Respuesta aceptada
Jan
el 6 de Oct. de 2022
loadValue = [0;50;20;10;5;30;12;8;20;30;5];
capacity = 300;
mat = capacity(1,:) - cumsum(loadValue);
for i = 1:numel(loadValue)-1
if mat(i) < 200
mat(i) = mat(i) + 25;
end
mat(i+1) = mat(i) - loadValue(i+1);
end
mat
0 comentarios
Más respuestas (1)
Jan
el 30 de Sept. de 2022
CG = 25;
C = 0;
for i = 1:size(B, 1)
if B(i, 5) < 200
if C == 0
C = CG;
else
C = 0;
end
end
B(i, 5) = B(i, 5) + C;
end
or shorter:
CG = 25;
C = 0;
for i = 1:size(B, 1)
if B(i, 5) < 200
C = CG * (C == 0);
end
B(i, 5) = B(i, 5) + C;
end
8 comentarios
Ver también
Categorías
Más información sobre Logical 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!