在 matlab
中,find
函数返回逻辑参数为真的索引。
因此我想知道,为什么返回值(索引)的类型是double
,而不是像矩阵最大索引一样是uint32
或uint64
。
另一个可能与此有关的奇怪现象是,运行以下代码:
[~,max_num_of_elem]=computer
返回变量max_num_of_elem
的最大矩阵元素数量,类型为double
。
在 matlab
中,find
函数返回逻辑参数为真的索引。
因此我想知道,为什么返回值(索引)的类型是double
,而不是像矩阵最大索引一样是uint32
或uint64
。
另一个可能与此有关的奇怪现象是,运行以下代码:
[~,max_num_of_elem]=computer
返回变量max_num_of_elem
的最大矩阵元素数量,类型为double
。
find
函数可以返回索引 和 值。我猜你提问的是索引的数据类型,而不是值的数据类型。 - am304double
是 Matlab 的本地类型。几乎所有东西都使用它并返回它。这是一个设计选择,在许多情况下使其更容易,因为可以直接在方程中使用返回的值而无需转换它们。唯一的问题是,find
可能不适用于具有超过2^53
个元素的矩阵。 - horchler2^48 -1
。这仍然比你所需的任何东西都要多得多,因为它相当于一个256太字节元素的向量((2^48-1)/2^40 = 256),或者一个32TB(以1024 GB为单位的)大小的double
向量!请记住,在Windows上,这甚至比操作系统允许的内存限制还要大:http://msdn.microsoft.com/en-us/library/aa366778.aspx。所以我不认为这里有问题 :) - Amro[-2^53,+2^53]
。超出这个范围,每个范围[2^n,2^(n+1)]
的间距开始加倍。这就是为什么eps(2^53)==2
,eps(2^54)==4
等等.. https://en.wikipedia.org/wiki/Double-precision_floating-point_format - Amro