如何用matlab中的玫瑰图绘制概率密度?

时间:2017-06-27 10:25:34

标签: matlab statistics histogram normalization rose-diagram

我试图在matlab中绘制带有玫瑰函数的标准化概率直方图(我不能使用极谱法,因为我没有最新版本的Matlab。我的版本是2015b)。

在正常的直方图中,我通常这样做:

h = histogram(x,'Normalization','probability');

但同样对玫瑰不起作用。 如果我尝试将h.Values传递给玫瑰图,这不起作用,因为玫瑰使用它作为数据,而不是作为值......

x=rand(100)*90;
xRad = x(:)./180*pi;
xRadProb = histogram(xRad,'Normalization','probability');
figure(1)
hax = axes();
rose(hax, xRadProb.Values,10)

有任何建议如何做到这一点? 非常感谢!

1 个答案:

答案 0 :(得分:3)

您似乎需要自己进行规范化。但这很容易。 对于'probability',规范化只是将未规范化的结果(每个bin的计数)除以数据值的总数。

因此,请使用双输出版本或rose,进行规范化,然后使用polar(在R2015b中)或polarplot(在最新的Matlab版本中)进行极坐标绘图:

[t, r] = rose(xRad, 100); % 100 is desired number of bins. Set as needed
r = r./numel(xRad); % normalize
polar(t, r) % polar plot

enter image description here

作为检查,以下是具有相同数量的箱子的polarhistogram的结果。请注意,在此函数中,容器会根据实际数据范围进行调整,因此在示例中需要指定25而不是100

polarhistogram(xRad, 25, 'Normalization', 'probability')

enter image description here