表和分类数组,单元格和结构数组之间有什么区别?

时间:2013-10-03 03:23:18

标签: matlab

在最新版本的MATLAB中,有两种新的数据类型:表和分类数组。

表是一种适用于保存数据和元数据的新数据类型,可以与混合类型的表格数据一起使用,这些数据通常作为列存储在文本文件或电子表格中。它由行和面向列的变量组成。

分类数组对于保存分类数据很有用 - 分类数据的值来自离散类别的有限列表。

在以前的版本中,我会使用cell和struct数组处理这些用例。这些和新数据类型之间有什么区别?

2 个答案:

答案 0 :(得分:5)

我尚未升级,所以我不能玩,但基于this videothis article我已经看到了一些优势。他们不一定要添加以前你不能做的功能,而只是从中解决麻烦。使用readtable而不是xlsread会立即吸引我。能够按名称而不是仅通过索引访问列是很好的,我经常使用其他语言。在一个表中,列顺序并不重要(与矩阵不同),能够通过它的名称来寻址列非常方便,而不必知道列顺序。您也可以使用join函数合并表,这对以前的单元数组来说并不容易。我看到你也可以命名这些行,我没有看到它带给你什么优势,我不能玩,但我知道在某些语言中(比如Python中的PANDAS,我认为在R中)命名行意味着你可以使用不完全重叠的不同系列的时间序列数据,而不必担心对齐。我希望Matlab也是如此!分类数组看起来只是一个额外的便利层,有点像enum。你实际上从来不需要enum,但这只会使开发变得更加愉快。

无论如何,这只是我的两分钱,我可能很快就没有机会与他们一起玩,但我期待在我需要它们的时候使用它们。

答案 1 :(得分:0)

我使用表格格式在我的数据中组织不同的输入/输出案例,其结果可能来自不同的表格。与struct或cell array相比的主要优点:

  • 方便的表函数,例如join,innerjoin,outerjoin
  • 使用字段<>比阵列更强大的编程
  • 数据格式易于导出/导入(例如分隔的.txt文件)<>没有fprintf()
  • 可以在excel / Calc(libreoffice)<>中打开数据文件没有.mat