Je veux calculer une somme cumulative des valeurs dans la colonne 2 de dat.txt
ci-dessous pour chaque chaîne de ceux dans la colonne 1. La sortie désirée apparaît comme dat2.txt
:Comment puis-je effectuer cette somme cumulée dans MATLAB?
dat.txt dat2.txt
1 20 1 20 20 % 20 + 0
1 22 1 22 42 % 20 + 22
1 20 1 20 62 % 42 + 20
0 11 0 11 11
0 12 0 12 12
1 99 1 99 99 % 99 + 0
1 20 1 20 119 % 20 + 99
1 50 1 50 169 % 50 + 119
Voici mon premier essai:
fid=fopen('dat.txt');
A =textscan(fid,'%f%f');
in =cell2mat(A);
fclose(fid);
i = find(in(2:end,1) == 1 & in(1:end-1,1)==1)+1;
out = in;
cumulative =in;
cumulative(i,2)=cumulative (i-1,2)+ cumulative(i,2);
fid = fopen('dat2.txt','wt');
format short g;
fprintf(fid,'%g\t%g\t%g\n',[out cumulative(:)]');
fclose(fid);
Très bonne idée! +1 – yuk
Je me demande si la fonction DIFF s'applique uniquement pour tester une condition? Si je veux trouver la somme cumulative qui remplit deux conditions, comment faire cela sans utiliser la fonction FIND? – Jessy