Bitget使用大量输入?

时间:2013-11-30 18:46:50

标签: matlab bit sparse-matrix

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

  

如何让bitget命令使用如下所示的大输入?

输入

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.

1 个答案:

答案 0 :(得分:3)

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

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

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

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

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

看起来你正试图结合两种方法。