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;