1. ホーム
  2. matlab

[解決済み] MATLABでヒストグラムを正規化する方法は?

2022-02-17 17:36:12

質問

確率密度関数下の面積が1になるように、ヒストグラムを正規化するには?

解決方法は?

これに対する私の回答は、あなたの 以前の質問 . 確率密度関数の場合。 空間全体にわたる積分は 1 . 合計で割ると ではない で、正しい密度が得られます。正しい密度を得るには、面積で割る必要があります。私の主張を説明するために、次の例を試してみてください。

[f, x] = hist(randn(10000, 1), 50); % Create histogram from a normal distribution.
g = 1 / sqrt(2 * pi) * exp(-0.5 * x .^ 2); % pdf of the normal distribution

% METHOD 1: DIVIDE BY SUM
figure(1)
bar(x, f / sum(f)); hold on
plot(x, g, 'r'); hold off

% METHOD 2: DIVIDE BY AREA
figure(2)
bar(x, f / trapz(x, f)); hold on
plot(x, g, 'r'); hold off

どの方法が正しい答え(赤い曲線)と一致するかは、ご自身でお確かめください。

ヒストグラムを正規化するもう一つの方法(方法2より簡単)は,次のように割り算することです。 sum(f * dx) これは、確率密度関数の積分を表すものであり、すなわち

% METHOD 3: DIVIDE BY AREA USING sum()
figure(3)
dx = diff(x(1:2))
bar(x, f / sum(f * dx)); hold on
plot(x, g, 'r'); hold off