为什么 MATLAB 中的 find 返回索引为双精度值?

问题描述 投票:0回答:2

MATLAB 中的

find
函数返回给定逻辑参数计算为 true 的索引。

因此我想知道,为什么返回的索引类型为

double
,而不是
uint32
uint64
,就像矩阵中的最大索引一样?

另一个可能与此相关的奇怪的事情是,跑步

[~,max_num_of_elem] = computer

返回变量

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

matlab indexing integer find return-type
2个回答
6
投票

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

double
。奔跑吧

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

查看您的 MATLAB 版本上为

double
定义了哪些函数,而不为
uint32
定义了哪些函数。

MATLAB 中还存在整数数据类型的溢出问题,这可能会引入一些难以检测的错误。


-1
投票
但是这种选择会导致错误。确实,double 具有

range 来覆盖内存中尽可能多的索引,但它没有 precision 来表示所需的所有整数。因此,如果您使用 find 从一个大矩阵中创建索引列表,然后使用 ind2sub 将它们转换为下标,您会偶尔丢失行或列,其中 double 无法表示该特定整数。这真是一个痛苦。

© www.soinside.com 2019 - 2024. All rights reserved.