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

第一种方法:调用MATLAB自带的函数tabulate进行统计

【例1】统计数值型数组中各元素出现的频数、频率。>> x = [2  2  6  5  2  3  2  4  3  4  3  4  4  4  4  2  2

6  0  4  7  2  5  8  3  1  3  2  5  3  6  2  3  5

4  3  1  4  2  2  2  3  1  5  2  6  3  4  1  2  5];

>> tabulate(x(:))

Value    Count   Percent

0        1      1.96%

1        4      7.84%

2       14     27.45%

3       10     19.61%

4       10     19.61%

5        6     11.76%

6        4      7.84%

7        1      1.96%

8        1      1.96%

【例2】统计字符串中各字符出现的频数、频率。>> x = ['If x is a numeric array, TABLE is a numeric matrix.']';

>> tabulate(x)

Value    Count   Percent

I        1      2.44%

f        1      2.44%

x        2      4.88%

i        5     12.20%

s        2      4.88%

a        5     12.20%

n        2      4.88%

u        2      4.88%

m        3      7.32%

e        2      4.88%

r        5     12.20%

c        2      4.88%

y        1      2.44%

,        1      2.44%

T        1      2.44%

A        1      2.44%

B        1      2.44%

L        1      2.44%

E        1      2.44%

t        1      2.44%

.        1      2.44%

【例3】统计字符型数组中各行元素出现的频数、频率。>> x = ['崔家峰';'孙乃喆';'安立群';'王洪武';'王玉杰';'高纯静';'崔家峰';

'叶 鹏';'关泽满';'谢中华';'王**';'孙乃喆';'崔家峰';'谢中华'];

>> tabulate(x)

Value    Count   Percent

崔家峰        3     21.43%

孙乃喆        2     14.29%

安立群        1      7.14%

王洪武        1      7.14%

王玉杰        1      7.14%

高纯静        1      7.14%

叶 鹏        1      7.14%

关泽满        1      7.14%

谢中华        2     14.29%

王**        1      7.14%

【例4】统计字符串元胞数组中各字符串出现的频数、频率。>> x = {'崔家峰';'孙乃喆';'安立群';'王洪武';'王玉杰';'高纯静';'崔家峰';

'叶鹏';'关泽满';'谢中华';'王**';'孙乃喆';'崔家峰';'谢中华'};

>> tabulate(x)

Value    Count   Percent

崔家峰        3     21.43%

孙乃喆        2     14.29%

安立群        1      7.14%

王洪武        1      7.14%

王玉杰        1      7.14%

高纯静        1      7.14%

叶鹏        1      7.14%

关泽满        1      7.14%

谢中华        2     14.29%

王**        1      7.14%

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

>> species = nominal(species);

>> tabulate(species)

Value    Count   Percent

setosa       50     33.33%

versicolor       50     33.33%

virginica       50     33.33%

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

函数HistRate的代码:function result = HistRate(x)

%   HistRate(x),统计数组 x 中的元素出现的频数、频率和累积频率,以表格形式显示在屏幕上.

%   x可以是数值型数组、字符串、字符型数组、字符串元胞数组和名义尺度数组。

%

%   result = HistRate(x),返回矩阵或元胞数组result,它是多行4列的矩阵或元胞数组,

%   四列分别对应取值、频数、频率、累积频率。当x是数值型数组时,result为矩阵;当x

%   是字符串、字符型数组、字符串元胞数组和名义尺度数组时,result为元胞数组。

%

%   用户还可参考tabulate函数,该函数比tabulate函数的效率高。

%

%   Copyright xiezhh,2010.3.8

if isnumeric(x)

x = x(:);

x = x(~isnan(x));

xid = [];

else

[x,xid] = grp2idx(x);

x = x(~isnan(x));

end

x = sort(x(:));    % 排序

m = length(x);

x1 = diff(x);    % 求差分

x1(end + 1) = 1;

x1 = find(x1);

CumFreq = x1/m;

value = x(x1);

x1 = [0; x1];

Freq1 = diff(x1);

Freq2 = Freq1/m;

if  nargout == 0

if isempty(xid)

fmt1 = '%11s   %8s   %6s    %6s\n';

fmt2 = '  %10d     %8d     %6.2f%%     %6.2f%%\n';

fprintf(1, fmt1, '取值', '频数', '频率', '累积频率');

fprintf(1, fmt2, [value'; Freq1'; 100*Freq2'; 100*CumFreq']);

else

head = {'取值', '频数', '频率(%)', '累积频率(%)'};

[head;xid,num2cell([Freq1, 100*Freq2, 100*CumFreq])]

end

else

if isempty(xid)

result = [value Freq1 Freq2 CumFreq];

else

result = [xid,num2cell([Freq1, Freq2, CumFreq])];

