MATLAB新的统计数据类型Table

本文介绍如何使用Matlab 2013新增的table数据类型来统计文本中字符的出现频率,并通过图表展示最常见的10个字符。文章通过具体实例演示了如何创建分类统计变量并进行排序。

matlab 2013引入了新的统计数据类型table,主要功能是模仿R或S语言的.我一直被R语言中的数据类型dataframe所震撼,屡屡叹息大名鼎鼎的matlab居然没有.现在好了,有了table类型,一切迎刃而解.看来R作为统计语言霸主的地位似乎也可以动动了.


      下面的示例是我布置给学生的作业,主要的目的是统计一篇文章中出现最多的10个字.

关键是学会table类型,理解统计因子和水平的概念.

测试环境matlab2014a

% 读取文件内容
filename='mydoc.txt';      %文件名
fstr=fileread(filename);    %读取文件内容
  %fstr(isspace(fstr)) = [] ;%去除所有空格
fstr=regexprep(fstr,'\W','');%去除所有标点符号
fstrLength=length(fstr);     %统计文件字数
%
fstrcell=cell(length(fstr),1); %生成元胞数组
for n = 1:length(fstr)
          fstrcell{n,1}= fstr(n);
end
WordCat = categorical(fstrcell); %建立分类统计变量
summary(WordCat);
ustr = unique(fstrcell);%获取分类因子的列表
cstr=countcats(WordCat);%计算各个分类因子的数目
[cstrsort,SortIndex] =sort(cstr);%从小到大排序
displaynum=10;%只显示最长出现的10个分类因子
for m =1:(length(cstr)-displaynum)
    %删去出现频次较低的因子
    WordCat = removecats(WordCat,ustr{SortIndex(m)});
end
% 绘制图形
figure(1)
hist(WordCat);
ylabel('出现次数')
图形如下:


<think>嗯,用户想了解MATLABtable类型数据的使用方法和特性。我需要先回顾一下相关的知识,确保回答准确。首先,tableMATLAB中用于处理表格数据的一种数据类型,类似于R语言的dataframe。用户可能已经知道这一点,但需要具体的例子和操作步骤。 根据用户提供的引用内容,比如引用[1]提到table是模仿R或S语言的数据类型,解决之前没有类似dataframe的问题。所以应该强调table的结构化特性,支持不同类型的列,并且有行名和列名。引用[2]给出了创建table的示例,使用table函数指定大小、变量类型和名称,还有行名。这可能是一个创建空table的方法,或者根据已有数据生成。引用[3]提到table转struct的方法,说明table和其他数据结构的互操作性。 接下来需要组织回答的结构。首先介绍table的基本概念和优势,比如混合数据类型、元数据标签、统计操作便捷等。然后分点说明使用方法,包括创建、操作、索引、统计和转换。每个部分都需要具体的示例代码,这样用户能更直观地理解。比如创建table可以用数组组合,或者从文件导入。操作部分可以演示添加、删除列,修改行名等。索引部分要区分列名索引和行列位置索引。统计函数如groupsummary和join,展示table的高级功能。转换部分提到与struct、cell的互转,特别是引用[3]中的table2struct。 需要注意用户可能关心的点,比如如何处理不同数据类型的列,如何执行类似数据库的操作(连接、分组汇总),以及如何与MATLAB的其他数据类型交互。用户可能在进行数据分析时需要这些操作,特别是统计和机器学习任务。 此外,用户的问题中提到要生成相关问题,所以需要准备几个相关的问题,比如如何合并多个table、处理缺失值、与dataset数据类型的区别,以及如何导出table到文件。这些问题可以帮助用户进一步探索table的功能。 最后,检查回答是否符合系统级指令:行内公式用$,独立公式用$$,中文回答,正确引用。用户提供的引用需要自然地融入回答中,比如在创建table时引用示例代码,或者在转换时提到table2struct函数来自引用[3]。确保所有示例代码语法正确,比如使用大括号{}进行元素访问,使用点号添加列等。</think>### MATLAB Table数据类型详解 TableMATLAB中用于存储异构数据的表格型容器,支持混合数据类型(数值、字符、逻辑等)的列存储,适用于统计分析、机器学习等场景[^1]。 #### 核心特性 1. **异构列数据**:每列可包含不同类型数据(如$[1,2;3,4]$与$['A';'B']$共存) 2. **元数据标签**:支持行名(RowNames)和列名(VariableNames) 3. **统计操作**:内置分组统计、连接查询等函数 4. **内存优化**:比传统cell数组更高效的结构化存储 #### 主要使用方法 **1. 创建Table** ```matlab % 基础创建方式 data = {'张三', 25, true; '李四', 30, false}; t = table(data(:,1), cell2mat(data(:,2)), cell2mat(data(:,3)),... 'VariableNames', {'Name','Age','IsStudent'},... 'RowNames', {'Person1','Person2'}); ``` 引用[2]中的高级创建方法: ```matlab CMTable = table('Size', [5 3],... 'VariableTypes', {'string','double','datetime'},... 'VariableNames', {'ID','Value','Time'}); ``` **2. 数据操作** ```matlab % 添加列 t.Income = [5000; 8000]; % 自动扩展列 % 访问数据 names = t.Name; % 列名索引 row2 = t(2, :); % 行索引 cell_data = t{1:2, 'Age'}; % 数值提取 % 修改行名 t.Properties.RowNames = {'Record1','Record2'}; ``` **3. 高级索引** ```matlab % 条件查询 students = t(t.IsStudent == true, :); % 多列选择 subTable = t(:, {'Name','Income'}); ``` **4. 统计运算** ```matlab % 分组统计 groupStats = groupsummary(t, 'IsStudent', 'mean', 'Income'); % 表格连接 t2 = table({'张三'; '王五'}, [85; 92], 'VariableNames', {'Name','Score'}); joinedTable = join(t, t2, 'Keys', 'Name'); ``` **5. 类型转换** 引用[3]中的转换方法: ```matlab % Table转Struct s = table2struct(t); % 生成结构体数组 % Cell转Table cellData = {'北京', 2154; '上海', 2428}; cityTable = cell2table(cellData, 'VariableNames', {'City','Population'}); ``` #### 应用场景示例 1. **实验数据管理**:混合存储传感器数值数据和文本标签 2. **统计建模**:直接对接fitlm等统计函数 3. **时间序列分析**:结合timetable类型处理带时间戳数据
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值