|
|
| In un altro post ho detto quanto mi hanno sempre affascinato questi automi cellulari...l'altra sera dovevo guidare per una settantina di km, di notte... avevo un pò di sonno e per svegliarmi mi sono bevuto un pugno di redbull, morale della favola alle 3 di mattina, quando sono arrivato a casa ero hiperattivo e non sapendo che fare mi sono messo a implementare un semplice automa cellulare monodimensionale in MATLAB, e devo dire che non è stato semplice infatti tutto il giorno successivo l'ho passato a correggerlo ma alla fine tutto sommato sono arrivato a quello che volevo..la parte grafica mi ha dato qualche problema però sono riuscito ad accomodare in questo modo puoi inserire la posizione di 4 cellule vive (che sarebbero gli 1) e lui seguendo la sua logica cresce e si sviluppa. A prossima notte insonne cerco di fare quello bidimensionale...so che il codice non è pulito ma va bene così CODICE %------- AUTOMA CELLULARE MONODIMENSIONALE-------------- % by g'OZ '09 %La logica che segue è monomensionale, però l'evoluzione %crea un terzo asse dei tempi. La logica che gestisce la %crescita è la seguente, lo stato delle 3 celle contigue %comanda la cella centrale con una logica: %(0,0,0)-->0 %(0,1,1)-->1 %(0,1,0)-->1 %(0,1,1)-->0 %(1,0,0)-->1 %(1,0,1)-->1 %(1,1,0)-->0 %(1,1,1)-->0 clc clear
A=zeros(1,20) C=zeros(10,20)
pos_1a=input('Posizione del primo 1 ') pos_1b=input('Posizione del secondo 1 ') pos_1c=input('Posizione del terzo 1 ') pos_1d=input('Posizione del quarto 1 ') pos_1e=input('Posizione del quinto 1 ') A(pos_1a)=[1] A(pos_1b)=[1] A(pos_1c)=[1] A(pos_1d)=[1] A(pos_1e)=[1] C(pos_1a)=[1] C(pos_1b)=[1] C(pos_1c)=[1] C(pos_1d)=[1] C(pos_1e)=[1] it=input('Numero di iterazioni ')
A pause(2)
for h=1:it for n=1:18 B=A(n)+A(n+1)+A(n+2);
switch B case 0 C(h,n+1)=0; C case 1 C(h,n+1)=1; C case 2 if A(n)==A(n+2); C(h,n+1)=1; C else C(h,n+1)=0; end case 3 C(h,n+1)=0; C end
end A=C(h,:); pause(0.2) D=h * A; x=(1:1:20); %parte grafica hold on grid off
plot(x,D,'*m') % plot(x,D,'y')
end Edited by g'oz - 11/8/2009, 10:05
|
| |