具有对数分格和归一化Matlab的直方图

时间:2019-06-05 23:41:35

标签: matlab histogram normalize bins

我想对矩阵的每一列进行直方图绘制,但是我希望对数箱是对数的并且也要归一化,同样,在我进行直方图绘制后,我也希望在不显示条形的情况下进行拟合。 iv尝试了以下方法:

y=histogram(x,'Normalized','probability');

这使我的直方图归一化,但是我不知道如何使垃圾箱对数。

2 个答案:

答案 0 :(得分:2)

我认为正确的语法应为gensim。 为了使其具有对数性,您必须更改轴对象。 例如:

Normalization

答案 1 :(得分:1)

创建对数直方图的方法有两种:

  1. 计算数据对数的直方图。这可能是最好的方法,因为您让软件决定要创建的仓位数量,依此类推。x轴现在不匹配您的数据,而是匹配您的数据日志。对于拟合功能,这可能是有益的,但对于显示,可能会造成混淆。在这里,我更改了刻度线标签以显示实际值,使刻度线本身保持其原始值:

    y = histogram(log(x),'Normalization','probability');
    h = gca;
    h.XTickLabels = exp(h.XTick);
    
  2. 以对数刻度确定您自己的仓边缘。在这里,您需要根据样本数量和样本分布来确定需要多少个容器。

    b = 2.^(1:0.25:3);
    y = histogram(x,b,'Normalization','probability');
    set(gca,'XTick',b) % This just puts the tick marks in between bars so you can see what we did.
    

使用方法1,MATLAB可以根据输入数据自动确定垃圾箱的数量和垃圾箱边缘。因此,它不适合创建多个匹配的直方图。在这种情况下,请使用方法2。可以通过这种方式更简单地获得in边缘:

N = 10;         % number of bins
start = min(x); % first bin edge
stop = max(x);  % last bin edge
b = 2.^linspace(log2(start),log2(stop),N+1);