% APRENDIZAJE AUTOMÁTICO (Gonzalo Pajares y Jesús M. de la Cruz, Eds.)
% Editorial: RA-MA
% Capítulo 4: Redes Neuronales Artificiales
% Autores: José Antonio López Orozco


function dibujarptos(xEntrada,yEntrada,xNeuronas,yNeuronas,fondo)
%
% Función para pintar la estructura de una red SOM
%
% dibujarptos(xEntrada,yEntrada,xNeuronas,yNeuronas,fondo);
%
% xEntrada:  Coordenada x de los puntos de entrada de la red
% yEntrada:  Coordenada y de los puntos de entrada de la red
% xNeuronas: Peso de las neuronas que corresponde con la coordenada x
% yNeuronas: Peso de las neuronas que corresponde con la coordenada y
% fondo:     Opcional, si no se pone no pasa nada. Se utiliza para 
%            dibujar una figura de fondo para los ejemplos existentes:
%            'cuadrado': pinta un cuadrado  
%                                           x=[0.5 0.5 2.5 2.5];
%                                           y=[1 2 2 1];
%            'circulo': pinta dos círculos de radio 2 y 5. 

% APRENDIZAJE AUTOMÁTICO (Gonzalo Pajares y Jesús M. de la Cruz, Eds.)
% Editorial: RA-MA
% Capítulo 4: Redes neuronales artificiales
% Autores: José Antonio lópez Orozco

if nargin==5,
    if strcmp(fondo,'cuadrado')==1, 
        x=[0.5 0.5 2.5 2.5];
        y=[1 2 2 1];
        fill(x,y,[0.8 0.8 0.8]);
        axis([0 3 0 3]); 
    end
    if strcmp(fondo,'circulo')==1,
        Rext=5; Rint=2;
        xc=-Rext:0.01:Rext;yc=sqrt(Rext^2-xc.*xc);
        pxE=[xc fliplr(xc)]'; pyE=[yc -fliplr(yc)]';
        xc=-Rint:0.01:Rint;yc=sqrt(Rint^2-xc.*xc);
        pxI=[xc fliplr(xc)]'; pyI=[yc -fliplr(yc)]';
        patch(pxE,pyE,[0.7 0.7 0.7]);patch(pxI,pyI,[1 1 1]);
    end
end;
axis('square')
hold on;
plot(xEntrada,yEntrada,'y.');
plot(xNeuronas,yNeuronas,'b*-');
plot(xNeuronas',yNeuronas','b*-');