This behavior can be reproduced in Matlab R2021b Update 1 and 2, as well as in Matlab R2022a.

# The function 'polarhistogram' can produce overlapping bins

29 views (last 30 days)

Show older comments

Alexandre Aksenov
on 11 Jan 2022

Edited: Alexandre Aksenov
on 18 Sep 2022 at 10: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.

figure('Name','histogram made plausible');

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?

Thanks in advance,

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 Comments

### Accepted Answer

Shivam Singh
on 4 Feb 2022

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.

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.

figure('Name','histogram made plausible');

polarhist3 = polarhistogram(mod(thetaEx+2*pi/3,2*pi));

Edges3 = polarhist3.BinEdges; %equals Edges1

##### 4 Comments

### More Answers (0)

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!