How to group data points
조회 수: 3 (최근 30일)
이전 댓글 표시
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
채택된 답변
추가 답변 (3개)
Azzi Abdelmalek
2015년 8월 7일
편집: Azzi Abdelmalek
2015년 8월 7일
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
Prabakar kg
2015년 8월 7일
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
Prabakar kg
2015년 8월 7일
Below was the result
avg =
129.8950
132.7500
136.7333
143.2000
146.6250
150.4333
참고 항목
카테고리
Help Center 및 File Exchange에서 Data Distribution Plots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!