gpt4 book ai didi

MATLAB 错误 : Matrix is too large to return linear indices

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:14 24 4
gpt4 key购买 nike

我试图在大型稀疏矩阵 K(19683000x19683000) 中找到所有非零元素。我使用 find 来首先返回线性索引。

val = K(K~=0);
inds = find(K~=0);
[j, i] = ind2sub(size(K), inds);
% [j, i] = find(K~=0);
i = full(i);
j = full(j);

这给出了一些错误:

Error using find
Matrix is too large to return linear indices.
Use [i,j] = find(S) for sparse matrix.
Error in (line 82)
inds = find(K~=0);
Error in run (line 64)
evalin('caller', [script ';']);

知道发生了什么以及如何避免吗?

最佳答案

我不熟悉那个错误(可能是因为我从未使用过这么大的矩阵)。该错误可能与 double 变量可以 exactly represent integers 的事实有关。最多 2^53。矩阵的元素数量没有超过该限制,但接近该限制。

也许您可以通过获取行和列索引然后手动计算线性索引来回避这个问题,直到 2^53:

[ii,jj] = find(K);
inds = ii + (jj-1)*size(K,1);

如果需要,您可以使用 uint64 线性索引而不是 double 将限制提高到 2^64:

[ii,jj] = find(K);
inds = uint64(ii) + (uint64(jj)-1)*size(K,1);

关于MATLAB 错误 : Matrix is too large to return linear indices,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53972495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com