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

How to plot probability density with rose plot in matlab?

我正在尝试在 matlab 中使用 rose 函数绘制归一化的概率直方图(我不能使用极坐标直方图,因为我没有最新版本的 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)

有什么建议吗? 非常感谢!

看来你需要自己做归一化了。但这很容易。 对于 'probability',归一化只是将未归一化的结果(每个 bin 的计数)除以数据值的总数。

因此,使用双输出版本或 rose,归一化,然后使用 polar (in R2015b) or 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

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

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