我在 Matlab 中使用非负矩阵分解将矩阵分解为两个因子。使用它,我从 A 得到两个 double 浮点矩阵 B 和 C。
样本结果是
B(1,1) = 0.118
C(1,1) = 112.035
我现在正在尝试修改这些值中的特定位,但是在任一值上使用 bitset 函数我都会收到错误消息,因为 bitset 需要无符号整数。
我也尝试过使用 dec2bin 函数,我假设它会将小数转换为二进制,但它会为 B(1,1) 返回“0”。
有谁知道在不损失精度的情况下在位级别处理 float 的任何方法?
最佳答案
您应该查看 typecast
和 bitset
函数。 (文件 here 和 here 分别)。这让你可以做类似的事情
xb = typecast( 1.0, 'uint64' );
xb = bitset( xb, 10, 1 );
typecast( xb, 'double' );
关于matlab - 在 Matlab 中对 float 进行位修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5245575/