为什么在matlab中find返回双精度值

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

find

 中的 
matlab
 函数返回给定局部参数计算为 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 中还存在整数数据类型的溢出问题,这可能会引入一些难以检测的错误。


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

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

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