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 =
1111111111
>> hist(Y)
>> Y = [1:6];
>> N = hist(Y);
>> N
N =
1101010101
>> hist(Y)
每个条代表⼀个容器,条的⾼度代表容器中元素的多少。可以看到,⽆论Y的取值范围是多少,hist函数都将数据分到⼗个等间隔的容器中,不同的是每个间隔代表的长度不同,第⼀个间隔的长度是1,第⼆个间隔的长度是0.8。N是每个容器中的元素构成的数组。
例2
>> Y = [1, 2, 2, 5, 6, 6, 8, 11];
>> N = hist(Y);
>> N
N =
3001201001
>> hist(Y)
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 =
100
000
011
100
010
000
000
000
000
matlab直方图001
>> hist(Y)
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 =
521132
>> hist(Y, 6)
3.N = hist(Y,X)
>> y=[1.12.23.3];x=[234];
>> [h,xout]=hist(y,x)
h =
210
xout =
234
>> hist(y,x)
其中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)。
参考⽂献
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论