How to group data points
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Max Bernstein
am 7 Aug. 2015
Kommentiert: Max Bernstein
am 7 Aug. 2015
Hello,
I have a set of data that I would like to perform analysis on, and it's something like:
[150 151.1 149.6 150.2 146.1 145.6 144.1 144.9 145.2 139.9 140.6 138.9 135.4 135.1 134.9 135.9 135.2 129.9 129.89 130.6]
I would like to group the data to 150, 145, 140, etc... I have tried to manipulate it using rounding/ceiling, etc.. but I couldnt figure out how to group it correctly because it varies too much, and another problem is that the number of data points arent always the same. Once I can group it, I would like to find the average of the data for each set. Is there a way to do this?
Thanks for the help!
2 Kommentare
Akzeptierte Antwort
Weitere Antworten (3)
Azzi Abdelmalek
am 7 Aug. 2015
Bearbeitet: Azzi Abdelmalek
am 7 Aug. 2015
A=[150 151.1 149.6 150.2, 146.1 145.6 144.1 144.9 145.2, 139.9 140.6 138.9]
[a,b]=histc(A,[135:5:150 155])
out=accumarray(b',(1:numel(b))',[],@(x) {A(x)})
celldisp(out)
To get the mean of each group
outmean=accumarray(b',(1:numel(b))',[],@(x) {mean(A(x))})
0 Kommentare
Prabakar kg
am 7 Aug. 2015
arr = [150 151.1 149.6 150.2 146.1 145.6 144.1 144.9 145.2 139.9 140.6 138.9 135.4 135.1 134.9 135.9 135.2 129.9 129.89 130.6];
HISTCOUNTS is used to group the data
[cnt, edges, bin] = histcounts(arr, 125:5:155);
ACCUMARRAY to calculate SUM on the grouped data
sum = accumarray(bin', arr');
Calculate the AVERAGE. Note that this could be done in the previous step. I separated these to improve readability
avg = sum./cnt';
Hope this helps.
1 Kommentar
Prabakar kg
am 7 Aug. 2015
Below was the result
avg =
129.8950
132.7500
136.7333
143.2000
146.6250
150.4333
Siehe auch
Kategorien
Mehr zu Data Distribution Plots 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!