我试图在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)
有任何建议如何做到这一点? 非常感谢!
答案 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
作为检查,以下是具有相同数量的箱子的polarhistogram
的结果。请注意,在此函数中,容器会根据实际数据范围进行调整,因此在示例中需要指定25
而不是100
:
polarhistogram(xRad, 25, 'Normalization', 'probability')