如果我们写,例如:
x = int8.empty(0,5)
whos x
输出:
% Name Size Bytes Class Attributes
% x 0x5 0 int8
因此,我们得到了一个 0x5
类 int8
的空数组。
如果内存大小为 0 字节,预分配包含非空维度的空数组的目的是什么?
在什么情况下
x = int8.empty(0,5)
比
更有用x = int8.empty(0,0)
int8.empty(0,5)
是否仍预分配 5 个“槽”内存?
最佳答案
我遇到了一个 0×n 向量的实际用例:使用 Matlab 的新声明性属性和参数约束,您可以说“x 必须是 N×1”或“z 必须b n×3”,将其声明为 (:,1) 或 (:,3)。这允许您以一致的方式表示空集。
这样做还有形式上的原因:一个函数或操作可以根据其输入的维度来定义,例如“接受一个 m×n 数组并返回一个 k×n 数组,其中 k = somefunction(m or its values)”,并且在 k 为零的退化情况下,具有一些非零维度的空数组允许这样的操作仍然严格遵守它们的契约(Contract)。
实际上,对于连接等基本操作,所有空数组通常是可互换的,通常会正常工作或最多产生警告。
关于matlab - 为什么空数组可以有非空维度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64351256/