何时在Matlab中使用单元格,矩阵或表格

Aus*_*vis 5 matlab matrix dataset cell-array data-structures

我是matlab的新手,我试图找出何时最好使用单元格,表格或矩阵来存储数据集,然后处理数据.

我想要的是存储包含多个行,包括字符串和数字,然后想要使用数字的数据.

例如,一条线看起来像

'string 1' , time, number1, number 2
Run Code Online (Sandbox Code Playgroud)

.我知道如果元素是数字,矩阵效果最好,但是当我使用单元格时,我不得不将数字或字符串转换为矩阵才能使用它们.我正在运行matlab 2012所以也许这是问题的一部分.任何帮助表示赞赏.谢谢!

小智 2

在以下情况下使用矩阵:

  • 表格数据具有统一的类型(都是浮点数,如double,或整数int32);
  • & 数据量要么很小,要么很大并且具有静态(预定义)大小;
  • &您关心访问数据的速度,或者您需要对数据执行矩阵运算,或者某些函数需要这样组织的数据。

在以下情况下使用元胞数组:

  • 表格数据具有异构类型(混合元素类型、“锯齿状”数组等);
  • | 数据量大且大小动态变化;
  • | 您只需要对数据进行数字索引(无需代数运算);
  • | 函数本身需要数据。

结构的参数相同,只是索引是按名称而不是数字。

不确定表格,我认为语言本身没有提供;可能是一个我不知道的UDT......

稍后编辑

这三种类型可以组合,从某种意义上说,元胞数组和结构体可以具有矩阵以及元胞数组和结构体作为元素(因为它们是异构容器)。对于您的情况,您可能有两种方法,具体取决于您需要如何访问数据:

  • 如果您主要按行访问数据,那么就性能而言,具有 4 个字段(每列一个字段)的 N 个结构体(每行一个结构体)的数组将是最有效的;

  • 如果您主要按列访问数据,那么具有 4 个字段(每列一个字段)的单个结构就可以了;第一个字段将是第一列的字符串元胞数组,第二个字段将是字符串元胞数组或双精度数的一维矩阵,具体取决于您要如何存储日期,其余字段是 s 的一维矩阵double