# The function 'polarhistogram' can produce overlapping bins

조회 수: 13(최근 30일)
Alexandre Aksenov 2022년 1월 11일
편집: Alexandre Aksenov 2022년 9월 18일
Good day
I am experiencing an unexpected behavior of the function 'polarhistogram'. Here is my code:
thetaEx = [0.1 1.1 5.4 3.4 2.3 4.5 3.2 3.4 5.6 2.3 2.1 3.5 0.6 6.1];
%see https://www.mathworks.com/help/matlab/ref/polarhistogram.html
figure('Name','Plausible histogram');
polarhist1 = polarhistogram(thetaEx);
Edges1 = polarhist1.BinEdges; %-> (0:2*pi/3:2*pi) : 1x4 double
figure('Name','histogram with intersecting bins');
polarhist2 = polarhistogram(thetaEx+2*pi/3);
Edges2 = polarhist2.BinEdges; %-> (pi/2:3*pi/4:(2*pi+3*pi/4)) : 1x4 double
Overlap2 = Edges2(end)-Edges2(1)-2*pi; %-> pi/4
%These numbers confirm an overlap.
polarhist3 = polarhistogram(mod(thetaEx+2*pi/3,2*pi));
Edges3 = polarhist3.BinEdges; %equals Edges1
Here are the figures.
The bins of the second histogram are clearly overlapping, which is confirmed by the property 'BinEdges'. This is not what one would expect of a histogram.
The third histogram shows that this unexpected behavior varies depending on shifts by multiples of 2*pi, although this transformation does not modify an angular distribution.
Could one indicate whether I am missing a necessary condition for using the function, or another important detail?
Alexandre
The version of Matlab used: R2021b
Edit
The second histogram changes when the same code is run in Matlab R2022b. The new edges contain no overlap:
Edges2 = polarhist2.BinEdges; %R2022b: 2*pi/3:2*pi/3:8*pi/3
The new figure is a correct histogram, looking as follows:
##### 댓글 수: 5표시숨기기 이전 댓글 수: 4
Update: This bug was fixed in MATLAB R2022b.

댓글을 달려면 로그인하십시오.

### 채택된 답변

Shivam Singh 2022년 2월 4일
Hello,
It is my understanding that you are facing the issue of overlapping bins in some cases when you are using the “polarhistogram” function.
This issue is brought to the notice of our developers and they may be investigating further.
You may refer to the below example which is a workaround by using "mod" function:
thetaEx = [0.1 1.1 5.4 3.4 2.3 4.5 3.2 3.4 5.6 2.3 2.1 3.5 0.6 6.1];
%see https://www.mathworks.com/help/matlab/ref/polarhistogram.html
figure('Name','Plausible histogram');
polarhist1 = polarhistogram(thetaEx);
Edges1 = polarhist1.BinEdges; %-> (0:2*pi/3:2*pi) : 1x4 double
figure('Name','histogram with intersecting bins');
polarhist2 = polarhistogram(mod(thetaEx+2*pi/3,2*pi));% THIS LINE IS ONLY MODIFIED FROM YOUR CODE
Edges2 = polarhist2.BinEdges; %-> (pi/2:3*pi/4:(2*pi+3*pi/4)) : 1x4 double
Overlap2 = Edges2(end)-Edges2(1)-2*pi; %-> pi/4
%These numbers confirm an overlap.
polarhist3 = polarhistogram(mod(thetaEx+2*pi/3,2*pi));
Edges3 = polarhist3.BinEdges; %equals Edges1
##### 댓글 수: 4표시숨기기 이전 댓글 수: 3
Alexandre Aksenov 2022년 9월 18일
편집: Alexandre Aksenov 2022년 9월 18일
Thanks to Mathworks for your job! I am glad to be able to use the official instruction again, without workaround.

댓글을 달려면 로그인하십시오.

### 범주

Find more on Cloud Integrations in Help Center and File Exchange

R2021b

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by