How to cluster 1D array so that approximately equal values are replaced by their average?
1 次查看(过去 30 天)
显示 更早的评论
I have a 1D array that features "double-counts". I would like to consolidate or cluster the dataset in a way that replaces the double-counts with the average of the two double-counted values. Here's a sample dataset
xx=[185.0712 185.0715 185.5117 186.1008 186.5077 187.1303 187.5037 188.1596 188.1597 188.4993 189.1890 189.4949 190.2185 190.4903 191.2477 191.2480].'
Here's a screenshot where I've circled the relevant entries that are double counts:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/577732/image.png)
Does anyone know how to do this?
0 个评论
采纳的回答
Walter Roberson
2021-4-9
[~, ~, G] = uniquetol(xx);
xxmean = grpstats(xx, G, 'mean');
3 个评论
Walter Roberson
2021-4-9
Statistics and Machine Learning Toolbox.
You can instead use
xx=[185.0712 185.0715 185.5117 186.1008 186.5077 187.1303 187.5037 188.1596 188.1597 188.4993 189.1890 189.4949 190.2185 190.4903 191.2477 191.2480].'
[~, ~, G] = uniquetol(xx, 1e-4);
xxmean = accumarray(G, xx, [], @mean)
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!