存储在单元格中的数据与MATLAB中存储为double的数据之间有什么区别?

Lay*_*Lay 1 arrays double matlab matrix cell-array

我有两个看起来完全一样的变量,但是一个是<double>,另一个是<cell>.在代码中,似乎它们被转换cell2mat.我的理解是数据存储的问题,但我只是不明白的区别和定义cell,并double为这个.

Eit*_*n T 5

除了nrz的答案之外,值得注意的是存储单元阵列时还有额外的内存开销.例如,请考虑以下代码:

A = 1:5
B = {A}
C = num2cell(A)
whos
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

A =
     1     2     3     4     5


B =    
    [1x5 double]


C = 
    [1]    [2]    [3]    [4]    [5]

  Name      Size            Bytes  Class     Attributes    
  A         1x5                40  double              
  B         1x1               152  cell                
  C         1x5               600  cell                
Run Code Online (Sandbox Code Playgroud)
  • 从第一行可以看出,基本的1乘5双向量向量A在内存中占用40个字节(每个双倍占用8个字节).
  • 第二行显示仅A使用单个单元格进行包装可以B增加额外的112个字节.这是MATLAB中单个单元的开销.
  • 第三行确认,因为C包含5个单元格并且取(112 + 8)×5 = 600字节.