具有对数 bin 和归一化的直方图
Histogram with logarithmic bins and normalized
我想制作矩阵每一列的直方图,但我希望 bins 是对数的并且也被归一化。在我创建直方图后,我想在不显示条形的情况下对其进行拟合。这是我试过的:
y=histogram(x,'Normalized','probability');
这给了我归一化的直方图,但我不知道如何使 bins 对数。
我认为正确的语法是 Normalization
。
要使其成为对数,您必须更改轴对象。
例如:
ha = axes;
y = histogram( x,'Normalization','probability' );
ha.YScale = 'log';
创建对数直方图有两种不同的方法:
计算数据对数的直方图。这可能是最好的方法,因为您让软件决定要创建多少个 bin,等等。 x-axis 现在不匹配您的数据,它匹配您的数据日志。对于拟合一个函数,这可能是有益的,但对于显示它可能会造成混淆。在这里,我更改刻度标记标签以显示实际值,使刻度标记本身保持其原始值:
y = histogram(log(x),'Normalization','probability');
h = gca;
h.XTickLabels = exp(h.XTick);
以对数刻度确定您自己的 bin 边缘。这里需要根据样本的数量和样本的分布来确定需要多少个bin。
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 根据输入数据自动确定 bin 数和 bin 边缘。因此它不适合创建多个匹配直方图。对于这种情况,使用方法 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);
我想制作矩阵每一列的直方图,但我希望 bins 是对数的并且也被归一化。在我创建直方图后,我想在不显示条形的情况下对其进行拟合。这是我试过的:
y=histogram(x,'Normalized','probability');
这给了我归一化的直方图,但我不知道如何使 bins 对数。
我认为正确的语法是 Normalization
。
要使其成为对数,您必须更改轴对象。
例如:
ha = axes;
y = histogram( x,'Normalization','probability' );
ha.YScale = 'log';
创建对数直方图有两种不同的方法:
计算数据对数的直方图。这可能是最好的方法,因为您让软件决定要创建多少个 bin,等等。 x-axis 现在不匹配您的数据,它匹配您的数据日志。对于拟合一个函数,这可能是有益的,但对于显示它可能会造成混淆。在这里,我更改刻度标记标签以显示实际值,使刻度标记本身保持其原始值:
y = histogram(log(x),'Normalization','probability'); h = gca; h.XTickLabels = exp(h.XTick);
以对数刻度确定您自己的 bin 边缘。这里需要根据样本的数量和样本的分布来确定需要多少个bin。
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 根据输入数据自动确定 bin 数和 bin 边缘。因此它不适合创建多个匹配直方图。对于这种情况,使用方法 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);