【问题标题】:matlab: 2D data binningmatlab:二维数据分箱
【发布时间】:2012-01-25 19:47:03
【问题描述】:

我需要一些帮助来计算累积分布。

假设我有这样的数据:

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

我必须计算概率累积分布并将其装箱以减少点数。我就是这样做的(让 bin = 50):

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

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

【问题讨论】:

    标签: matlab distribution histogram bin


    【解决方案1】:

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

    试试

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

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

    更新

    在您发表评论后查看问题我认为您想使用以下内容:

    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,'.')
    

    【讨论】:

    • 感谢您的回答,但是在 log10(data) 曲线不再是指数并且 x 值低于零之后...我只需要具有相同的曲线形状但 hmm..less 数据点关闭到 y=1(和高 x)。这就是为什么我正在考虑沿 y 轴进行额外的分箱...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多