如何标准化直方图
Posted
技术标签:
【中文标题】如何标准化直方图【英文标题】:how to normalize histogram 【发布时间】:2016-01-13 20:28:07 【问题描述】:我会使用逆方法创建指数分布。我想标准化直方图。我该怎么做?
这是我的代码
N=100;
Lambda=2;
r=rand(N,1);
X=-log(1-r)/Lambda;
hist(X), colormap(bone);
t = 0:0.01:5;
pdf=Lambda*exp(-Lambda*t);
hold on, plot(t,pdf,'LineWidth',2)
【问题讨论】:
请通过规范化直方图来定义您的意思 您将每个元素与给定的数字相乘,pdf=c*Lambda*exp(-Lambda*t);
。
【参考方案1】:
直方图应归一化为单位面积,以便与理论pdf进行比较。要标准化为单位面积,您需要除以样本数和 bin 宽度:
N = 100;
Lambda=2;
r = rand(N,1);
X = -log(1-r)/Lambda;
[hy, hx] = hist(X); %/ get histogram values
hy = hy/numel(X)/(hx(2)-hx(1)); %//normalize histogram
bar(hx, hy) %// plot histogram
t = 0:0.01:5;
pdf = Lambda*exp(-Lambda*t);
hold on, plot(t,pdf,'LineWidth',2) %// plot pdf
或使用新的histogram
函数(在R2014b 中引入),该函数根据指定的规范化选项自动规范化:
N = 100;
Lambda=2;
r = rand(N,1);
X = -log(1-r)/Lambda;
histogram(X, 'Normalization', 'pdf') %// plot normalized histogram
t = 0:0.01:5;
pdf = Lambda*exp(-Lambda*t);
hold on, plot(t,pdf,'LineWidth',2) %// plot pdf
【讨论】:
对于像我这样的外行读者来说,单位面积表示曲线的总面积必须等于1(单位)。以上是关于如何标准化直方图的主要内容,如果未能解决你的问题,请参考以下文章