MATLAB 中的
find
函数返回给定逻辑参数计算为 true 的索引。
因此我想知道,为什么返回的索引类型为
double
,而不是uint32
或uint64
,就像矩阵中的最大索引一样?
另一个可能与此相关的奇怪的事情是,跑步
[~,max_num_of_elem] = computer
返回变量
max_num_of_elem
中矩阵允许的最大元素数,该变量也是 double
类型。
我只能猜测,但可能是因为很多功能只支持
double
。奔跑吧
setdiff(methods('double'), methods('uint32'))
查看您的 MATLAB 版本上为
double
定义了哪些函数,而不为 uint32
定义了哪些函数。
MATLAB 中还存在整数数据类型的溢出问题,这可能会引入一些难以检测的错误。
range 来覆盖内存中尽可能多的索引,但它没有 precision 来表示所需的所有整数。因此,如果您使用 find 从一个大矩阵中创建索引列表,然后使用 ind2sub 将它们转换为下标,您会偶尔丢失行或列,其中 double 无法表示该特定整数。这真是一个痛苦。