转载自: http://www.matlabsky.com/thread-9144-1-1.html

在论坛上经常遇到这样的问题:如何统计一个数组中各数字(元素)出现的频数、频率和累积频率?这里以案例形式做一个总结。
第一种方法:调用MATLAB自带的函数tabulate统计一个数组中各数字(元素)出现的频数、频率

>> tabulate(mydata(1,:))
  Value    Count   Percent
      0       10     50.00%
      1       10     50.00%
>> a=tabulate(mydata(1,:))
a =
     0    10    50
     1    10    50

【例1】统计数值型数组中各元素出现的频数、频率。

  1. >> x = [2  2  6  5  2  3  2  4  3  4  3  4  4  4  4  2  2
  2. 6  0  4  7  2  5  8  3  1  3  2  5  3  6  2  3  5
  3. 4  3  1  4  2  2  2  3  1  5  2  6  3  4  1  2  5];
  4. >> tabulate(x(:))
  5. Value    Count   Percent
  6. 0        1      1.96%
  7. 1        4      7.84%
  8. 2       14     27.45%
  9. 3       10     19.61%
  10. 4       10     19.61%
  11. 5        6     11.76%
  12. 6        4      7.84%
  13. 7        1      1.96%
  14. 8        1      1.96%

复制代码

【 例2 】统计字符串中各字符出现的频数、频率。

  1. >> x = ['If x is a numeric array, TABLE is a numeric matrix.']';
  2. >> tabulate(x)
  3. Value    Count   Percent
  4. I        1      2.44%
  5. f        1      2.44%
  6. x        2      4.88%
  7. i        5     12.20%
  8. s        2      4.88%
  9. a        5     12.20%
  10. n        2      4.88%
  11. u        2      4.88%
  12. m        3      7.32%
  13. e        2      4.88%
  14. r        5     12.20%
  15. c        2      4.88%
  16. y        1      2.44%
  17. ,        1      2.44%
  18. T        1      2.44%
  19. A        1      2.44%
  20. B        1      2.44%
  21. L        1      2.44%
  22. E        1      2.44%
  23. t        1      2.44%
  24. .        1      2.44%

复制代码

【 例3 】统计字符型数组中各行元素出现的频数、频率。

  1. >> x = ['崔家峰';'孙乃喆';'安立群';'王洪武';'王玉杰';'高纯静';'崔家峰';
  2. '叶 鹏';'关泽满';'谢中华';'王**';'孙乃喆';'崔家峰';'谢中华'];
  3. >> tabulate(x)
  4. Value    Count   Percent
  5. 崔家峰        3     21.43%
  6. 孙乃喆        2     14.29%
  7. 安立群        1      7.14%
  8. 王洪武        1      7.14%
  9. 王玉杰        1      7.14%
  10. 高纯静        1      7.14%
  11. 叶 鹏        1      7.14%
  12. 关泽满        1      7.14%
  13. 谢中华        2     14.29%
  14. 王**        1      7.14%

复制代码

【 例4 】统计字符串元胞数组中各字符串出现的频数、频率。

  1. >> x = {'崔家峰';'孙乃喆';'安立群';'王洪武';'王玉杰';'高纯静';'崔家峰';
  2. '叶鹏';'关泽满';'谢中华';'王**';'孙乃喆';'崔家峰';'谢中华'};
  3. >> tabulate(x)
  4. Value    Count   Percent
  5. 崔家峰        3     21.43%
  6. 孙乃喆        2     14.29%
  7. 安立群        1      7.14%
  8. 王洪武        1      7.14%
  9. 王玉杰        1      7.14%
  10. 高纯静        1      7.14%
  11. 叶鹏        1      7.14%
  12. 关泽满        1      7.14%
  13. 谢中华        2     14.29%
  14. 王**        1      7.14%

复制代码

【 例5 】统计名义尺度(如性别,职业,产品型号等)数组中各元素出现的频数、频率。

  1. >> load fisheriris
  2. >> species = nominal(species);
  3. >> tabulate(species)
  4. Value    Count   Percent
  5. setosa       50     33.33%
  6. versicolor       50     33.33%
  7. virginica       50     33.33%

复制代码

