matlab - 在 Matlab 中对 float 进行位修改

标签 matlab binary floating-point bit-manipulation

我在 Matlab 中使用非负矩阵分解将矩阵分解为两个因子。使用它,我从 A 得到两个 double 浮点矩阵 B 和 C。

样本结果是

B(1,1) = 0.118
C(1,1) = 112.035

我现在正在尝试修改这些值中的特定位,但是在任一值上使用 bitset 函数我都会收到错误消息,因为 bitset 需要无符号整数。

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

有谁知道在不损失精度的情况下在位级别处理 float 的任何方法?

最佳答案

您应该查看 typecastbitset 函数。 (文件 herehere 分别)。这让你可以做类似的事情

xb = typecast( 1.0, 'uint64' );
xb = bitset( xb, 10, 1 );
typecast( xb, 'double' );

关于matlab - 在 Matlab 中对 float 进行位修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5245575/

相关文章:

c++ - 为什么浮点类型对于模板函数来说是无效的模板参数类型?

javascript - 对浮点相等性测试感到困惑?

python - 将用-v7.3(HDF5)保存的Matlab稀疏矩阵加载到Python中并对其进行操作

Swift-Binary 运算符不能应用于两个 "Double"操作数

ios - 由于来自广告商框架的意外 CFBundleExecutable key ,来自 Xcode 7.0.1 的二进制文件未上传

c# - 如何在 C# 中获取 float 的 IEEE 754 二进制表示

ruby - 为什么 Math.sqrt(i*i).floor == i?

Matlab cell2mat错误: all contents of the input cell array must be of the same data type

matlab - 无法更新 Matlab 中的类定义

.net - NET.addAssembly 返回奇怪的 Could 以加载程序集或其依赖项之一