如何在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')
我正在尝试在 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')