function [Linea, memoria, retardo] = cosenoAlzado (PAM, fs, Rb, memoria,...
RollOff, primera)
%--------------------------------------------------------------------------
% function [Linea, memoria, retardo] = cosenoAlzado (PAM, fs, Rb,...
% memoria, RollOff)
%--------------------------------------------------------------------------
%| Funcion que realiza el filtrado coseno alzado de una
%| seal PAM.
%|
%| ENTRADAS
%| 1.- PAM = seal PAM de entrada
%| 2.- FS = frecuencia de muestreo
%| 3.- RB = Rgimen binario
%| 4.- MEMORIA = condiciones iniciales a aplicar en el filtro
%| 5.- ROLL_OFF = factor de Roll Off del filtro alzado.
%| Valor por defecto: 1
%|
%| SALIDAS:
%| 1.- LINEA = linea tras filtrado coseno alzado
%| 2.- MEMORIA = condiciones finales del filtro coseno alzado
%| 3.- RETARDO = retardo maximo introducido por el filtro.
%--------------------------------------------------------------------------
% Autor: Cesar Delgado Gonzalez
% Fecha: 19- Abril -2.004
%--------------------------------------------------------------------------
if nargin < 4
Disp ('ERROR: en el numero de parametros de entrada de la funcion cosenoAlzado');
else
if nargin < 5
RollOff=1;
primera=1;
elseif nargin < 6,
primera=1;
end;
% 1.- Diseo del filtro coseno alzado
%-------------------------------------
h = rcosfir(RollOff,[-3 3],round(fs/Rb),1);
retardo = 0;
if primera,
gd = grpdelay(h,1,fs,'whole');
retardo = ceil(max(gd));
end;
% 2.- Filtrado de la seal de entrada
%------------------------------------
%Linea = rcosflt(Y,fs,fd) es otra forma de calcular esto
[Linea, aux]= filter(h,1,PAM,memoria(1:length(h)-1));
memoria(1:length(h)-1) = aux';
% 3.- Eliminamos retardo inicial
%-------------------------------
if primera,
Linea = Linea(retardo+1:length(Linea));
end;
end