MATLAB知识点:tabulate函数生成数据的频数表

讲解视频:可以在bilibili搜索“MATLAB教程新手入门篇——数学建模清风主讲”。

MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili


拓展:tabulate函数

tabulate函数可用来生成数据的频数表,它能帮助我们快速统计数据中各个元素的出现次数和百分比。下面我们引用MATLAB官网的帮助文档来介绍它的用法:

tabulate(x) 显示向量 x 中数据的频数表。对于 x 中的每个唯一值,tabulate 函数显示该值在 x 中的实例数和百分比。

当 x 为数值时,tbl = tabulate(x) 以数值矩阵形式返回频数表 tbl,否则以元胞数组形式返回它。

注意:如果向量 x 只包含正整数,则 tabulate 将为 1 和 max(x) 之间没有出现在 x 中的整数返回 0 个计数。

使用tabulate函数需要统计和机器学习工具箱Statistics and Machine Learning Toolbox,你可以在MATLAB的命令行窗口输入   ver   这个命令,它可以查看你已经安装的工具箱。

如果你没有安装对应的工具箱,可以卸载现有的MATLAB后重新安装一次。安装过程中,有一个环节是选择需要安装的产品(工具箱)。有些同学电脑硬盘空间有限,我这里提供了一个不需要安装的产品列表,大家可以在微信公众号《数学建模学习交流》中查看历史文章(发布时间是 2021 年 7 月 15 日)。下面我们来看tabulate函数的例子:

在上表最后一个例子中,向量 x3中的元素都是正整数,此时输出结果中的Value范围为1至x3的最大值5,由于数字1和3出现的次数为0,因此对应的Count和Percent都为0。如果你不希望在结果中看到频数为0的情况,你可以在调用 tabulate函数之前,将元素全为正整数的向量 x3 转换为字符串类型(下一节介绍)或者分类变量类型(后续章节介绍)。

现在考考大家,如果你的MATLAB没有安装统计和机器学习工具箱,你能通过其他方式来实现tabulate函数的功能吗?(假设你要计算的数据是字符向量元胞数组类型)

x = {'yes','no','yes','yes','and','no','or'};
% 使用unique函数找出x中的唯一值,同时获得每个元素在唯一值数组中的索引ind
[Value, ~, ind] = unique(x, 'stable'); % 加'stable'保持原文本出现的先后顺序
Count = sum(ind == 1:length(Value)); % 计算每个唯一值在x中出现的次数
Percent = Count/sum(Count)*100;  % 计算每个唯一值出现的百分比
t = cell(length(Value),3); % 初始化一个元胞数组用于保存最终结果
% 将Value、Count和Percent的值分别填充到元胞数组t的相应位置
t(:,1) = Value;  % 第一列保存唯一值(这里可以不对Value转置,大小兼容就行)
t(:,2) = num2cell(Count);  % 第二列保存每个值的计数
t(:,3) = num2cell(Percent);  % 第三列保存每个值的百分比
disp(t)  % 输出结果t
% 大家可以对比tabulate函数和我们自己计算的结果是否相同
t2 = tabulate(x)

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值