2011-12-22 7 views
1

私は累積分布の計算に助けが必要です。matlab:2Dデータビニング

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を使用してデータを変換することです。

あなたはまた、代わりにlogや他の機能のsqrtを試すことができます

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

を試してみてください。

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の指数ではありませんvaulesがゼロ以下になっています...私はちょうど同じ曲線の形を持つ必要がありますが、y = 1(および高x)に近いhmm..lessデータポイントが必要です。それで、私はy軸に沿った追加のビンニングについて考えていました... – Art

関連する問題