第二种方法:自编效率更高的函数HistRate(代码如下),调用HistRate函数统计一个数组中各数字(元素)出现的频数、频率和累积频率。
函数HistRate的代码:

  1. function result = HistRate(x)
  2. %   HistRate(x),统计数组 x 中的元素出现的频数、频率和累积频率,以表格形式显示在屏幕上.
  3. %   x可以是数值型数组、字符串、字符型数组、字符串元胞数组和名义尺度数组。
  4. %
  5. %   result = HistRate(x),返回矩阵或元胞数组result,它是多行4列的矩阵或元胞数组,
  6. %   四列分别对应取值、频数、频率、累积频率。当x是数值型数组时,result为矩阵;当x
  7. %   是字符串、字符型数组、字符串元胞数组和名义尺度数组时,result为元胞数组。
  8. %
  9. %   用户还可参考tabulate函数,该函数比tabulate函数的效率高。
  10. %
  11. %   Copyright xiezhh,2010.3.8
  12. if isnumeric(x)
  13. x = x(:);
  14. x = x(~isnan(x));
  15. xid = [];
  16. else
  17. [x,xid] = grp2idx(x);
  18. x = x(~isnan(x));
  19. end
  20. x = sort(x(:));    % 排序
  21. m = length(x);
  22. x1 = diff(x);    % 求差分
  23. x1(end + 1) = 1;
  24. x1 = find(x1);
  25. CumFreq = x1/m;
  26. value = x(x1);
  27. x1 = [0; x1];
  28. Freq1 = diff(x1);
  29. Freq2 = Freq1/m;
  30. if  nargout == 0
  31. if isempty(xid)
  32. fmt1 = '%11s   %8s   %6s    %6s\n';
  33. fmt2 = '  %10d     %8d     %6.2f%%     %6.2f%%\n';
  34. fprintf(1, fmt1, '取值', '频数', '频率', '累积频率');
  35. fprintf(1, fmt2, [value'; Freq1'; 100*Freq2'; 100*CumFreq']);
  36. else
  37. head = {'取值', '频数', '频率(%)', '累积频率(%)'};
  38. [head;xid,num2cell([Freq1, 100*Freq2, 100*CumFreq])]
  39. end
  40. else
  41. if isempty(xid)
  42. result = [value Freq1 Freq2 CumFreq];
  43. else
  44. result = [xid,num2cell([Freq1, Freq2, CumFreq])];
  45. end
  46. end

复制代码

【 例1 】统计数值型数组中各元素出现的频数、频率。

  1. >> x = [2  2  6  5  2  3  2  4  3  4  3  4  4  4  4  2  2
  2. 6  0  4  7  2  5  8  3  1  3  2  5  3  6  2  3  5
  3. 4  3  1  4  2  2  2  3  1  5  2  6  3  4  1  2  5];
  4. >> HistRate(x)
  5. 取值         频数       频率      累积频率
  6. 0            1       1.96%       1.96%
  7. 1            4       7.84%       9.80%
  8. 2           14      27.45%      37.25%
  9. 3           10      19.61%      56.86%
  10. 4           10      19.61%      76.47%
  11. 5            6      11.76%      88.24%
  12. 6            4       7.84%      96.08%
  13. 7            1       1.96%      98.04%
  14. 8            1       1.96%     100.00%

复制代码

【 例2 】统计字符串中各字符出现的频数、频率。

  1. >> x = ['If x is a numeric array, TABLE is a numeric matrix.']';
  2. >> HistRate(x)
  3. ans =
  4. '取值'    '频数'    '频率(%)'    '累积频率(%)'
  5. 'I'       [   1]    [ 2.4390]    [     2.4390]
  6. 'f'       [   1]    [ 2.4390]    [     4.8780]
  7. 'x'       [   2]    [ 4.8780]    [     9.7561]
  8. 'i'       [   5]    [12.1951]    [    21.9512]
  9. 's'       [   2]    [ 4.8780]    [    26.8293]
  10. 'a'       [   5]    [12.1951]    [    39.0244]
  11. 'n'       [   2]    [ 4.8780]    [    43.9024]
  12. 'u'       [   2]    [ 4.8780]    [    48.7805]
  13. 'm'       [   3]    [ 7.3171]    [    56.0976]
  14. 'e'       [   2]    [ 4.8780]    [    60.9756]
  15. 'r'       [   5]    [12.1951]    [    73.1707]
  16. 'c'       [   2]    [ 4.8780]    [    78.0488]
  17. 'y'       [   1]    [ 2.4390]    [    80.4878]
  18. ','       [   1]    [ 2.4390]    [    82.9268]
  19. 'T'       [   1]    [ 2.4390]    [    85.3659]
  20. 'A'       [   1]    [ 2.4390]    [    87.8049]
  21. 'B'       [   1]    [ 2.4390]    [    90.2439]
  22. 'L'       [   1]    [ 2.4390]    [    92.6829]
  23. 'E'       [   1]    [ 2.4390]    [    95.1220]
  24. 't'       [   1]    [ 2.4390]    [    97.5610]
  25. '.'       [   1]    [ 2.4390]    [        100]

