【问题标题】:Why is find in matlab returning double values为什么在matlab中find返回双值
【发布时间】:2013-09-04 11:28:10
【问题描述】:

matlab 中的 find 函数返回给定本地参数计算结果为 true 的索引。
因此,我想知道,为什么返回值(对于索引)是 double 类型,而不是 uint32uint64,就像矩阵中的最大索引可能一样。
另一个可能与这里有关的奇怪事情是,正在运行

[~,max_num_of_elem]=computer

返回变量max_num_of_elem 中矩阵允许的最大元素数,该变量也是double 类型。

【问题讨论】:

  • find 可以返回索引值。我假设您询问的是索引的数据类型,而不是值。
  • 哦,对不起 am304 - 你当然是对的。我会相应地采纳这个问题。
  • double 是 Matlab 的原生类型。几乎所有东西都使用它并返回它。这是一种设计选择,在许多情况下使它更容易,因为人们可以直接使用方程式中返回的值而无需转换它们。唯一的问题是 find 可能不适用于具有超过 2^53 元素的矩阵。
  • @horchler:实际上 64 位架构上的 maximum number of elements2^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


【解决方案1】:

我只能猜测,但可能是因为很多功能只支持double。运行

setdiff(methods('double'), methods('uint32'))

查看在您的 MATLAB 版本上为 double 而不是为 uint32 定义了哪些函数。

还有overflow issue with integer data types in MATLAB 可以引入一些难以检测的错误。

【讨论】:

猜你喜欢
  • 2011-05-04
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 2021-03-22
  • 2013-05-24
  • 1970-01-01
  • 2011-08-07
  • 2016-03-31
相关资源
最近更新 更多