在Matlab中对浮点数进行位修改

Mic*_*len 5 floating-point binary matlab bit-manipulation

我在Matlab中使用非负矩阵分解将矩阵分解为两个因子.使用这个,我得到了两个双精度浮点矩阵,B和C.

样本结果是

B(1,1) = 0.118
C(1,1) = 112.035
Run Code Online (Sandbox Code Playgroud)

我现在正在尝试修改这些值中的特定位,但在任一值上使用bitset函数我得到一个错误,因为bitset需要无符号整数.

我也尝试过使用dec2bin函数,我假设它会将小数转换为二进制,但它为B(1,1)返回'0'.

有没有人知道在不损失精度的情况下处理浮点数的任何方法?

Edr*_*ric 6

你应该研究typecastbitset功能.(分别在这里这里).这可以让你做的事情

xb = typecast( 1.0, 'uint64' );
xb = bitset( xb, 10, 1 );
typecast( xb, 'double' );
Run Code Online (Sandbox Code Playgroud)