复制代码

【 例3 】统计字符型数组中各行元素出现的频数、频率。

  1. >> x = ['崔家峰';'孙乃喆';'安立群';'王洪武';'王玉杰';'高纯静';'崔家峰';
  2. '叶 鹏';'关泽满';'谢中华';'王**';'孙乃喆';'崔家峰';'谢中华'];
  3. >> HistRate(x)
  4. ans =
  5. '取值'      '频数'    '频率(%)'    '累积频率(%)'
  6. '崔家峰'    [   3]    [21.4286]    [    21.4286]
  7. '孙乃喆'    [   2]    [14.2857]    [    35.7143]
  8. '安立群'    [   1]    [ 7.1429]    [    42.8571]
  9. '王洪武'    [   1]    [ 7.1429]    [         50]
  10. '王玉杰'    [   1]    [ 7.1429]    [    57.1429]
  11. '高纯静'    [   1]    [ 7.1429]    [    64.2857]
  12. '叶 鹏'     [   1]    [ 7.1429]    [    71.4286]
  13. '关泽满'    [   1]    [ 7.1429]    [    78.5714]
  14. '谢中华'    [   2]    [14.2857]    [    92.8571]
  15. '王**'    [   1]    [ 7.1429]    [        100]

复制代码

【 例4 】统计字符串元胞数组中各字符串出现的频数、频率。

  1. >> x = {'崔家峰';'孙乃喆';'安立群';'王洪武';'王玉杰';'高纯静';'崔家峰';
  2. '叶鹏';'关泽满';'谢中华';'王**';'孙乃喆';'崔家峰';'谢中华'};
  3. >> HistRate(x)
  4. ans =
  5. '取值'      '频数'    '频率(%)'    '累积频率(%)'
  6. '崔家峰'    [   3]    [21.4286]    [    21.4286]
  7. '孙乃喆'    [   2]    [14.2857]    [    35.7143]
  8. '安立群'    [   1]    [ 7.1429]    [    42.8571]
  9. '王洪武'    [   1]    [ 7.1429]    [         50]
  10. '王玉杰'    [   1]    [ 7.1429]    [    57.1429]
  11. '高纯静'    [   1]    [ 7.1429]    [    64.2857]
  12. '叶鹏'      [   1]    [ 7.1429]    [    71.4286]
  13. '关泽满'    [   1]    [ 7.1429]    [    78.5714]
  14. '谢中华'    [   2]    [14.2857]    [    92.8571]
  15. '王**'    [   1]    [ 7.1429]    [        100]

复制代码

【 例5 】统计名义尺度(如性别,职业,产品型号等)数组中各元素出现的频数、频率。

  1. >> load fisheriris
  2. >> species = nominal(species);
  3. >> HistRate(species)
  4. ans =
  5. '取值'          '频数'    '频率(%)'    '累积频率(%)'
  6. 'setosa'        [  50]    [33.3333]    [    33.3333]
  7. 'versicolor'    [  50]    [33.3333]    [    66.6667]
  8. 'virginica'     [  50]    [33.3333]    [        100]

复制代码

