【发布时间】:2013-09-04 11:28:10
【问题描述】:
matlab 中的 find 函数返回给定本地参数计算结果为 true 的索引。
因此,我想知道,为什么返回值(对于索引)是 double 类型,而不是 uint32 或 uint64,就像矩阵中的最大索引可能一样。
另一个可能与这里有关的奇怪事情是,正在运行
[~,max_num_of_elem]=computer
返回变量max_num_of_elem 中矩阵允许的最大元素数,该变量也是double 类型。
【问题讨论】:
-
find可以返回索引和值。我假设您询问的是索引的数据类型,而不是值。 -
哦,对不起 am304 - 你当然是对的。我会相应地采纳这个问题。
-
double是 Matlab 的原生类型。几乎所有东西都使用它并返回它。这是一种设计选择,在许多情况下使它更容易,因为人们可以直接使用方程式中返回的值而无需转换它们。唯一的问题是find可能不适用于具有超过2^53元素的矩阵。 -
@horchler:实际上 64 位架构上的 maximum number of elements 是
2^48 -1。这仍然比您需要的任何东西都多,因为它相当于一个包含 256 个 tera 单字节元素的向量 ((2^48-1)/2^40 = 256) 或大小为 32TB 的double向量(TB 为 1024 GB!)。请记住,在 Windows 上,这甚至大于操作系统允许的内存限制:msdn.microsoft.com/en-us/library/aa366778.aspx。所以我在这里看不到问题:) -
@Amro:那么这对
find来说是个好消息。我只是在它们开始之前引用了最大的双整数,它们并非都具有精确的浮点表示。
标签: matlab indexing integer find return-type