CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

C++ Eigen Sparse

quine_
quine_
Niveau 10
05 décembre 2019 à 21:09:12

Bonjour,
Je sais bien que c'est pas Stackoverflow ici mais je tente ma chance :noel:
Quelqu'un ici est familier avec cette librairie C++ d'algèbre linéaire (Eigen) ?

La librairie propose une classe SparseMatrix qui permet de faire des opérations sur des matrices creuses très efficacement. Elle propose une classe similaire Matrix pour les matrices non creuses, où il est possible de définir des matrices à taille dynamique.

J'ai beau creuser la doc, je n'arrive pas à trouver comment faire une SparseMatrix dynamique :(

kernel_bypass
kernel_bypass
Niveau 10
05 décembre 2019 à 22:23:36

Je comprends pas tu peux utiliser resize pour resize, tu veux faire quoi de plus ?

quine_
quine_
Niveau 10
06 décembre 2019 à 00:43:46

Le 05 décembre 2019 à 22:23:36 kernel_bypass a écrit :
Je comprends pas tu peux utiliser resize pour resize, tu veux faire quoi de plus ?

resize la réinitialise à 0, j'ai besoin de la mettre à jour itérativement

quine_
quine_
Niveau 10
06 décembre 2019 à 00:53:20

shit le délai d'edit est passé
.
..mais je ne connais pas à l'avance la taille finale de la matrice sans avoir exécuté une boucle qui prend beaucoup de temps.

pour l'instant je fais avec ce temps supplémentaire et j'utilise une SparseMatrix de taille fixe, mais je gagnerais beaucoup à pouvoir soit :
- la remplir itérativement sans connaitre à l'avance sa taille (comme une DynamicMatrix ou bien un <vector>)

- lui fixer une taille énorme (j'ai une borne sup sur son nombre max de colonnes/lignes) et extraire par la suite le plus grand bloc rectangulaire supérieur possédant une dernière ligne et une dernière colonne avec au moins un zéro (je n'ai pas cherché comment faire ça, mais il est apparemment possible de manipuler les blocks d'après la doc)

Message édité le 06 décembre 2019 à 00:54:12 par quine_
kernel_bypass
kernel_bypass
Niveau 10
07 décembre 2019 à 19:33:41

Tu peux essayer avec la liste des triplets alors (std::vector<Eigen::Triplet<double>> list) et tu construire la SparseMatrix avec setFromTriplets(list.begin(), list.end()) quand tu as besoin d'avoir une représentation matricielle pour faire des calculs

quine_
quine_
Niveau 10
10 décembre 2019 à 13:30:12

Le 07 décembre 2019 à 19:33:41 kernel_bypass a écrit :
Tu peux essayer avec la liste des triplets alors (std::vector<Eigen::Triplet<double>> list) et tu construire la SparseMatrix avec setFromTriplets(list.begin(), list.end()) quand tu as besoin d'avoir une représentation matricielle pour faire des calculs

ah ouais joli, merci beaucoup !

Sous forums
  • Histoire
  • Philosophie
  • Cours et Devoirs
  • Politique
  • Environnement & Nature
  • Métiers & Orientation
La vidéo du moment