No BSD License  

Highlights from
BPSK Simulator for Low Rate Transmisions

image thumbnail

BPSK Simulator for Low Rate Transmisions

by

 

01 Jun 2004 (Updated )

BPSK Simulator for didactical purposes. Systemic coding style.

cargar.m
function [out,posicion] = cargar(ruta,file,posicion, ... 
                                 nMuestras, tipo, nTrama, retardo)
%------------------------------------------------------------------------
%|  [out,posicion] = cargar(ruta,file,posicion, nMuestras, tipo, nTrama)
%------------------------------------------------------------------------
%|    Funcin que lee un fichero y extrae, bien la seal correspondiente
%|  a un paquete, bien los bits de una trama.
%|
%|    Entradas:
%|       1.- RUTA      : dnde est fichero con los cdigos (Fila caracteres)
%|       2.- FILE      : nombre del fichero con los cdigos (Fila caracteres)
%|       3.- POSICION  : posicin desde la que se desea comenzar a leer
%|       4.- N_MUESTRAS: nmero de muestras a leer. 
%|                       Si vale "inf", desde posicion hasta el final
%|       5.- TIPO      : tipo de fichero a leer:
%|                0 = INFO: secuencia de "0" y "1" con la informacin a TX.
%|                1 = TRAMA:  fichero de tramas, organizado matricialmente.
%|                2 = SEAL:  fichero con la seal del algn punto de observ.
%|       6.- N_TRAMA   : n de trama que se quiere leer.
%|                       Si toma valor > 1 => se calcula la posicin (se ignora 
%|                                            el parmetro de entrada posicin)
%|                       Valor por defecto: a partir de posicin.
%|       7.- RETARDO    : indica n de muestras a prescindir en una trama.
%|                        til para ignorar retardos introducidos por procesado
%|                                          
%|    Salida:
%|       1.- OUT      = vector fila con la informacin deseada.
%|       2.- POSICION = posicin donde qued el puntero.
%|                    
%-------------------------------------------------------------------------
%|   Autor: Cesar Delgado
%|   Fecha: 19-Abril-2.004
%-------------------------------------------------------------------------

% 1.- Validacin de Parmetros
%------------------------------
if nargin < 5,
   disp ('ERROR: faltan parmetros en Carga()');
else    
   
   % 2.- Apertura del fichero para lectura
   %---------------------------------------
   Fic=fopen([ruta file],'rb');
      
   % 3.- Extraccin de la informacin deseada
   %-----------------------------------------
   
   switch tipo,
      
      
  %%%%%%%%%%%%%%%%%%% : TRAMA: secuencia de "0" y "1" %%%%%%%%%
   case {0,1}, 
      if nargin < 6,       % Sacamos a partir de una posicin
         if (posicion > 1), fseek(Fic, posicion, -1); end;
      else (nTrama > 1), % Sacamos una determinada trama
          posicion = ((nTrama-1)*nMuestras);
          fseek(Fic, posicion, -1); 
      end;              
      out      = fread(Fic,nMuestras,'uint8')';
      posicion = ftell(Fic); 
      fseek(Fic, 1, 0);
      
      % Estamos al final del fichero:
      %    a) FEOF(Fic) es verdadero
      %              O
      %    b) Un desplazamiento unitario nos devuelve 
      %           al principio del fichero
      %----------------------------------------------
      %   Hay que implementar las dos alternativas porque
      % en ocasiones la poscion final es justo la anterior
      % a la ultima y no considera estar al final del fichero
      
      if feof(Fic) | fseek(Fic, 1, 0), posicion=-1; end;
      fclose(Fic);
      return;
      
   %%%%%%%%%%%%%%%%%%% : SEAL: muestras de cualquer seal %%%%%%%%%%%%%%%
   case 2, 
      if nargin < 6,        % Sacamos a partir de una posicin         
          if (posicion > 1), fseek(Fic, posicion, -1); end;          
       elseif (nTrama > 1), % Sacamos una determinada Trama   
          if nargin < 7, retardo = 0;
          elseif isempty(retardo), retardo = 0; end;
          posicion = 8*((nTrama-1)*(nMuestras)-1)+8*retardo;
          fseek(Fic, posicion, -1);
          fseek(Fic, posicion, -1);
      else,                 % Sacamos la primera trama con un retardo
          posicion = 8*retardo + (retardo==0);
          if (posicion > 1), fseek(Fic, posicion, -1); end;
      end;                   
      out      = fread(Fic,nMuestras,'float64')';
      posicion = ftell(Fic);
      % Estamos al final del fichero:
      %    a) FEOF(Fic) es verdadero
      %              O
      %    b) Un desplazamiento unitario nos devuelve 
      %           al principio del fichero
      %----------------------------------------------
      %   Hay que implementar las dos alternativas porque
      % en ocasiones la posicion final es justo la anterior
      % a la ultima y FEOF devuelve falso
      
      if feof(Fic) | fseek(Fic, 1, 0), posicion=-1; end;               
      fclose(Fic);
      return;
   end;                         
 end; 

Contact us