%% ECUALIZADOR DE FUERZA CERO (zero-forcing equalizer)
%<efc>

%PARÁMETROS DE RETORNO:
%simboloSalEc: Símbolo de salida ecualizado

%PARÁMETROS DE INGRESO:
%filtroCheb:coeficientes filtro Chebychev
%parametros: Estructura con parámetros de simulación
%tamSub: Tamaño de subbanda
%simboloSal: Símbolo de salida obtenido tras paso por FFT, submuestreo(2) y remoción
%de banda de guarda izquierda

function simboloSalEc=efc(filtroCheb,parametros,tamSub,simboloSal);

% Obtención de respuesta inversa del filto
rxf = [filtroCheb.*exp(1i*2*pi*0.5*(0:parametros.longFiltro-1)'/parametros.tamFFT); ...
       zeros(parametros.tamFFT-parametros.longFiltro,1)];
resFrecfiltroCheb = fftshift(fft(rxf)); %respuesta en frecuencia del filtro Chebychev
resFiltroChebInv = 1./resFrecfiltroCheb(parametros.tamFFT/2-tamSub/2+(1:tamSub));%Inverso de la respuesta en frecuencia del filtro

% Ecualización por subbanda para deshacer distorsión inducida por el filtro
MatSimbRx = reshape(simboloSal,tamSub,parametros.numSubBandas);%Matriz símbolo recibida
MatSimbRxEc = bsxfun(@times,MatSimbRx,resFiltroChebInv);%Matriz símbolo recibida ecualizada
simboloSalEc = MatSimbRxEc(:);


end

