如何设置直方图的最大值

时间:2014-11-25 15:05:41

标签: matlab plot normal-distribution

图片优先: enter image description here

如您所见,我有一组正态分布。为了演示目的,有一个反馈,那些图应该“标准化”,我理解的情节值设置为某个最大值,并且曲线的曲率设置为适合这个。目标是使这些图更容易在视觉上进行比较 - 我希望这是有道理的。我正在使用histfit这个情节。

你知道某种方法我怎么能以这种方式使这些图表更具可比性?

编辑: 由于它被标记为重复,事实并非如此。我并不是真的在寻找拟合直方图的概率密度,我想为每个概率密度曲线设置一个最大值。我知道市场主题,我在那里找不到我的回答。

EDIT2:

这些是我的代码中使用他们生成的解决方案的练习:

[f1,x1] = hist(data1);
[f2,x2] = hist(data2);
[f3,x3] = hist(data3);

avg = mean(data1);
stdev = std(data1);
VERT1 = sort(data1);
y1 = exp(- 0.5 * ((VERT1 - avg) / stdev) .^ 2) / (stdev * sqrt(2 * pi));
y11 = y1/max(data1);


avg = mean(data2);
stdev = std(data2);
VERT2 = sort(data2);
y2 = exp(- 0.5 * ((VERT2 - avg) / stdev) .^ 2) / (stdev * sqrt(2 * pi));
y22 = y2/max(data2);

% 
avg = mean(data3);
stdev = std(data3);
VERT3 = sort(data3);
y3 = exp(- 0.5 * ((VERT3 - avg) / stdev) .^ 2) / (stdev * sqrt(2 * pi));
y33 = y3/max(data3);

enter image description here

为清晰起见,请提供直接链接:http://i.imgur.com/YPrcM3R.jpg

this explanation我得到了这个:

[f1,x1] = hist(data1);
[f2,x2] = hist(data2);
[f3,x3] = hist(data3);


avg = mean(data1);
stdev = std(data1);
VERT1 = sort(data1);
y1 = exp(- 0.5 * ((VERT1 - avg) / stdev) .^ 2) / (stdev * sqrt(2 * pi));



avg = mean(data2);
stdev = std(data2);
VERT2 = sort(data2);
y2 = exp(- 0.5 * ((VERT2 - avg) / stdev) .^ 2) / (stdev * sqrt(2 * pi));



avg = mean(data3);
stdev = std(data3);
VERT3 = sort(data3);
y3 = exp(- 0.5 * ((VERT3 - avg) / stdev) .^ 2) / (stdev * sqrt(2 * pi));


h1 = bar(x1,f1/trapz(x1,f1));hold on;
h2 = bar(x2,f2/trapz(x2,f2),'r');hold on;
h3 = bar(x3,f3/trapz(x3,f3),'g');hold on;
plot(VERT1,y1,'b-');hold on;
plot(VERT2,y2,'r-');hold on;
plot(VERT3,y3,'g-');hold off;

结果为:enter image description here

希望这能解释一切。

1 个答案:

答案 0 :(得分:2)

您所拥有的是具有非零均值和非单位标准差的两个图。这种分布很难比较。在这种情况下(我认为)归一化意味着拟合钟形曲线0和标准偏差1的平均值。这可以非常简单地实现。这是一个玩具示例:

clf;
data1 = random('normal',300,30,100,1); %Randomly generated first dataset
data2 = random('normal',250,10,100,1); %Randomly generated second dataset
h1=histfit(data1); %Plot the data
hold on;
h2=histfit(data2);
delete(h1(1));
delete(h2(1));
set(h2(2),'color','b')

这会产生:

enter image description here

要标准化,只需将您符合规范化数据的data替换为:

h1=histfit( (data1-mean(data1)) / std(data1) );
h2=histfit( (data2-mean(data2)) / std(data2) );

产量: enter image description here

使图表的比较更清晰。