matlab - Bitget 需要处理大量输入吗?

标签 matlab bit sparse-matrix

默认类型is uint64 但下面的显然需要更大的支持,您可以看到上面的 bitget 命令不支持数字 536870915 (二进制为 100000000000000000000000000011,30 位长度)。所以

How to get bitget command working with large inputs like the below?

输入

hhhh=sparse([],[],[],2^40+1,1); 
hhhh(536870915)=1; 
bitget(str2num(dec2bin(find(hhhh)-1)),2,'uint64')

输出

Error using bitget
Double inputs must have integer values in the range of ASSUMEDTYPE.

最佳答案

您将 dec2bin(find(hhhh)-1) 的输出传递给 str2num。这直接将一和零组成的字符串转换为 double 值:9.999999999999999e+28。我猜这不是你想要的。

如果您只是想获取 536870915 的第二位,为什么不使用:

bitget(find(hhhh)-1,2,'uint64')

另一方面,我认为您也可以使用它(可能会慢一些,但如果您已经转换为字符串表示形式,它可能会与您的代码的其余部分一起使用):

b = dec2bin(find(hhhh)-1);
str2double(b(end-1))

您似乎正在尝试结合两种方法。

关于matlab - Bitget 需要处理大量输入吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20304216/

相关文章:

c - 如果计算机是 "copying bits",为什么 signed int 会自动转换为 unsigned int?

java - java中稀疏矩阵的实现和运算

matlab - 以不同颜色绘制 x 轴上方的 y 值

algorithm - 对matlab中的所有子集求和

c++ - 如何制作 'bit' 数组而不是 'int' 数组?

matlab - spy 与颜色 Matlab

python 稀疏 csr 矩阵 : how to serialize it

image - 在 Matlab 中保存 imagesc 输出

c++ - 在 Windows 上为 Matlab 构建 libspline - 对重载函数 'pow' 的不明确调用

algorithm - 用很少的给定信息导出特定的比特流