Matlab绘制特殊图形------直方图

     除了可以使用Excel绘制直方图之外,还可以使用Matlab绘制直方图,同时Matlab绘制的直方图更为美观,以下是使用Matlab 绘制直方图的使用方法。

一、函数hist()

该函数有两种使用方法

(1)hist(x)

其中x为一维向量,这种用法是将x中的最小值和最大值之间的区间等分成10等份,输出的直方图横坐标是x值,纵坐标是该值的个数,可以理解为下面中的hist(x,10)。

比如x=[1 2 3 4 6 5 4 3 5 6 9 0 8 1 2 4 3 5 6 10];
>> hist(x)

显示结果为:

Matlab绘制特殊图形------直方图

(2)函数格式为 [a,b]=hist(x,n)

    其中x是一维向量,函数功能是将x中的最小和最大值之间的区间等分n份,横坐标是x值,纵坐标是该值的个数。返回的a是落在该区间内的个数,b是该区间的中心线位置坐标。

比如:

 num = 200;
data = randn(1,num);
m =10;
[a,b]=hist(data,m)

a =

     2     9    26    30    55    43    24     4     5     2
b =

   -2.6182   -1.9659   -1.3136   -0.6613   -0.0091    0.6432    1.2955    1.9477    2.6000    3.2523

运行hist(data,m)之后得到的直方图如下所示:

Matlab绘制特殊图形------直方图

可以看到,第二种用法是第一种用法的一般性,即第一种用法hist()函数只有一个参数时,默认将该一维向量从最小值到最大值均分为10份。

二、函数bar()

      对于bar函数的使用一般格式如下:bar(x,y) 其中x必须是严格递增的且一维向量x和一维向量y长度相同。以一维向量x的值为x坐标,对应的y为y坐标画直方图。

例如

 x=0:0.2:10;
>> y=sin(x);
>> bar(x,y)

Matlab绘制特殊图形------直方图

三、函数histgram()

(1) X = randn(1000,1); n = 15; h = histogram(x,n)%与hist相同

(2)两个直方图叠加

 x = randn(3000,1);y = 1 + randn(6000,1);

h1 = histogram(x);

hold on;

h2 = histogram(y);

Matlab绘制特殊图形------直方图

(3)相比hist函数只能显示频数,histogram可以显示频率

h1.Normalization = 'probability';h1.BinWidth = 0.25;

h2.Normalization = 'probability';h2.BinWidth = 0.25;

Matlab绘制特殊图形------直方图

(4)密度拟合的例子

x = 2*randn(5000,1) + 4;

histogram(x,'Normalization','pdf')

hold on

y = -5:0.1:15;

mu = 5;

sigma = 2;

f = exp(-(y-mu).^2./(2*sigma^2))./(sigma*sqrt(2*pi));

plot(y,f,'LineWidth',1.5)

Matlab绘制特殊图形------直方图