function [ s_n,simbolos,PAPR] = transmisor_scfdma(SYS)

%========================================================================
% Simula un transmisor SCFDMA (LFDMA o DFDMA) con esquemas de modulación
% M-QAM o Q-PSK
%========================================================================


Bits = randi([0 1],SYS.Nbits,1);                   % Fuente de datos binaria

% Seleccionar entre modulador M-QAM o QPSK %

if (strcmp(SYS.modulacion,'QAM'))
    modulador = modem.qammod('M',SYS.M,'SymbolOrder','Gray','InputType','Bit');
else
    modulador = modem.pskmod('M',SYS.M,'SymbolOrder','Gray','InputType','Bit');
end

simbolos = modulate(modulador,Bits);                 % Modulador M-QAM o QPSK
x = reshape(simbolos,SYS.N,SYS.Nsimbolos_SCFDMA);    % Símbolos entrada de la FFT ( N por periodo/usuario SC-FDMA )
X = fft(x,SYS.N) ;                                   % Bloque FFT

if strcmp(SYS.acceso,'LFDMA')                        % Mapeador LFDMA
    Y = zeros(SYS.Nifft,SYS.Nsimbolos_SCFDMA);               
    for j=1:SYS.Nsimbolos_SCFDMA
        Y(:,j)=[zeros(ceil((SYS.Nifft-SYS.N)/2),1);X(:,j);zeros(floor((SYS.Nifft-SYS.N)/2),1)];
    end
    for l=1:SYS.Nsimbolos_SCFDMA
        Y(:,l) = fftshift(Y(:,l));
    end
    
end
if strcmp(SYS.acceso,'DFDMA')                       % Mapeador DFDMA
    Y = zeros(SYS.Nifft,SYS.Nsimbolos_SCFDMA);
    aux = zeros(SYS.K,SYS.Nsimbolos_SCFDMA);
    aux(1:SYS.Q:SYS.K,:) = X(1:SYS.N,:);
    for j=1:SYS.Nsimbolos_SCFDMA
        Y(:,j)=[zeros(ceil((SYS.Nifft-SYS.K)/2),1);aux(:,j);zeros(floor((SYS.Nifft-SYS.K)/2),1)];
    end
    for l=1:SYS.Nsimbolos_SCFDMA
        Y(:,l) = fftshift(Y(:,l));
    end
end

y = ifft(Y,SYS.Nifft);                               % Bloque IFFT

y_CP = zeros(SYS.Ls,SYS.Nsimbolos_SCFDMA);           % Añadir CP
y_CP(1:SYS.Lg,:) = y(SYS.L-SYS.Lg+1:SYS.L,:);
for it=1:SYS.L
    y_CP(it+SYS.Lg,:)=y(it,:);
end

s_n = reshape(y_CP,SYS.Ls*SYS.Nsimbolos_SCFDMA,1) ;  % Señal SCFDMA digital en banda base
s_t = resample(s_n,4,1);                             % Sobremuestreo
PAPR = 20*log10(max(abs(s_t))/mean(abs(s_t)));       % Peak to Average Power Ratio de la señal SCFDMA en banda base sobremuestreada  (dB)

end

