No BSD License  

Highlights from
BPSK Simulator for Low Rate Transmisions

image thumbnail
from BPSK Simulator for Low Rate Transmisions by César Delgado González
BPSK Simulator for didactical purposes. Systemic coding style.

validaInvalido.m

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%  VALIDACIN DE PARMETROS DE GENERA CRC
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% 1.- Validacin de Parmetros de Entrada
%----------------------------------------
   % 1.1.- Nmero de parmetros de entrada
if nargin < 1      
   disp('ERROR: faltan parametros en generaCRC');   
elseif isempty(trama)
   disp('ERROR: trama vaca en generaCRC');
else   
   % 1.2.- Asignacin de valores por defecto en caso de omisin
   if nargin < 2      
      codigo = 4;
      tramo  = 7;
      metodo = 'hamming';
      validados = 0;
   elseif nargin < 3      
      tramo  = 7;
      metodo = 'hamming';
      validados = 0;
   elseif nargin < 4,               
      metodo = 'hamming';
      validados = 0;
   elseif nargin < 5,
      validados = 0;
   end;
   
    % 1.3.- Conversin a vector fila   
    tamano = size(trama);
    if tamano(1) > 1
         trama = trama(:,1); % Nos quedamos con 1 columna
         trama = trama';     % Convertimos a fila
    end
    
    % 1.4.- Se toman valores absolutos      
    codigo = abs(codigo);
    tramo  = abs(tramo);

    % 1.5.- Validacin de Parmetros
    if length(trama) < tramo
      disp ('ERROR: no se puede escoger un tramo de ms longitud que la propia trama en generaCRC');
    else
      if ~validados 
       [validados, metodo, tramo, codigo] = ... 
          validaParametrosCRC(metodo, tramo, codigo, 1);
    end;
    
    
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
    %%%%%%%%%%%%%%  VALIDACIN DE PARMETROS DEL MODULADOR I-Q
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
    
    % 1.- Comprobacin de Parmetros
%-------------------------------
   % 1.1.- Numero de parametros introducidos
if nargin < 4
   disp ('ERROR: faltan parmetros en la funcin moduladorIQ');
else
   if nargin < 5      
      Rb      = 2400;
      RollOff = 0.5;
      QPSK    = 0;
      fase    = 0;
   elseif nargin < 6
      RollOff = 0.5;
      QPSK    = 0;      
      fase    = 0;
   elseif nargin < 7
      QPSK    = 0;
      fase    = 0;
   elseif nargin < 8
      fase    = 0;      
   end;
   
   % 1.2.- Trama se transforma a vector fila si no lo fuera
   Tamano = size(trama);
   if Tamano(1) > 1
      trama = trama(:,1); % Nos quedamos con la 1 columna
      trama = trama';     % Transformamos el vector fila en columna
   end;
   
   % 1.3.- Relacion entre frecuencias
   FS_FI = 1; % Constantes
   FI_RB = 2;    
   FS_RB = 3;
   
     % 1.3.1.-La relacion fi/Rb ha de ser un numero
     %        entero y mayor de 10
   relacion(FI_RB) = ceil(fi/Rb);   
   if relacion(FI_RB) < 2, 
      relacion(FI_RB) = 2;
   end;
   fi = relacion(FI_RB)*Rb;
   
     % 1.3.2.- La relacion fs/fi debera ser constante
     %         y mayor de 2
   relacion(FS_FI) = ceil(fs/Rb);
   if relacion(FS_FI) < 2
      relacion(FS_FI) = 4
   end;
   
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%555
   %%%%%%%%%%%%%% VALIDACIN DE PARMETROS DE DEMODULADOR I-Q
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   
     %  -- 1.1.- Valores por defecto
   if (nargin < 3),    % Reposo inicial por defecto
      memoria    = zeros(8,34); 
      N          = 20;
      parametros = zeros(4,3);
      pPLL    = 1;       
      pKv = 1;
      pWn = 2;
      pPsi = 3;
      parametros(pPLL, pKv) = 5e4;    % Hz/V
      parametros(pPLL, pWn) = 30.8e3; % rad/sg
      parametros(pPLL, pPsi) = 1/(sqrt(2));
   elseif (nargin < 4), 
      N = 20; 
      parametros = zeros(4,3);
      pPLL    = 1;       
      pKv = 1;
      pWn = 2;
      pPsi = 3;
      parametros(pPLL, pKv) = 5e4;    % Hz/V
      parametros(pPLL, pWn) = 30.8e3; % rad/sg
      parametros(pPLL, pPsi) = 1/(sqrt(2));   
   elseif (nargin < 5), % Parmetros del PLL por defecto
      if N>50, N=50; end;
      parametros = zeros(4,3);
      pPLL    = 1;       
      pKv = 1;
      pWn = 2;
      pPsi = 3;
      parametros(pPLL, pKv) = 5e4;    % Hz/V
      parametros(pPLL, pWn) = 30.8e3; % rad/sg
      parametros(pPLL, pPsi) = 1/(sqrt(2));
   else
      if isempty(memoria), memoria = zeros(8,34); end;
      if isempty(N), N=20; elseif N>50, N=50; end;
      if isempty(parametros),
            parametros = zeros(4,3);      
            pPLL    = 1; % Columna que ocupan los parmetros del PLL
            pKv = 1;
            pWn = 2;
            pPsi = 3;
            parametros(pPLL, pKv) = 5e4;    % Hz/V
            parametros(pPLL, pWn) = 30.8e3; % rad/sg
            parametros(pPLL, pPsi) = 1/(sqrt(2));           
         else
            aux = zeros(4,3)
            if (size(parametros,1) > 4), 
               parametros(5:size(parametros,1),:)= []; 
            end;
            if (size(parametros,2) > 3),
               parametros(:,3:size(parametros,2))= [];
            end;
            aux(1:size(parametros,1), 1:size(parametros,2)) = parametros;
            parametros=aux;
            clear aux;
         end;
   end;   
   
   %  -- 1.2.- Se transforma la entrada a vector fila
   if size(bandaFI,1) > 1, % Si tiene ms de una columna
      bandaFI = bandaFI(:,1); % nos quedamos con la 1 columna
      bandaFI = bandaFI';     % y trasponemos.
   end;

Contact us at files@mathworks.com