Calculate median values of slices of array associated with histogram bins
조회 수: 7 (최근 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에서 Histograms에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!