MATLAB如何把表格转为数组?
介绍在MATLAB中如何将表格转化为普通数组或者元胞数组,涉及函数table2array,table2cell,以及其它有关知识。
转化为普通数组
- 01
对于一个有多列同类型数据的普通表格,直接使用 table2array即可得到对应数组。 数组中的列就是表格中的列拼接而成。
- 02
表格中的每个变量列不一定是列向量,有可能是宽度大于1的矩阵。 此时使用table2array时,会将这些矩阵横向拼接起来。
- 03
如果各列的数据类型不同,转化后的数组会取所谓的“dominent type”. 比如,single和double类型都有的话,转化后为single. single,double,int8都有的话,转化后为int8.
- 04
但是,如果有的列是数值数组,有的列却是元胞数组(字符串组成的或其它),则无法将它们合并。
- 05
此时,可以将输入参数改为T(:,[1,3]),即表格T第一列和第三列组成的子表格。 此时可以转化成功。
- 06
如果表格中的每列都是高维数组,则会按照如图的拼接方式进行拼接。 返回的数组是同样维度的高维数组。
- 07
此时要注意的事项有二: 一是所有表变量必须有相同的维数, 二是所有表变量除了第二维之外,必须长度相同。(第二维是表变量的合并方向所以可以长度不同)
- 08
另外,要吧表格转成数组,也可以使用大括号。 T{:,:}等价于table2array(T) T{:,[1,3]}则相当于取出T的第一列和第三列进行转换。
转化为元胞数组
- 01
转化为元胞数组非常好理解,直接使用table2cell就可以转化,将表格的列变量都转成元胞数组再拼接起来。
- 02
使用T.Properties.VariableNames可以获取列变量名称组成的元胞行向量。 因此,如图代码可以把列变量名拼接在第一行。
- 03
T.Properties.RowNames可以获取行名称组成的元胞列向量。可以使用如图代码将行名称拼在第一列。