Convertir Propres de la Matrice C de la matrice de
La Eigen bibliothèque peuvent la carte mémoire existant dans Propres des matrices.
float array[3];
Map<Vector3f>(array, 3).fill(10);
int data[4] = 1, 2, 3, 4;
Matrix2i mat2x2(data);
MatrixXi mat2x2 = Map<Matrix2i>(data);
MatrixXi mat2x2 = Map<MatrixXi>(data, 2, 2);
Ma question est, comment pouvons-nous obtenir de c tableau (par exemple, float[] a) à partir des modes propres de la matrice (par exemple, Matrix3f m)? Qu'elle est la véritable disposition des propres de la matrice? Est la réel à des données stockées que dans la normale c tableau?
- Ce ne sont pas les types de données standard. Est "Eigen" le nom de la bibliothèque, ou une référence à des fondements mathématiques? Si ce dernier ce que la bibliothèque sont les types de? Aussi, C n'a pas de modèle type. Depuis les matrices sont en 2 dimensions, exactement ce que vous voulez dans la plaine de tableau? Une ligne ou une colonne spécifique, ou de l'ensemble de la matrice remodelé à une dimension?
- Eigen se réfère à un bibliothèque.
- c'est possible, mais je veux faire absolument sûr que c'est ce que lil fait référence.
- oui, je reportez-vous à eigen.tuxfamily.org
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le de données() fonction de membre de la Propres de la Matrice de classe. La mise en page par défaut de la colonne principale, pas de la ligne majeure, comme un caractère multidimensionnel, C array (la mise en page peut être choisi lors de la création d'un objet de la Matrice). Pour les matrices creuses de la phrase précédente n'est évidemment pas s'appliquer.
Exemple:
Eigen::Matrix<float, -1, 3, Eigen::RowMajor> vertices_;
Pour convertir normal type de données propres de la matrice de type
Vous pouvez créer un nRows x nrows taille double de la matrice à l'aide de la Carte de la fonctionnalité comme ceci:
Pour convertir propres de la matrice de type normal en type de données
De cette façon, vous pouvez obtenir dans et hors de modes propres de la matrice. Plein de crédits va à http://dovgalecs.com/blog/eigen-how-to-get-in-and-out-data-from-eigen-matrix/
Vous devez utiliser la fonction Map de nouveau. Veuillez voir l'exemple ici:
http://forum.kde.org/viewtopic.php?f=74&t=95457
Si le tableau est à deux dimensions, il faut prêter attention à l'ordre de stockage. Par défaut, les Propres magasins de matrices dans la colonne ordre majeur. Cependant, une ligne ordre majeur est nécessaire pour la conversion directe de l'un tableau en un Propres de la matrice. Si de telles conversions sont effectuées fréquemment dans le code, il peut être utile d'utiliser un correspondant
typedef
.Avec une telle définition, on peut obtenir un Propres de la matrice à partir d'un tableau dans un simple et compact, tout en préservant l'ordre du tableau original.
De C tableau de Eigen::Matrice
Dans la direction opposée, les éléments d'une Propres de la matrice peut être transféré directement à un C-gamme de style en utilisant
Map
.De Eigen::Matrice de C tableau
Noter que dans ce cas, la matrice d'origine
eig
n'a pas besoin d'être stockées en ligne-major de mise en page. Il suffit de spécifier la ligne ordre majeur dansMap
.La solution avec la Carte ci-dessus de segmentation quand je l'ai essayer (voir le commentaire ci-dessus).
Au lieu de cela, voici une solution qui fonctionne pour moi, la copie les données dans un std::vector à partir d'un Eigen::Matrix. Je l'ai pré-allouer de l'espace dans le vecteur de stocker le résultat de la Carte/copier.