Animation des changements d'état d'une matrice

Fermé
benjilili Messages postés 5 Date d'inscription mardi 21 mai 2013 Statut Membre Dernière intervention 5 mai 2018 - Modifié le 4 mai 2018 à 19:29
benjilili Messages postés 5 Date d'inscription mardi 21 mai 2013 Statut Membre Dernière intervention 5 mai 2018 - 5 mai 2018 à 01:28
Bonjour à toutes et tous.

Je suis débutant en python et essaye de réaliser, dans le cadre d'un projet de L2, un programme de simulation de type "modèle d'Ising".

J'avance à taton, mais sans trop de difficultés depuis le début. (Beaucoup de bidouillage vu mon niveau, mais l'ensemble fonctionne plutôt bien)

Cependant depuis hier je bloque sur la façon dont je peux animer les changements d'état de mon système.

J'ai donc un programme qui me génère une liste contenant les différentes "photos" de ma matrice après chaque changement d'état.
Jusqu'ici tout fonctionne.
Ma liste que j'ai nommé "ListeImages" contient bien un nombre N de matrices carrées qui sont les "photos" du système aux différentes étapes.

Là où ça coince, c'est lorsque j'essaye d'animer tout cela avec FuncAnimation de la bibliothèque matplotlib.animation.

Dans le morceau de code ci-dessous la fonction genData() me pose problème (imaginons que i soit un élément de la liste, je sais que ce que j'écris ici ne fonctionne pas, c'est pour l'exemple)

def genData():
    return ListeImages[i]

def updateData(frameNumber):
    mat.set_data(genData())
    return

fig, ax = plt.subplots()
mat = ax.matshow(genData())
ani = animation.FuncAnimation(fig, updateData, interval=100)
ani.save('systeme.mp4')



En remplaçant "ListeImages" par une génération aléatoire de matrice comme par exemple :


def genData():
    return [np.random.rand(4) for _ in range(4)]



Cela fonctionne parfaitement

En fait, pour etre précis, je ne sais pas comment faire "cracher" à ma fonction genData les différentes images de ma matrice dans l'ordre...
Comme par exemple je pourrais le faire avec une simple boucle de type

N = len(ListeImages)
for a in range(N)
     b = ListeImages[N]


et en interrogeant b

... j'ignore si je suis clair, mais j'essaie... ;)

Merci d'avance pour votre aide !

1 réponse

benjilili Messages postés 5 Date d'inscription mardi 21 mai 2013 Statut Membre Dernière intervention 5 mai 2018
5 mai 2018 à 01:28
J'ai finalement trouvé la solution (avec un peu d'aide j'avoue ;) )

Merci quand même
0