今天,分享一个Matlab统计一维数组中某个元素出现次数的函数,tabulate。tabulate函数可以统计一维数组中每个元素出现的个数。他的输出为一个三列二维数组,第一列为所统计数组中的每个元素值(从小到大依次排列),第二列为第一列中每个元素出现的个数,第三列为第一列元素出现的百分比。该函数一般在统计学方面用到的比较频繁,而且输出结果也很人性化。
tabulate用法
先来一段官方介绍吧,大意上跟我的解释差不多。
>> help tabulate
tabulate Frequency table.
TABLE = tabulate(X) takes a vector X and returns a matrix, TABLE.
The first column of TABLE contains the unique values of X. The
second is the number of instances of each value. The last column
contains the percentage of each value. If the elements of X are
non-negative integers, then the output includes 0 counts for any
integers that are between 1 and max(X) but do not appear in X.
TABLE = tabulate(X), where X is a categorical variable, character
array, or a cell array of strings, returns TABLE as a cell array. The
first column contains the unique string values in X, and the other two
columns are as above.
tabulate with no output arguments returns a formatted table
in the command window.
实例演示
下面我们在展现几组数据的输出结果吧:
>> x=[1 2 3 1 2 4 5 6 8]
x =
1 2 3 1 2 4 5 6 8
>> tabulate(x)
Value Count Percent
1 2 22.22%
2 2 22.22%
3 1 11.11%
4 1 11.11%
5 1 11.11%
6 1 11.11%
7 0 0.00%
8 1 11.11%
上面这组,输入的是1到8之间的自然数,他直接输出了1到8之间所有数字的统计次数(包含7)
>> x=[4 5 4 7 10]
x =
4 5 4 7 10
>> tabulate(x)
Value Count Percent
1 0 0.00%
2 0 0.00%
3 0 0.00%
4 2 40.00%
5 1 20.00%
6 0 0.00%
7 1 20.00%
8 0 0.00%
9 0 0.00%
10 1 20.00%
上面这组,输入的是4到10之间的自然数,他直接输出了1到10之间所有数字的统计次数(包含未出现的数字)。可以看出它输出的是1到最大数字之间所有自然数的统计结果。
>> x=[-1 -1 1 2 1 0 3]
x =
-1 -1 1 2 1 0 3
>> tabulate(x)
Value Count Percent
-1 2 28.57%
0 1 14.29%
1 2 28.57%
2 1 14.29%
3 1 14.29%
数组中出现了-1,结果为-1到最大值之间的所有数据统计。
>> x=[-1 -1 1.1 1.1 2 2.2 3 10]
x =
-1.0000 -1.0000 1.1000 1.1000 2.0000 2.2000 3.0000 10.0000
>> tabulate(x)
Value Count Percent
-1 2 25.00%
1.1 2 25.00%
2 1 12.50%
2.2 1 12.50%
3 1 12.50%
10 1 12.50%
出现了小数,直接统计给定数组中出现数字的统计结果。
最后,你可以把tabulate(x)值赋值给y,然后第一列,第二列作图即可绘制直方图,统计更加直观;y(:,1)、y(:,2)分别代表第一列、第二列数值,即分别为元素及元素出现次数。
原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/423.html
评论列表(1条)
您好,请问,直方图怎么弄呀