end

end

【例1】统计数值型数组中各元素出现的频数、频率。>> x = [2  2  6  5  2  3  2  4  3  4  3  4  4  4  4  2  2

6  0  4  7  2  5  8  3  1  3  2  5  3  6  2  3  5

4  3  1  4  2  2  2  3  1  5  2  6  3  4  1  2  5];

>> HistRate(x)

取值         频数       频率      累积频率

0            1       1.96%       1.96%

1            4       7.84%       9.80%

2           14      27.45%      37.25%

3           10      19.61%      56.86%

4           10      19.61%      76.47%

5            6      11.76%      88.24%

6            4       7.84%      96.08%

7            1       1.96%      98.04%

8            1       1.96%     100.00%

【例2】统计字符串中各字符出现的频数、频率。>> x = ['If x is a numeric array, TABLE is a numeric matrix.']';

>> HistRate(x)

ans =

'取值'    '频数'    '频率(%)'    '累积频率(%)'

'I'       [   1]    [ 2.4390]    [     2.4390]

'f'       [   1]    [ 2.4390]    [     4.8780]

'x'       [   2]    [ 4.8780]    [     9.7561]

'i'       [   5]    [12.1951]    [    21.9512]

's'       [   2]    [ 4.8780]    [    26.8293]

'a'       [   5]    [12.1951]    [    39.0244]

'n'       [   2]    [ 4.8780]    [    43.9024]

'u'       [   2]    [ 4.8780]    [    48.7805]

'm'       [   3]    [ 7.3171]    [    56.0976]

'e'       [   2]    [ 4.8780]    [    60.9756]

'r'       [   5]    [12.1951]    [    73.1707]

'c'       [   2]    [ 4.8780]    [    78.0488]

'y'       [   1]    [ 2.4390]    [    80.4878]

','       [   1]    [ 2.4390]    [    82.9268]

'T'       [   1]    [ 2.4390]    [    85.3659]

'A'       [   1]    [ 2.4390]    [    87.8049]

'B'       [   1]    [ 2.4390]    [    90.2439]

'L'       [   1]    [ 2.4390]    [    92.6829]

'E'       [   1]    [ 2.4390]    [    95.1220]

't'       [   1]    [ 2.4390]    [    97.5610]

'.'       [   1]    [ 2.4390]    [        100]

【例3】统计字符型数组中各行元素出现的频数、频率。>> x = ['崔家峰';'孙乃喆';'安立群';'王洪武';'王玉杰';'高纯静';'崔家峰';

'叶 鹏';'关泽满';'谢中华';'王**';'孙乃喆';'崔家峰';'谢中华'];

>> HistRate(x)

ans =

'取值'      '频数'    '频率(%)'    '累积频率(%)'

'崔家峰'    [   3]    [21.4286]    [    21.4286]

'孙乃喆'    [   2]    [14.2857]    [    35.7143]

'安立群'    [   1]    [ 7.1429]    [    42.8571]

'王洪武'    [   1]    [ 7.1429]    [         50]

'王玉杰'    [   1]    [ 7.1429]    [    57.1429]

'高纯静'    [   1]    [ 7.1429]    [    64.2857]

'叶 鹏'     [   1]    [ 7.1429]    [    71.4286]

'关泽满'    [   1]    [ 7.1429]    [    78.5714]

'谢中华'    [   2]    [14.2857]    [    92.8571]

'王**'    [   1]    [ 7.1429]    [        100]

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

>> x = {'崔家峰';'孙乃喆';'安立群';'王洪武';'王玉杰';'高纯静';'崔家峰';

'叶鹏';'关泽满';'谢中华';'王**';'孙乃喆';'崔家峰';'谢中华'};>> HistRate(x)

ans =

'取值'      '频数'    '频率(%)'    '累积频率(%)'

'崔家峰'    [   3]    [21.4286]    [    21.4286]

'孙乃喆'    [   2]    [14.2857]    [    35.7143]

'安立群'    [   1]    [ 7.1429]    [    42.8571]

'王洪武'    [   1]    [ 7.1429]    [         50]

'王玉杰'    [   1]    [ 7.1429]    [    57.1429]

'高纯静'    [   1]    [ 7.1429]    [    64.2857]

'叶鹏'      [   1]    [ 7.1429]    [    71.4286]

'关泽满'    [   1]    [ 7.1429]    [    78.5714]

'谢中华'    [   2]    [14.2857]    [    92.8571]

'王**'      [   1]    [ 7.1429]    [        100]

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

>> species = nominal(species);

>> HistRate(species)

ans =

'取值'          '频数'    '频率(%)'    '累积频率(%)'

'setosa'        [  50]    [33.3333]    [    33.3333]

