Calculate median values of slices of array associated with histogram bins
3 ビュー (過去 30 日間)
古いコメントを表示
I have an array (array1) which I want to put into histogram bins. I have a second array (array2) which is the same length.
I can sum the values of array2 in each bin with this:
[count, edges, idx] = histcounts(array1,edges);
binsums = accumarray(idx,array2);
But how can I calculate the median values of array2 in each bin?
0 件のコメント
採用された回答
Star Strider
2023 年 11 月 15 日
I would use another accumarray call:
binmedians = accumarray(idx+1, (1:numel(idx)).', [], @(x)median(array2(x)))
Creating data and correcting for ‘idx’ having 0 for some elements (making them inappropriate index values) —
array1 = randn(1E+3,1);
array2 = randn(1E+3,1);
edges = 1:9;
[count, edges, idx] = histcounts(array1,edges);
binsums = accumarray(idx+1,array2)
binmedians = accumarray(idx+1, (1:numel(idx)).', [], @(x)median(array2(x)))
.
2 件のコメント
Star Strider
2023 年 11 月 15 日
As always, my pleasure!
One such:
binmedians = accumarray(idx+1, (1:numel(idx)).', [], @(x)median(array2(x),'omitmissing'))
There are several others.
.
その他の回答 (1 件)
Steven Lord
2023 年 11 月 15 日
If all you want is the bin numbers, you could also use the discretize function instead of histcounts.
参考
カテゴリ
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!