Bonjour à tous,
J'essaie de me familiariser avec matlab pour des raisons professionnels et là je bloque vraiment sur la signification précise d'une ligne de code.
Le code en question est le suivant:
Le code permet de simuler un jeu de la vie. J'arrive à comprendre le fonctionnement du programme puisque je trouve les mêmes résultats sur papier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 len=100; GRID=int8(rand(len,len)); %taille de la matrice/matrice up=[2:len 1]; down=[len 1:len-1]; %up(2,3,...,len,1)/down=(len,1,2,...,len-1) colormap(autumn(2));%couleur des cellules for i=1:10000 %nb de cycles neighbours=GRID(up,:)+GRID(down,:)+GRID(:,up)+GRID(:,down)+... %grid(up,:) tous les éléments de la ligne up?? GRID(up,up)+GRID(up,down)+GRID(down,up)+GRID(down,down); GRID = neighbours==3 | GRID & neighbours==2; image(GRID*2); pause(0.04); end
Néanmoins je ne saisis pas deux choses:
-A quoi correspondent exactement les termes représentant les voisins? En effet, si on prends en exemple le premier terme des voisins à savoir grid(up,: ),grid(1,: ) signifierait tous les éléments de la ligne 1 mais là up est un vecteur. Alors ça marche si l'on considère par exemple pour la cellule (1,2) le premier terme de 'up' pour le numéro de ligne donc 2 et 2 pour numéro de colonne(on prend le numéro correspondant de la cellule d'origine lorsqu'on a ":").En procédant de cette manière on retrouve les résultats mais j'aurai voulu une explication rigoureuse.
Pourriez-vous m'aider à démêler tout ça?
Merci d'avance à vous tous.
PS1: j'espère avoir été clair dans mes explications
PS2: petit rappel des règles du jeu de la vie:
http://fr.wikipedia.org/wiki/Jeu_de_la_vie
Partager