% gabriel@pads.ufrj.br 120329

% Dados de Treino:

i1 = [ -1 -1 +1 -1 -1 ;
       -1 +1 +1 -1 -1 ;
       -1 -1 +1 -1 -1 ;
       -1 -1 +1 -1 -1 ;
       -1 +1 +1 +1 -1 ];

i2 = [ +1 +1 +1 +1 +1 ;
       -1 -1 -1 -1 +1 ;
       +1 +1 +1 +1 +1 ;
       +1 -1 -1 -1 -1 ;
       +1 +1 +1 +1 +1 ];
   
x1 = reshape(i1,25,1); x2 = reshape(i2,25,1);

% Treino:

W = (x1*x1'-eye(25)) + (x2*x2'-eye(25));

% Dados de Teste:

rand('state',0); r = -2*(rand(5,5) < 0.4)+1;

y = i1.*r; s = reshape(y,25,1); 

% Recuperação da Memória:

s = 2*((W*s)>0)-1; reshape(s,5,5)

