2011-12-22 266 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