这不是二进制吧
时间: 2023-08-08 13:08:03 浏览: 37
非常抱歉,我的回答还是有误。如果每一项只能取 1 或 0,那么它不是二进制描述子,而是类似于二进制描述子的另一种特征向量,每个分量只包含一个二元值。
对于这种特征向量,可以使用以下代码输出特定项的值:
```
std::cout << descriptor2.descriptor[k] << std::endl;
```
其中,`descriptor2.descriptor` 是一个 `pcl::SHOT352` 或 `pcl::SHOTColor` 或 `pcl::SHOT1344` 变量的数组,它包含变量的特征向量中的每个分量的值。如果每个分量只包含一个二元值,则可以使用这种简单的方式访问特征向量中的每个分量的值。
相关问题
可是这不是二进制描述子了
非常抱歉,我的回答还是有误。如果您使用的是二进制描述子,那么 `histogram` 的确不是 `pcl::SHOT352` 或 `pcl::SHOTColor` 或 `pcl::SHOT1344` 的成员,因为二进制描述子不是基于直方图的,而是基于比特位的。
对于二进制描述子,可以使用以下代码输出特定项的值:
```
std::cout << ((descriptor2.descriptor[k/8] & (1 << (k%8))) != 0) << std::endl;
```
其中,`descriptor2.descriptor` 是一个 `pcl::SHOT352` 或 `pcl::SHOTColor` 或 `pcl::SHOT1344` 变量的数组,它包含变量的二进制描述子中的每个比特位的值。由于每个比特位只能表示 0 或 1,因此可以使用一个布尔表达式来输出它的值。具体来说,这个表达式使用了按位与和位移运算符,以获取 `descriptor2.descriptor[k/8]` 中的第 `k%8` 个比特位的值,并将其转换为布尔类型。因为每个字节可以表示 8 个比特位,所以 `k/8` 计算了需要访问的字节的索引。注意,这个代码假设二进制描述子是按照字节边界对齐的,即每 8 个比特位存储在一个字节中。如果您使用的是不同的比特位对齐方式,则需要相应地修改代码。
object里的value不是二进制怎么改
如果在ModelSim的Object窗口中显示的值不是二进制形式,你可以通过更改显示格式来调整。以下是一些可能的方法:
1. 右键点击Object窗口中要更改显示格式的对象。
2. 在弹出的菜单中选择 "Radix"(基数)选项。
3. 在基数选项中,选择 "Binary"(二进制)。
通过执行上述操作,Object窗口中的对象值应该会以二进制形式显示。如果仍然没有改变,你可以尝试以下额外的方法:
- 在Object窗口的菜单栏中,选择 "View"(视图)选项,然后选择 "Radix"(基数),再选择 "Binary"(二进制)。
- 双击要更改显示格式的对象,在弹出的窗口中选择 "Radix" 选项,并选择 "Binary"。
- 使用快捷键来更改显示格式,通常是按下 'b' 键来切换到二进制显示。
如果以上方法仍然无法改变Object窗口中对象的显示格式,可能是由于其他设置或配置问题。此时,你可以参考ModelSim的文档或联系技术支持以获取更准确的解决方案。