我有多个直方图,这些直方图是从最终需要组合的各种样本中生成的。我发现我在组合阶段没有得到好的结果,因为不同的图有不同的最大值,但是如果我将它们标准化为有些相似的值,我会得到一个好的结果。
例如以下三个图:
现在可以看出,其中一个地块在0.067
附近达到峰值,而其他两个地块在0.4
附近。我无法在这种状态下将它们组合在一起,但在视觉上看到这些情节后,我知道如果我乘以第一个情节0.6
我会得到这个:
现在它们处于同一级别,可以一起显示。
我在视觉上对每一个结果都这样做。是否有可能实现自动化?因为它并不总是这样,有时第一和第二输入(绘图)是低的,但第三个输入达到峰值,我将不得不将第三个绘图除以某个值,我知道在视觉上看图之后。
答案 0 :(得分:3)
Matlabs函数histogram
有一些normalization types built in。您可以标准化计数的数量,或直方图区域的总和(请参阅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');
看起来像