5

最近、Armadillo C++ ライブラリを使い始めました。私の C++ コーディング スキルはそれほど優れていないため、これは線形代数に非常に適していることがわかりました。また、多くの再構成アルゴリズムの速度を上げるために、これを私の matlab と一緒に使用しています。

ブール値のベクトルを作成する必要があり、. しかし、私はそれを行う方法を理解できませんでした。uvec を使ってみました。しかし、ドキュメントはブール値では使用できないことを示しているようです。

どんな助けでも大歓迎です。

よろしく、 ダシャント

4

1 に答える 1

6

uchar_matの typdef であるマトリックスを使用することを検討してMat<unsigned char>ください。ブール値のマトリックスと同じ量のメモリを消費する必要があります。

バージョン 7.8のArmadillo のドキュメントMat<type>では、行列は floatdoublestd::complex<float>std::complex<double>shortintlong、および 、 、 のバージョンunsignedであると記載されています。ただし、GitHub のコードには include/armadillo_bits/typedef_mat.hppファイルが含まれているため、.shortintlongtypedef Mat <unsigned char> uchar_mat;uchar_mat

bool値のマトリックスと比較して値のマトリックスを作成してもメモリは節約されませんunsigned char(bool型は 8 ビットを消費します)。これは、C++ ではすべてのデータ型がアドレス指定可能でなければならないためです。それを指すポインターを作成できるように、少なくとも 1 バイトの長さでなければなりません。

于 2014-04-02T14:55:14.080 に答える