2011-12-22 47 views
1

我需要一些计算累积分布的帮助。matlab:二维数据binning

可以说我有这样的数据:

data = abs(randn(1000,1)); 

我算算概率累积分布和斌它减少点的数量。我做这样说,这(让我们斌= 50):

[n, x] = hist(data, 50); 
y = cumsum(n); 
y = y./max(y); 

的问题是,现在我有很多接近Y = 1,但只有少数接近于零的点。我想要有点平均分布分布(在y轴上额外的分箱?)。我希望你知道我的意思:)我该怎么做? 谢谢!

回答

2

因此,它实际上意味着在您的data向量中,许多点接近0.通常的过程是使用log:log2或log10转换数据,具体取决于数据的性质。

尝试

[n, x] = hist(log10(data), 50); 
y = cumsum(n); 
y = y./max(y); 

您也可以尝试sqrt代替log或其他功能。

UPDATE

查看您的评论后,这个问题我想你想使用这样的事:

bin = 10.^(linspace(log10(min(data)),log10(max(data)),50)); 
[n, x] = hist(data, bin); 
y = cumsum(n); 
y = y./max(y); 
plot(bin,y,'.') 
+0

感谢的答案,但经过LOG10(数据)曲线不是指数再和X沃勒斯正在低于零...我只需要有相同的曲线形状,但与嗯..无数据点接近y = 1(和高x)。这就是为什么我在考虑沿着y轴进行额外的分档 – Art 2011-12-22 04:44:38