![]() |
1
3
这不是真的。每个数组都有一个“头”(一个指定其类型、大小等的内存块)。R2017a中的头是104字节(我认为在最新版本中稍大一些)。单元阵列保存阵列,因此您在测试中看到的与3D阵列的差异:
是
单元格数组是指向数组(104字节+任何数据)的指针数组(每个指针8字节)。 对于一个相当大的数据块的图像,112字节的开销可以忽略不计。其他考虑因素,如访问速度,变得更加重要。 在MATLAB中,两个数组可以指向相同的数据。所以做一些类似的事情
不在创建阵列的副本
复制是因为
因此,使用3D阵列处理单个图像需要大量来回复制像素数据,这在单元阵列中是不必要的。
结构数组在这里不是一个相关的数据结构,它将等同于单元数组,只是索引更复杂(我不知道这是否转化为运行时增加)。也就是说,
正如您所注意到的,struct数组只比cell数组大64字节。这将存储字段名
以下是在MATLAB中处理数据的其他方法的简短总结,我认为这些方法都不合理:
因此,我真的认为处理多个图像的两个有意义的选项是单元格数组(或其他异构容器,如结构或自定义对象)或3D数组。我不会考虑其他任何事情。 总而言之: 使用单元格数组。 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 4 月前 |
![]() |
bairog · 从按属性筛选的对象数组字典中创建值数组 4 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 4 月前 |
![]() |
Geremia · 2D NumPy数组+1D数组? 4 月前 |
![]() |
MARTIN · 交换第一个和最后一个单词,反转所有中间的字符 5 月前 |
![]() |
Paul Williams · 迭代数组时输出有问题 5 月前 |