gozforum [ Disinformazione e Controcultura ]

AUTOMA CELLULARE BIDIMENSIONALE MATLAB

« Older   Newer »
  Share  
view post Posted on 12/8/2009, 10:50     +1   -1
Avatar

IN DISPERSIONE

Group:
FOUNDER
Posts:
14,802
Reputation:
+36
Location:
trinakaos---CT/SR

Status:


inizia a prendere forma... il funzionamento è sempre lo stesso piazziamo le coordinate delle cellule vive, fissiamo il numero di iterazioni e lui parte... ed è anche simpatico. Solo che...

a)i 3 cicli for annidati rendono l'esecuzione lentissima e pesante, anche con solo 2 iterazioni, ma per ottenere delle belle figure ci vogliono molte iterazioni (un centinaio) e non si finisce più (si parla di ORE!!!)

b)NON L'HO TESTATO CON OCTAVE QUINDI NON SO SE FUNZIONA

c)in pratica lui fa una serie di calcoli che effettivamente sono inutili, perchè la logica è rigida, in quanto prende tutta la griglia e la processa elemento per elemento. prende una cella (questo per ogni cella) fa la somma degli elementi contigui ad essa e il risultato fornirà il nuovo stato della cella in questione. Capite bene che per farlo in una 200x200 con 100 iterazioni non si finisce più e il processore fonde. Per questo motivo..questa versione è solo una beta di prova.. a prossima notte insonne userò un approccio diverso. dove tramite un find cerco solo le cellule vive e dopo di che analizzo i contorni e ridefinisco lo stato della cella centrale. Capite bene che (il numero massimo di celle vive che possiamo inserire è 9) fare questo discorso per 9 elementi comporta meno tempo che non farlo per una 100x100... ed ecco il codice :ok:

CODICE
%------------ AUTOMA CELLULARE BIDIMENSIONALE (beta 0.1)---------
%                                                      g'OZ 08/09
%­La Logica dovrebbe essere che quando la somma delle celle  è  un
%­numero paro (0,2,4) la cella centrale fa 1 altrimenti 0
%­Il problema di questo  codice  è  che  i 3  cicli  for  annidati
%­rendono l'esecuzione pesante e molto lenta.
%­per velocizzarlo basta diminuire la dimensione di A e quindi e
%­quindi i for ivece di fermarsi a 48, scelta A 20x20,si fermano
%a 18. stesso discorso vale per il numero di iterazioni anche se
%­un numero di iterazioni elevato dà migliori risultati




A=zeros(50,50)

disp('iserisci cordinare della prima cellula')
x1=input('x=')
y1=input('y=')
disp('iserisci cordinare della seconda cellula')
x2=input('x=')
y2=input('y=')
disp('iserisci cordinare della terza cellula')
x3=input('x=')
y3=input('y=')
disp('iserisci cordinare della quarta cellula')
x4=input('x=')
y4=input('y=')
disp('iserisci cordinare della quinta cellula')
x5=input('x=')
y5=input('y=')
disp('iserisci cordinare della sesta cellula')
x6=input('x=')
y6=input('y=')
disp('iserisci cordinare della settima cellula')
x7=input('x=')
y7=input('y=')
disp('iserisci cordinare della ottava cellula')
x8=input('x=')
y8=input('y=')
disp('iserisci cordinare della nona cellula')
x9=input('x=')
y9=input('y=')

it=input('numero iterazioni????')

%­X colonna Y riga

A(x1,y1)=[1];A(x2,y2)=[1];A(x3,y3)=[1];A(x4,y4)=[1];A(x5,y5)=[1];
A(x6,y6)=[1];A(x7,y7)=[1];A(x8,y8)=[1];A(x9,y9)=[1];
A
hold on
plot(y1,x1,'sb')
plot(y2,x2,'sb')
plot(y3,x3,'sb')
plot(y4,x4,'sb')
plot(y5,x5,'sb')
plot(y6,x6,'sb')
plot(y7,x7,'sb')
plot(y8,x8,'sb')
plot(y9,x9,'sb')
axis([0 50 0 50])


pause

for k=1:it
for n=2:48
   for m=2:48
       B=A(n-1,m)+A(n+1,m)+A(n,m-1)+A(n,m+1)
     if rem(B,2)==[0]
         A(n,m)=[0]
     else
         A(n,m)=[1]
     end
  hold off    
[i,j]=find(A)
plot(i,j,'.m')
axis([0 100 0 100])
drawnow
 
   end
hold off    
[i,j]=find(A)
plot(i,j,'.m')
axis([0 100 0 100])
drawnow
end


end
 
Top
ALL_Asteroid
view post Posted on 12/8/2009, 14:55     +1   -1




macchissù sti scaruaggi ?
 
Top
view post Posted on 13/8/2009, 01:42     +1   -1
Avatar

IN DISPERSIONE

Group:
FOUNDER
Posts:
14,802
Reputation:
+36
Location:
trinakaos---CT/SR

Status:


delle cose interessantissime in cui io ci vedo delle dinamiche sociali... la nuova e più performante versione del codice è in lavorazione :ok:
 
Top
view post Posted on 28/8/2009, 13:58     +1   -1
Avatar

IN DISPERSIONE

Group:
FOUNDER
Posts:
14,802
Reputation:
+36
Location:
trinakaos---CT/SR

Status:


 
Top
3 replies since 12/8/2009, 10:50   98 views
  Share