'versicolor'    [  50]    [33.3333]    [    66.6667]

'virginica'     [  50]    [33.3333]    [        100]

matlab 统计数组频数_利用MATLAB进行频率分析(统计数组中元素个数)相关推荐

  1. matlab文件名加前缀_利用MATLAB批量对文件重命名

    利用MATLAB批量对文件重命名 tags: - MATLAB - 科研软件 序 没paper,实验肯定要做啊,不做就毕不了业 . 编程这方面,编程是不可能编程的,这辈子不可能编程的 . paper又 ...

  2. matlab的qammod函数_利用matlab实现16QAM调制

    利用matlab实现16QAM调制 2020-12-22 一.随机信号的调制第一个示例描述以下问题: 下表描述了解决此问题的关键任务和相应的通信工具箱函数,其中选择基带16QAM作为调制制式以及加性高 ...

  3. matlab 频谱图例子_利用matlab怎样进行频谱分析

    图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度.如:大面积的沙漠在图像中是一片灰度变化缓慢的区域,对应的频率值很低:而对于地表属性变换剧烈的边缘区域在图像中是一片灰度变化剧烈的 ...

  4. matlab低通滤波器库函数代码_利用Matlab filterDesigner 工具生成FIR滤波器函数,并调用实现低通滤波...

    本文使用的开发环境为:Win10 Matlab2018a 版本. 在matlab命令窗口输入:filterDesigner命令,即可打开filterDesigner设计工具. 按照下图调整FIR低通滤 ...

  5. python和excel数据分析_利用Python处理和分析Excel表中数据实战

    作为一个学习用Python进行数据分析的新手来说,通过本文来记录分享一些我在用Python中的pandas.numpy来分析Excel表中数据的数据清洗和整理的工作,目的是熟悉numpy以及panda ...

  6. matlab计算斜方差_利用matlab进行协方差运算

    本文全部参考自: http://www.cnblogs.com/welen/articles/5535042.html#undefined 知识点一: MATLAB中四个取整函数具体使用方法如下: M ...

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

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

  8. python处理excel表格数据-利用Python处理和分析Excel表中数据实战.doc

    利用Python处理和分析Excel表中数据实战 [利用python进行数据分析--基础篇]利用Python处理和分析Excel表中数据实战 原创 2017年06月28日 15:09:32 标签: p ...

  9. 以下哪个不是python的内置函数_以下哪个 Python 内置函数可以返回列表对象中元素个数。...

    [多选题]假设 x=[0,1,2,3],执行哪些语句之后,x 的值为[0, 1, 2]. [多选题]以下哪些对象的分隔符为逗号. [单选题]已知列表 x=[0,1,2,1,4],那么执行语句 del ...

最新文章

  1. python函数def_python def 函数
  2. muduo之Thread
  3. 大头贴计算机教程,推荐!自家电脑也能拍大头贴的秘密
  4. .Net页面中使用在线编辑框实例
  5. Magento: 代替flash上传 How to disable Flash uploader in Magento (product images and
  6. 6.4 Ext.core.DomQuery 单实例查询选择器,通过正则表达式查找DOM或者HTM
  7. imageview 自定义 android,Android自定义ImageView实现在图片上添加图层效果
  8. IBM Bluemix 自然语言处理初识
  9. Java5线程并发库之同步集合
  10. HeadFirst设计模式学习笔记
  11. 关于cmwap和cmnet之间的区别
  12. 此生未完成 --- 于娟
  13. 信用卡逾期别慌,有的逾期记录可撤销
  14. 《google软件测试之道》精彩语句摘抄
  15. linux上运行gfortran,linux – gfortran:在64位系统中编译32位可执行文件
  16. 过来人都是怎么学习stm32的
  17. 如何优化网站,网站推广优化一般流程
  18. CSS中继承性属性和非继承性的属性
  19. 国科大学习资料--最优化计算方法(王晓)--期末考试试卷历年题按题型汇总
  20. 2021春招已正式开启,阿里巴巴企业智能事业部内推,有意者看下文!

热门文章

  1. 暑假遥感图像处理+深度学习学习笔记
  2. 轻量级对象存储服务minio安装及使用
  3. 无法定位程序输入点packetgetreadevent于动态链接库wpcap.dll上
  4. linux 命令:tr 详解
  5. VMware里Windows7安装VMware Tools失败?跑去安装补丁也碰壁?看这一篇就够了
  6. 愤怒的TryCatch
  7. 60分钟短线波段战术
  8. win32 SetCapture 和 ReleaseCapture的使用
  9. TI_BLE软件开发者指导6——L2CAP(笔记)
  10. 电脑桌面只剩回收站和计算机,如果计算机重新加载后,桌面上只有一个回收站,该怎么办?...