function [ SYS ] = parametros(flag)

%========================================================================
% Se definen e inicializan todos los parámetros del sistema y la simulación
%========================================================================


SYS.simulaciones = 7 ;                           % Número de iteraciones en las simulaciones que proceda

SYS.K =1200 ;                                    % Número de subportadoras que se pueden ocupar en el sistema
SYS.Q = 4;                                       % Spreading factor. Número de usuarios del sistema
SYS.N = SYS.K/SYS.Q;                             % Número de símbolos a transmitir por usuario por cada periodo de símbolo

SYS.Nifft = 2048;                                % Número de muestras para la IFFT
SYS.Intervalo_guarda = 14.125;                   % Fracción de la longitud L que dura el intervalo de guarda ( 4 CP normal, 14.125 CP extendido )
SYS.M = 64 ;                                     % Modulador M-ario
SYS.modulacion = 'QAM';                          % Tipo de modulación
SYS.espaciado_subportadoras = 15*10^3 ;          % Espaciado entre subportadoras LTE

%%%%%%%%%%%% Parámetros para simulación OFDM %%%%%%%%%%%%%%%%%

if (flag<=3)||(flag==7)
    SYS.ofdm = 1;
    
    if flag==7
        SYS.Nsimbolos_OFDM = 1 ;                        % En la simulación para hallar el CCDF de la PAPR se simula símbolo a símbolo
    else
        SYS.Nsimbolos_OFDM = 20 ;                       % Número total de símbolos enviados OFDM por el usuario en el resto de simulaciones
    end
    
    SYS.Nsimbolos_total = SYS.Nsimbolos_OFDM*SYS.N ;        % Número de símbolos modulados a transmitir
    SYS.Tsimbolo_OFDM = 1/SYS.espaciado_subportadoras  ;    % Duración símbolo OFDMA
    SYS.Tsimbolo_serie = SYS.Tsimbolo_OFDM/SYS.K ;          % Duración símbolo serie
    SYS.Bprincipal = (SYS.K)/SYS.Tsimbolo_OFDM;             % Ancho de banda del sistema
    SYS.L = SYS.Nifft;                                      % Longitud en muestras símbolo OFDMA
    SYS.fs = SYS.L/SYS.Tsimbolo_OFDM;                       % Frecuencia de muestreo del sistema
    SYS.Lg = ceil(SYS.L/SYS.Intervalo_guarda) ;             % Longitud en muestras del intervalo de guarda
    SYS.Ls = ceil(SYS.L+SYS.Lg);                            % Longitud en muestras del simbolo OFDMA con prefijo cíclico
else
    
    %%%%%%%%%%%% Parámetros para simulación SCFDMA %%%%%%%%%%%%%%%%%
    
    SYS.ofdm = 0 ;
    
    if (flag==8||flag==9)
        SYS.Nsimbolos_SCFDMA = 1 ;                          % En la simulación para la PAPR se simula símbolo a símbolo
    else
        SYS.Nsimbolos_SCFDMA = 20 ;                         % Número total de símbolos enviados SCFDMA por el usuario en el resto de simulaciones
    end
    
    SYS.acceso = 'DFDMA';                                   % Acceso al medio Distribuido (DFDMA) o Localizado (LFDMA)
    if flag==9
        SYS.acceso = 'LFDMA';                               % Segundo caso de SC-FDMA ( solo para simulación de PAPR )
    end
    
    SYS.Nsimbolos_total = SYS.Nsimbolos_SCFDMA*SYS.N ;      % Número de símbolos modulados a transmitir por usuario (SCFDMA)
    SYS.Tsimbolo_SCFDMA = 1/SYS.espaciado_subportadoras ;   % Duración símbolo SCFDMA
    SYS.Tsimbolo_serie = SYS.Tsimbolo_SCFDMA/SYS.K ;        % Duración símbolo serie
    SYS.Bprincipal = (SYS.K)/SYS.Tsimbolo_SCFDMA;           % Ancho de banda del sistema
    SYS.L = SYS.Nifft;                                      % Longitud en muestras símbolo SCFDMA
    SYS.fs = SYS.L/SYS.Tsimbolo_SCFDMA ;                    % Frecuencia de muestreo del sistema
    SYS.Lg = ceil(SYS.L/SYS.Intervalo_guarda) ;             % Longitud en muestras del intervalo de guarda
    SYS.Ls = ceil(SYS.L+SYS.Lg);                            % Longitud en muestras del simbolo SCFDMA con prefijo cíclico
    
end
SYS.Nbits = SYS.Nsimbolos_total*log2(SYS.M);        % Número total de bits a transmitir por el usuario
SYS.Rb = log2(SYS.M)/SYS.Tsimbolo_serie ;           % Tasa binaria del usuario
SYS.p = 2;                                          % Factor de suavidad del SSPA
SYS.IBO=[ 3 6 9 ];                                  % Vector con distintas IBO (dB) para las simulaciones de SSPA


%%%%%  Información sobre el sistema de comunicaciones OFDMa o SCFDMA %%%%%%

if (flag==1||flag==4)
    if SYS.ofdm==1
        fprintf('\nSistema OFDMA con %g subportadoras\n',SYS.K)
        fprintf('Esquema de modulación %g-ario \n',SYS.M)
    else
        fprintf('\nSistema SC-FDMA con %g usuarios, %g subportadoras por usuario y %g subportadoras en total\n',SYS.Q,SYS.N,SYS.K,SYS.acceso)
        fprintf('\nEl método de acceso compartido al medio es %s\n',SYS.acceso)
        fprintf('Esquema de modulación %g-ario \n',SYS.M)
    end
    fprintf('Incorpora Prefijo Cíclico de duración 1/%g del tiempo de símbolo \n\n',SYS.Intervalo_guarda)
    fprintf('La tasa binaria es %g Mbps\n',SYS.Rb/10^6)
    fprintf('La frecuencia de muestreo es %g*10^6 muestras/s\n',SYS.fs/10^6)
    fprintf('Se transmiten %g bits\n',SYS.Nbits)
    fprintf('Se transmiten %g símbolos\n',SYS.Nsimbolos_total)
    
    if SYS.ofdm==1
        fprintf('Se transmiten %g símbolos OFDMA\n\n',SYS.Nsimbolos_OFDM)
        fprintf('El tiempo de símbolo es %g us\n',SYS.Tsimbolo_OFDM*(10^6))
        
    else
        fprintf('Se transmiten %g símbolos SCFDMA\n\n',SYS.Nsimbolos_SCFDMA)
        fprintf('El tiempo de símbolo es %g us\n',SYS.Tsimbolo_SCFDMA*(10^6))
    end
    fprintf('La duración del intervalo de guarda es %g us\n',SYS.Lg/SYS.fs*(10^6))
    fprintf('El tiempo de símbolo con CP es %g us\n\n',SYS.Ls/SYS.fs*(10^6))
    fprintf('La longitud de un símbolo es %g muestras \n',SYS.L)
    fprintf('La longitud del intervalo de guarda es %g muestras \n',SYS.Lg)
    fprintf('La longitud de un símbolo con CP es %g muestras \n',SYS.Ls)
    
    fprintf('El número de puntos para calcular la IFFT es %g puntos\n\n',SYS.Nifft)
    fprintf('La separación entre subportadoras es de %g KHz \n',SYS.espaciado_subportadoras/10^3)
    fprintf('El ancho de banda total del sistema es %g MHz \n\n',SYS.K*SYS.espaciado_subportadoras/10^6)
    fprintf('El factor de suavidad del SSPA es %g \n',SYS.p)
end
end

