function [rkl, MER] = receptor( signal, SYS, simbolos )

%========================================================================
% Simula un receptor OFDMA con esquemas de demodulación
% M-QAM o Q-PSK
%========================================================================


% Seleccionar entre demodulador M-QAM o M-PSK %

if (strcmp(SYS.modulacion,'QAM'))
    demodulador = modem.qamdemod('M',SYS.M,'SymbolOrder','Gray','OutputType','Bit');
else
    demodulador = modem.pskdemod('M',SYS.M,'SymbolOrder','Gray','OutputType','Bit');
end

r_n = reshape(signal,SYS.Ls,SYS.Nsimbolos_OFDM);    % S/P
r_n = r_n(SYS.Lg+1:SYS.Ls,:);                       % Extraer CP

r_n = r_n/sqrt(SYS.Nifft) ;                         % Deshacer escalado de amplitud

fft_signal = fft(r_n,SYS.Nifft);                    % Convierte la señal OFDMA al dominio de la frecuencia
for i=1:SYS.Nsimbolos_OFDM
    fft_signal(:,i) = fftshift(fft_signal(:,i));
end

rkl = fft_signal(ceil((SYS.L-SYS.N)/2)+1:floor((SYS.L-SYS.N)/2)+SYS.N,:);    % Deshace el mapeo


simbolos_recibidos=reshape(rkl,SYS.Nsimbolos_total,1);                       % Calcular el MER
error_simbolos=simbolos_recibidos-simbolos;
MER = 20*log10( mean(abs(simbolos))/mean(abs(error_simbolos)) );
fprintf('\nEl MER es %g dB\n',MER)

bits_estimados=demodulate(demodulador,rkl) ;                                 % Demodulador+decisor



end

