matlab如何将一组数据的概率密度函数与频数直方图画在一起?

如图所示

1、首先,我们随机产生三组范围不同的数据,数据量都为500,他们的边界分别为[10,15],[23,38],,[38,58]。

2、分别画出x1,x2,x3对应的曲线,用MATLAB的内置函数plot进行操作,分别用三个plot进行绘图。

3、需要用一个语句来保留前面所绘制的图,在需要保留的图的后面加一句hold on,即可将该图保留,使它不被后面的图所覆盖。

4、这样就可以将三条曲线画在一张图上,为了区别,要分别给这三条曲线定义不同的颜色。

5、为了图的美观,我们可以用grid on添加网格线,还需要添加横纵坐标轴标题。

6、因为我们画的是多条曲线,因此还需要添加图例。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-05
%生成一组随机数(正态分布)
data=normrnd(0,1,1,500);
%绘制直方图
hist(data,20); hold on;
%求出概率密度函数参数
[mu,sigma]=normfit(data);
%绘制概率密度函数
[n,x]=hist(data,20);
y=normpdf(x,mu,sigma);
%处理一下数据,使得密度函数和最高点对齐
y=y/max(y)*max(n);
plot(x,y,'r-');

追问

谢谢!你好,如果是正态分布的数据我会画,但是我的数据是一系列随机的观测值,这个该怎么实现呢?

追答

先得求出概率密度函数

追问

用ksdensity函数可以计算出概率密度函数、hist画直方图。。但是我不会结合在一起。如果hold on的话概率密度函数就会因为值太小而看不到了

追答

因为概率密度函数和直方图两者的坐标轴不一致,必须将其中的概率密度函数放大,才能在图上对齐

追问

不能设置成双y轴的吗?

本回答被提问者和网友采纳
第2个回答  2018-07-24
频数分布直方图

x=load('文件名');
y=[始值:组距:末值];
histogram(x,y);
ax=gca;
ax.YLim=[0 11]; %坐标轴刻度范围
ax.YTick=[0:1:11]; %刻度
ax.YTickLabel=[0:1:11]; %显示出来的刻度
ax.XLabel.String='x轴标题';
ax.YLabel.String='';
ax.XLabel.Position=[1700 -0.8 0]; %坐标轴标题文字的位置
第3个回答  2018-07-13
histogram(变量,'normalization','pdf')
相似回答