Making Cumulative Difference Calculation
28 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi,
I have a parameter with a column of data like this:
RunTime:
3779024.8; 3779025.8; 3779026.8; 3779027.8; 3779028.8; 3779029.8;
I want to know how I can make another parameter which calculates the cumulative difference between the values and presents it like this:
Elapsed Time:
0; 1; 2; 3; 4; 5; 6;
Thanks,
0 Kommentare
Akzeptierte Antwort
José-Luis
am 16 Aug. 2012
Not entirely sure if that's what you meant but here goes:
data = sort(rand(10,1));
cumDiff = [0;cumsum(diff(data))];
Cheers!
2 Kommentare
Friedrich
am 16 Aug. 2012
Bearbeitet: Friedrich
am 16 Aug. 2012
Small note:
The perfomance of this pretty bad and it doesnt make any sense doing it like this. Simply subtract the first value from all others (assuming data is sorted ascending). This is approx. 20-30 times faster and give the exact same result.
>> data = (1:1000)';
>> tic,cumDiff = [0;cumsum(diff(data))];toc
Elapsed time is 0.000560 seconds.
>> tic,cumDiff = [0;cumsum(diff(data))];toc
Elapsed time is 0.000549 seconds.
>> tic,cumDiff = [0;cumsum(diff(data))];toc
Elapsed time is 0.000611 seconds.
>> tic,cumDiff = data-data(1);toc
Elapsed time is 0.000021 seconds.
>> tic,cumDiff = data-data(1);toc
Elapsed time is 0.000024 seconds.
>> tic,cumDiff = data-data(1);toc
Elapsed time is 0.000023 seconds.
>> tic,cumDiff = data-data(1);toc
Elapsed time is 0.000024 seconds.
José-Luis
am 17 Aug. 2012
You are right. I guess i was blinded by the wording of the question.
Cheers!
Weitere Antworten (1)
Azzi Abdelmalek
am 16 Aug. 2012
Bearbeitet: Azzi Abdelmalek
am 16 Aug. 2012
A=[3779024.8; 3779025.8; 3779026.8; 3779027.8; 3779028.8; 3779029.8];
result=[0 ;cumsum(diff(A))];
disp('elapsed time');disp(sprintf('%d;',result))
Siehe auch
Kategorien
Mehr zu NaNs finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!