如果在一个矩阵中杂乱的分布这一组数据,且数据中有重复,想统计出相同数据出现的次数,可使用以下方法:
设该矩阵为a(1,20),则可以
a=[2.57,2.9,2.87,2.82,2.49,2.69,3.09,2.91,3.0,3.058,2.92,2.84,3.23,3.1,3.02,3.11,2.87,2.95,2.92,2.73];
x=unique(a);
y=a;
[m
n]=hist(y,x);
得到的结果n为相应的量,对应的m为n在a中出现的次数。x=unique(a);
m =[ 1 1 1 1
1 1 2 1 1 2 1 1 1 1 1 1 1 1]
n =[ 2.4900
2.5700 2.6900 2.7300 2.8200 2.8400 2.8700 2.9000 2.9100
2.9200 2.9500 3.0000 3.0200 3.0580 3.0900 3.1000 3.1100
3.2300]
该方法不必对a排序后再统计,较为方便。
n(1)=2.4900
n(2)=2.5700,
2.histc函数
首先说一下hist函数的作用:hist 绘制直方图函数n =
hist(Y)将向量Y中的元素分到10个等间隔的范围内,并返回每个范围内元素的个数作为一行向量。如果Y是一个m x
p的矩阵,hist将Y的每一列作为一个向量,并返回一个10
x
p的矩阵n。n的每一列的值对应Y的该列。n = hist(Y, x)
x是一个向量,返回x的长度个以x为中心的,Y的分布情况。例如:如果x是一个5元素的向量,返回Y在以x为中心的,x长度个范围内数据直方分布。注:如果更需要制定数值边界而不是中心,可以使用histc。
例如:
得到数组Y的分布情况,缺省为将数组元素分为10个区间,来统计在该区间的分布。
y=[2.57,2.9,2.87,2.82,2.49,2.69,3.09,2.91,3.0,3.058,2.92,2.84,3.23,3.1,3.02,3.11,2.87,2.95,2.92,2.73];
M=hist(y)
y进行个数统计(10个区间)
结果:
M =
1
1
1
1
2
6
2
2
3
1
M=hist(y,5)
y进行个数统计(5个区间)
结果:
M
=
2
2
8
4
4
n = hist(Y, nbins)
nbins是一个范围,使用nbins间隔数。
[n,xout] =
hist(...)返回n和xout,包含有数目频率和间隔位置。可以使用bar(xout,
n)来绘制直方图。y=[2.57,2.9,2.87,2.82,2.49,2.69,3.09,2.91,3.0,3.058,2.92,2.84,3.23,3.1,3.02,3.11,2.87,2.95,2.92,2.73];
M=hist(y,5)
[n,xout] = hist(y,5)
bar(xout, n)
hist(axes_handle)使用exes_handle轴绘制,代替目前的轴(gca)。
以x=[1 2
3 4 5 6],edges=[0 3 5]为例。
[n,bin]=histc(x,edges);
返回n=[2
2 1],bin=[1 1 2 2 3]。
即:以edges为基准,向量n的值为:edges_k<=number(x_k)的值为x中的值分别在edges的哪个范围中(1就是在edges的第一个空中)。