  clear;  
  figure(1);
  colormap(gray(256));
  
	subplot(2,4,1);imshow('f1.bmp');
	subplot(2,4,2);imshow('f2.bmp');
	subplot(2,4,3);imshow('f3.bmp');
	subplot(2,4,4);imshow('f4.bmp');
	subplot(2,4,5);imshow('f5.bmp');
	subplot(2,4,6);imshow('f6.bmp');
	subplot(2,4,7);imshow('f7.bmp');
   subplot(2,4,8);imshow('f8.bmp');
   disp('Presione una tecla, para iniciar entrenamiento...');pause;
  
    
  CLASE=[1 1 1 1 -1 -1 -1 -1];

  PESOS=rand(1,1024);
  UMB=rand(1,1);
  index=1;
  i=0;
  while i<200 
    A=double(imread(['f' num2str(index) '.bmp']));  
    subplot(2,1,1); 
    imshow(A,[]);
    CAPA_ENTRADA=[];
    for f=1:32 
        CAPA_ENTRADA=[CAPA_ENTRADA A(f,:)];
    end;    
    SALIDA=sum(CAPA_ENTRADA.*PESOS+UMB);
    if (SALIDA>0 & CLASE(index)<0) | (SALIDA<0 & CLASE(index)>0)
       disp('Actualiza Pesos...')
       PESOS=PESOS+CLASE(index)*CAPA_ENTRADA;
       UMB=UMB+CLASE(index);
       
       %solo para visualizar matriz de pesos
       MPESOS=[];for f=0:31,MPESOS=[MPESOS; PESOS(1+32*f:32*(f+1))];end;  
		  %MPESOS=255*(MPESOS-min(min(MPESOS)))/max(max(MPESOS));  
		  subplot(2,1,2);
		  imshow(MPESOS,[]);
    end;
    
    index=index+1;    
    if index>8,index=1;end;    
    i=i+1    
    pause(0);
  end;
  
  disp('Presione una tecla, para iniciar prueba de generalización...');pause;

  
  
    % PRUEBA GENERALIZACION
  		figure(2);
    A=double(imread(['uno_prueba.bmp']));  
    subplot(1,1,1); 
    imshow('uno_prueba.bmp');
    CAPA_ENTRADA=[];
    for f=1:32, CAPA_ENTRADA=[CAPA_ENTRADA A(f,:)]; end;    
    SALIDA=sum(CAPA_ENTRADA.*PESOS+UMB);
    if SALIDA<0, disp('Clasifica como: Uno'); else disp('Error'); end;
    
    disp('Presione una tecla, para iniciar prueba de generalización...');pause;
    
    A=double(imread(['siete_prueba.bmp']));  
    imshow('siete_prueba.bmp');
    CAPA_ENTRADA=[];
    for f=1:32, CAPA_ENTRADA=[CAPA_ENTRADA A(f,:)]; end;    
    SALIDA=sum(CAPA_ENTRADA.*PESOS+UMB);
    if SALIDA>0, disp('Clasifica como: Siete'); else disp('Error'); end;   


