如何自动归一化多个直方图以达到相同的最大水平?
How to automatically normalize multiple histograms to get to the same maximum level?
我有多个从各种样本生成的直方图,最后需要合并。我发现我在组合阶段没有得到好的结果,因为不同的地块有不同的最大值,但如果我将它们归一化为有些相似的值,我会得到一个好的结果。
例如下面三个图:
现在可以看出,其中一个图在 0.067
左右达到峰值,而另外两个在 0.4
左右达到峰值。我无法在这种状态下组合它们,但在直观地查看这些图后我知道如果我乘以第一个图 0.6
我得到这个:
现在它们处于同一级别,可以一起显示了。
我在视觉上对每个结果都这样做。是否可以将其自动化?由于它并不总是这样,有时第一个和第二个输入(图)很低,但第三个输入达到峰值,我必须将第三个图除以某个值,我在目测图后就知道了。
Matlabs 函数 histogram
有一些 normalization types built in. You can either normalize the number of counts, or the sum of the histogram area (see also), ...但是你还不能标准化你可能想要的最大值。
我建议在不使用 histcounts
绘图的情况下计算直方图,然后将它们归一化为常见的最大值,例如 1,然后将它们全部绘制在一起或单独绘制成条形图。
示例:
% generate example data
a = randn(100, 1) + 5;
b = randn(100, 1) * 4 + 8;
nbins = 0:20;
% compute histograms
[na, edges] = histcounts(a, nbins);
centers = mean([edges(1:end-1);edges(2:end)]);
nb = histcounts(b, nbins);
% normalize histograms to maximum equals 1
na = na / max(na);
nb = nb / max(nb);
% plot as bar plots with specified colors (or however you want to plot them)
figure;
bar_handle = bar(centers', [na',nb']);
bar_handle(1).FaceColor = 'r';
bar_handle(2).FaceColor = 'g';
title('histogram normalized to max');
看起来像
我有多个从各种样本生成的直方图,最后需要合并。我发现我在组合阶段没有得到好的结果,因为不同的地块有不同的最大值,但如果我将它们归一化为有些相似的值,我会得到一个好的结果。
例如下面三个图:
现在可以看出,其中一个图在 0.067
左右达到峰值,而另外两个在 0.4
左右达到峰值。我无法在这种状态下组合它们,但在直观地查看这些图后我知道如果我乘以第一个图 0.6
我得到这个:
现在它们处于同一级别,可以一起显示了。
我在视觉上对每个结果都这样做。是否可以将其自动化?由于它并不总是这样,有时第一个和第二个输入(图)很低,但第三个输入达到峰值,我必须将第三个图除以某个值,我在目测图后就知道了。
Matlabs 函数 histogram
有一些 normalization types built in. You can either normalize the number of counts, or the sum of the histogram area (see also), ...但是你还不能标准化你可能想要的最大值。
我建议在不使用 histcounts
绘图的情况下计算直方图,然后将它们归一化为常见的最大值,例如 1,然后将它们全部绘制在一起或单独绘制成条形图。
示例:
% generate example data
a = randn(100, 1) + 5;
b = randn(100, 1) * 4 + 8;
nbins = 0:20;
% compute histograms
[na, edges] = histcounts(a, nbins);
centers = mean([edges(1:end-1);edges(2:end)]);
nb = histcounts(b, nbins);
% normalize histograms to maximum equals 1
na = na / max(na);
nb = nb / max(nb);
% plot as bar plots with specified colors (or however you want to plot them)
figure;
bar_handle = bar(centers', [na',nb']);
bar_handle(1).FaceColor = 'r';
bar_handle(2).FaceColor = 'g';
title('histogram normalized to max');
看起来像