function [ganadora,patronGanadora]=som(PesosNeuronas,Entrada)
%function [ganadora,patronGanadora]=som(PesosNeuronas,Entrada)
% 
% Calculo de la salida de una red SOM para una entrada determinada
%
% [ganadora,patronGanadora]=som(PesosNeuronas,Entrada);
%
% PesosNeuronas:            (NxMxE) Representa la red SOM. Se le indica los 
%                           valores de los pesos de la entrada a cada una de 
%                           las neuronas. Existen NxM neuronas en un plano 
%                           de forma NxM. El tamaño del vector de entrada
%                           es de E.
% Entrada:                  (DxE) La entrada a la SOM para realizar el
%                           aprendizaje. Se introducen D vectores de tamaño
%                           E.
%
%
% ganadora:                 (Dx2) Posición de la neurona ganadora para la
%                           entrada correspondiente.
% patronGanadora:           (DxE) Patrón almacenado en la neurona ganadora
%                           para la entrada correspondiente.

% 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



tam=size(PesosNeuronas);
tamRed=tam(1:2);

formaRed = ones(tamRed);
tamEntrada = size(Entrada);

for i=1:tamEntrada(1)
      neuronaGanadora = ganadora2(PesosNeuronas,Entrada(i,:));
      ganadora(i,:)=neuronaGanadora;
      for k=1:tamEntrada(2),
          aux=PesosNeuronas(:,:,k);
          patronGanadora(i,k)=PesosNeuronas(ganadora(i,1),ganadora(i,2),k);
      end;
end;

