MATLAB 高级数据类型 table

table数据类型使用来取代statistics toolbox中的dataset的,可以生成带有表头的表格数据。

  1. 读取数据生成table table = readtable('1.txt')
    在这里插入图片描述
    用空格或者逗号分隔开,保存为txt或者CSV格式。
    在这里插入图片描述2. 调用构造函数生成table
number = ['1'; '2'; '3'] % 也可以是cell{}
value = ['1'; '2'; '3' ] % 也可以是cell{}
colName = ["number" ,"value"] % 也可以是cell{},如果是[]需要是""而不能是''
tabl1 = table(number,value,'VariableNames',colName)

在这里插入图片描述
2. 通过array2table,cell2table,struct2table 转换成table
1. array2table
· · · 用于将数组转换成table,类似于上面用构造函数生成table,需要额外来指定表头。

ta = table(array,'VariableNames',colName) % 注意需要维度匹配
array = table2array(ta) % 表头会被去掉
  1. cell2table
    · · · 用于将元胞数组转换成table,类似于上面用构造函数生成table,需要额外来指定表头。
ta = table(cell,'VariableNames',colName) % 注意需要维度匹配
cell = table2array(ta) % 表头会被去掉
  1. struct2table
    · · · 用于将结构体转换成table,类似于上面用构造函数生成table,不需要额外来指定表头,field的名称即为表头。
stu.name = ["AA","BB","CC"]';
stu.grade = [1 2 3]';
table = struct2table(stu)
kk = table2struct(table) % 转换成struct数组,与stu不同,体会区别

在这里插入图片描述
转换回来的结构体与原来的结构体是不同的,区别可以从图中看出来。


对table的访问和删除和一般的数组非常相似,因为运算符都被重载好了,这个不用细说,可以自己动手试试,它有两种访问方式,返回的数据类型是不一样的。

table(1,:) % 返回类型是table
table{1,:} % 返回类型是array
table.name % 返回类型是array,与上面的方法效果一样

在这里插入图片描述

table.name = []; % 删掉某列,某个单元同理
[table1; table2] % 合并table
[table1  table2] % 合并table  需要注意的是,两个都必须是同类型的表格
table.new = {...} % 这样可以直接增加一栏,增加一行可以考虑生成table再合并

一个比较重要的函数需要介绍,就是varfun(),这个函数主要是用来向量化操作的,与cellfun和arrayfun是一样的,只是这个使用来对table中每个元素进行运算。

out = varfun(@fun,table) 

合并table的操作主要是join(),outerjoin(),innerjoin(),这几个函数都是用来合并表格的,关于table更多的函数我们可以查看table对象的属性
在这里插入图片描述

发布了58 篇原创文章 · 获赞 69 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_43157190/article/details/104721950