最近我开始使用Armadillo C ++库。鉴于我的C ++编码技巧不是很好,我发现这对线性代数非常友好。我也在使用它与我的matlab一起为许多重建算法加速。
我确实需要创建一个布尔值的向量,我更喜欢使用这个库而不是。但是,我无法弄清楚如何去做。我尝试过使用uvec;但是,文档似乎表明它不能与boolean一起使用。
任何帮助都将不胜感激。
此致 Dushyant
答案 0 :(得分:5)
考虑使用矩阵uchar_mat
,它是Mat<unsigned char>
的typdef,它应该使用与布尔值矩阵相同的内存量。
版本7.8的Armadillo documentation表示矩阵Mat<type>
可以是以下类型:
float
,double
,std::complex<float>
,std::complex<double>
,short
,int
,long
和unsigned
版本short
,int
和long
。但是,GitHub上的代码在文件include/armadillo_bits/typedef_mat.hpp中包含typedef Mat <unsigned char> uchar_mat;
,因此您还应该能够使用uchar_mat
。
与bool
值矩阵(unsigned char
类型消耗8位)相比,您不会通过创建bool
值矩阵来保存任何内存。这是因为in C++ every data type must be addressable;它必须至少有1个字节长,以便可以创建指向它的指针。