频率分析(统计数组中元素个数)相关推荐

  1. matlab 统计数组频数_利用MATLAB进行频率分析(统计数组中元素个数)

    在日常计算,工作中使用MATLAB经常会遇到这样的一个问题:如何统计数组中各数字(元素)出现的频数.频率和累积频率?本文就按照案例演示的方式做一个总结. 第一种方法:调用MATLAB自带的函数tabu ...

  2. java map 元素个数_Java 小模块之--统计字符串中元素个数

    Java 小模块之--统计字符串中元素个数 曾经看过我Stream或者Guava类库等文章的小伙伴应该很明白我这篇博文的意义所在了 一是给读者提供综合的博文入口 二是自己也总结一下思路 ps: 之前没 ...

  3. python统计列表中元素个数_python中计算一个列表中连续相同的元素个数方法

    python中计算一个列表中连续相同的元素个数方法 最简单的例子: a = [1,1,1,1,2,2,2,3,3,1,1,1,3] # 问:计算a中最多有几个连续的1 很明显,答案是4 如果用代码实现 ...

  4. 中求解数组中元素个数_JavaScript之学underscore在数组中查找指定元素

    今天来给大家分享下使用underscore在数组中查找指定元素. 在开发中,我们经常会遇到在数组中查找指定元素的需求,可能大家觉得这个需求过于简单,然而如何优雅的去实现一个 findIndex 和 f ...

  5. 虎头虎脑的sizeof、strlen、数组长度、数组中元素个数和字符串长度

  6. 统计频次:统计数组中每种模的频次

    统计数组中某个数出现的频率,方法很巧妙,使用下标作为key,使用对应下标的值作为频数,比如一共输入10个数,统计0~9的个数有多少? #include <bits/stdc++.h>usi ...

  7. hive中统计某列数组的元素个数

    hive中统计某列数组的元素个数 可以统计列的数量 SELECT distinct_id,sum(size(split(itemid_list,","))) FROM t_item ...

  8. JavaScript中统计数组中相同元素的个数-案例

    图示说明 代码 //部分数据 ["220","220","220","220","220",&quo ...

  9. java中的输入语句判断正负_在java中使用方法调用统计数组中正数的个数,将判断数据的正负功能定义成方法...

    满意答案 donglin820 推荐于 2018.04.21 public class TestDemo { static int count = 0;// 统计整数的个数 public static ...

最新文章

  1. 通过构建城市来解释HTML,CSS和JavaScript之间的关系
  2. C#forUnity快速入门(连载2)-C#语言入门
  3. G面经prepare: Reorder String to make duplicates not consecutive
  4. shader 编程入门(一)
  5. Tensorflow初学者之搭建神经网络基本流程
  6. 欢乐纪中B组周五模拟赛【2019.3.8】
  7. linux 管道文件上机总结,[转载]LINUX 管道 fifo 等总结
  8. 电池和Adapter切换电路改进实验(转)
  9. 使用LINQ计算基本统计
  10. Kali虚拟机安装,设置中文等详细教程,Linux最新免镜像版
  11. 谈谈免费的仓库管理软件
  12. YouTorrent - 全新的“实时”BT种子搜索站
  13. 正则表达式在JS中的应用,判断邮箱是否合法
  14. 2018年最新传智播客黑马WEB前端36期全套视频教程
  15. 随笔3:有调节的中介示例之 Model 1
  16. 怎么开qq远程连接服务器,QQ远程协助出现权限问题该怎么处理?不用慌这样保证解决...
  17. 【微机原理 实验】可编程外围接口芯片8255(4)(硬件-含汇编代码)
  18. Sklearn标准化和归一化方法汇总(2):Min-Max归一化
  19. 计算机进行注销后会进入什么状态,请问电脑里注销是什么意思呀
  20. weblogic控制台相关操作

热门文章

  1. 抗反射蛾眼结构的严格分析与设计
  2. 兼容ie[6-9]、火狐、Chrome、opera、maxthon3、360浏览器的js本地图片预览
  3. gateone服务器安装 基本使用
  4. Apache RewriteCond RewriteRule 跳转故障解决
  5. 缺陷管理第三篇:软件缺陷如何管理?
  6. 非三星手机上不能登录Galaxy wearable解决方法
  7. 用 Python 编写干净、可测试、高质量的代码
  8. 被创业公司领导穿小鞋,一怒之下我拿了6个offer,最终跳槽到ebay
  9. 森林防火巡查app功能说明
  10. 【bzoj 1966】: [Ahoi2005]VIRUS 病毒检测