Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何设置直方图的最大值_Matlab_Plot_Normal Distribution - Fatal编程技术网

Matlab 如何设置直方图的最大值

Matlab 如何设置直方图的最大值,matlab,plot,normal-distribution,Matlab,Plot,Normal Distribution,图像优先: 如你所见,我有一组正态分布。出于演示的目的,有一个反馈认为这些图应该“标准化”,因为我所理解的是,将图值设置为某个最大值,并将图的曲率设置为适合该值。我们的目标是使这些情节更容易进行视觉比较-我希望这是有意义的。我正在使用histfit进行此绘图 你知道一些方法吗?我怎样才能使这些图表更具可比性 编辑: 因为它被标记为复制品,所以事实并非如此。我并不是在寻找符合直方图的概率密度,我想为每个概率密度曲线设置一个最大值。我知道有关市场的话题,只是在那里找不到我的答案 编辑2: 这些是我

图像优先:

如你所见,我有一组正态分布。出于演示的目的,有一个反馈认为这些图应该“标准化”,因为我所理解的是,将图值设置为某个最大值,并将图的曲率设置为适合该值。我们的目标是使这些情节更容易进行视觉比较-我希望这是有意义的。我正在使用
histfit
进行此绘图

你知道一些方法吗?我怎样才能使这些图表更具可比性

编辑: 因为它被标记为复制品,所以事实并非如此。我并不是在寻找符合直方图的概率密度,我想为每个概率密度曲线设置一个最大值。我知道有关市场的话题,只是在那里找不到我的答案

编辑2:

这些是我的代码中的练习及其产生的解决方案:

[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);

为清晰起见,直接链接:

从中我得到:

[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;
其结果是:


希望这能解释一切。

你有两个非零均值和非单位标准偏差的图。这种分布很难比较。在这种情况下(我认为),标准化的意思是使拟合的钟形曲线的平均值为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')
这将产生:

要进行规范化,只需用规范化数据替换要拟合的
数据
,如下所示:

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


使图表的比较更加清晰

你可以把每一个historgrm除以它的最大值…为什么你不能直接缩放它们呢?可能会给您一些提示。要规范化直方图(或pdf),请确保其面积为1。例如,见@KrystianMeresiński:也许你应该向我们展示你想要的,而不是让我们猜测并失败。。。在画你要找的曲线之前/之后,用手绘的方式画一点怎么样?你可能没有意识到,但这确实是一个复制品;同样的答案在这里也适用。如上@LuisMendo所述,所有概率密度曲线的面积应等于1。你应该听从别人给你的明智建议。不要为了让你们的发行版看起来更“好看”而开始弄乱它们的宽度或平均值。我得到了这个结果:-这更清晰,所以谢谢你们。不过,这不是我想要的标准化。所以你去掉了分布的均值和方差。。。结果是什么意思?!大部分信息都不见了@Jean-FrançoisCorbett,这可能有用的原因有很多。假设我有一个过程,我预感是高斯的,但我不知道。通过把它放在标准的标准格式中,我可以更好地以图形的方式确定这一点(当然,正确的方法是通过QQ图)。在我看来,像峰度和偏度这样的东西在这种格式中更容易以图形的方式看到。假设我有一天消费的可乐瓶和健怡可乐瓶的数量数据,如果我将两者都标准化,我可能会处于一个更好的状态来评估平均值周围的趋势。