Matlab学习笔记(8)——hist函数

Matlab的hist函数

hist有直方图的意思,直方图也被称为频数直方图,它用来显示数据集的分布情况。在MATLAB中绘制直方图的函数是hist,用法是hist(y,x),表示以向量x的各个元素为统计范围,绘制y的分布情况。

1.N = hist(Y)

将向量Y的元素平均分到十个等间隔的容器中,并且返回每个容器的元素个数。如果Y是一个矩阵,hist指令逐列元素操作。Y为向量的情形见例1和2,为矩阵的情形见例3.

例1

>> Y = [1:10];
>> N = hist(Y);
>> N

N =

     1     1     1     1     1     1     1     1     1     1
>> hist(Y)     
>> Y = [1:6];
>> N = hist(Y);
>> N

N =

     1     1     0     1     0     1     0     1     0     1
>> hist(Y) 

Matlab学习笔记(8)——hist函数_第1张图片
Matlab学习笔记(8)——hist函数_第2张图片
每个条代表一个容器,条的高度代表容器中元素的多少。可以看到,无论Y的取值范围是多少,hist函数都将数据分到十个等间隔的容器中,不同的是每个间隔代表的长度不同,第一个间隔的长度是1,第二个间隔的长度是0.8。N是每个容器中的元素构成的数组。

例2

>> Y = [1, 2, 2, 5, 6, 6, 8, 11];
>> N = hist(Y);
>> N

N =

     3     0     0     1     2     0     1     0     0     1
>> hist(Y)

Matlab学习笔记(8)——hist函数_第3张图片
Y最大为11,最小为1,故而将区间[1,11]均分为10分,分别为[1, 2], (2,3], (3,4], (4,5], (5,6], (6,7], (7,8], (8,9], (9,10], (10,11].

例3

当Y是一个矩阵,hist指令逐列元素操作。

>>  Y = [1,2.5,2.1;3,3.5,6];
>>  N = hist(Y);
>> N

N =

     1     0     0
     0     0     0
     0     1     1
     1     0     0
     0     1     0
     0     0     0
     0     0     0
     0     0     0
     0     0     0
     0     0     1

>> hist(Y)

Matlab学习笔记(8)——hist函数_第4张图片
Y是一个两行三列的矩阵,N的行数代表区间的个数,N的一列对应Y的一列。例如,N的第一列表示,Y的第一列中的元素落在各个容器中的个数。
观察上图和矩阵Y,由于Y的元素最大为1,最小为6,故而将区间[1,6]以0.5的间隔划分为10个等长的子区间作为10个容器去容纳数据。图中有三种颜色的方条:蓝色,绿色和红色,分别对应Y中的第1,2,3列元素。如第一列元素为1和3,故而区间[1,1.5]和(2.5,3]中有蓝色方条。

2.N = hist(Y,M)

M是一个标量,表明使用M个箱子。(就像上面所说的如果不指定,默认是10个箱子)

例1

>> Y = [1, 1, 1.3, 2.6, 3, 3.4, 5, 5.9, 6, 6,1, 7, 7,2];
>> N = hist(Y, 6);
>> N

N =

     5     2     1     1     3     2

>> hist(Y, 6)

Matlab学习笔记(8)——hist函数_第5张图片

3.N = hist(Y,X)

>> y=[1.1 2.2 3.3];x=[2 3 4];
>> [h,xout]=hist(y,x)

h =

     2     1     0


xout =

     2     3     4

>> hist(y,x)

Matlab学习笔记(8)——hist函数_第6张图片
其中x是一个向量,返回x的长度个以x的元素为中心的容器内的,Y的分布情况。例如,如果x是一个5元素的向量,返回Y在以x-轴上x的元素为中心的,5个容器内数据直方分布。注意:如果更需要指定容器边界而不是中心,可以使用histc。
[n,xout] = hist(…) 返回包含频数和容器位置的向量n和xout。可以使bar(xout,n)绘制直方图。
那么在上例中,x长度3,以x中元素为每个容器的中心,故返回值xout==x。
不禁要问,以xout(或者x)元素为中心的3个容器的起止范围是如何定义的,分别是多少?没有起始范围,在该容器内的分布(频数)就无意义。
不得不说,我觉得matlab这个分区间的方式有点奇怪。下面是贴吧里,一位大牛给出的我比较认可的答案。
第一个分组是(-inf,2.5],第二个是(2.5,3.5],第三个是(3.5,inf)。

参考文献

MATLAB实现频数直方图——hist的使用
请解释hist(y,x)的返回值的含义

你可能感兴趣的:(matlab,函数,matlab,hits)