function [ rkl, MER ] = receptor_scfdma(SYS,r_n,simbolos)

%========================================================================
% Simula un receptor SCFDMA (LFDMA o DFDMA) 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

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

if strcmp(SYS.acceso,'LFDMA')          % Convierte la señal SCFDMA al dominio de la frecuencia y deshace el mapeo
    X_r = fft(y_n,SYS.Nifft);
    for i=1:SYS.Nsimbolos_SCFDMA
        X_r(:,i) = fftshift(X_r(:,i));
    end
    X_r = X_r(ceil((SYS.Nifft-SYS.N)/2)+1:floor((SYS.Nifft-SYS.N)/2)+SYS.N,:);
end

if strcmp(SYS.acceso,'DFDMA')         % Convierte la señal SCFDMA al dominio de la frecuencia y deshace el mapeo
    X_r = fft(y_n,SYS.Nifft);
    for i=1:SYS.Nsimbolos_SCFDMA
        X_r(:,i) = fftshift(X_r(:,i));
    end
    X_r = X_r(ceil((SYS.Nifft-SYS.K)/2)+1:floor((SYS.Nifft-SYS.K)/2)+SYS.K,:);
    X_r(1:SYS.N,:) = X_r(1:SYS.Q:SYS.K,:);
end

x_r = ifft(X_r,SYS.N);                               % Eliminar codificación FFT mediante la IFFT
rkl = reshape(x_r,SYS.Nsimbolos_total,1);


simbolos_recibidos=rkl;                               % Calcular el MER
error_simbolos=simbolos_recibidos-simbolos;
MER = 10*log10( mean(abs(simbolos).^2)/mean(abs(error_simbolos).^2) );
fprintf('\nEl MER es %g dB\n',MER)

bits_recibidos=demodulate(demodulador,x_r);           % Demodulador+decisor


end


