%% FUNCIÓN FILTRO NK
%<filtroNK>

%PARÁMETROS DE RETORNO:
%X: Vector con procesado filtro PHYDYAS y compensación retardo
%bGIzqFBMC: Banda de guarda izquierda
%bGDerFBMC: Banda de guarda derecha
%Hk: Coeficientes filtro PHYDYAS

%PARÁMETROS DE INGRESO:
%datosOQAM: Vector de valores modulados OQAM
%parametros: Estructura con parámetros de simulación

function [X,bGIzqFBMC,bGDerFBMC,Hk]=filtroNK(datosOQAM,parametros)

bGIzq=floor((parametros.tamFFT-(parametros.numSub-1))/2);%Subportadoras corregido al par entero anterior 
bGDer=parametros.tamFFT-(parametros.numSub-1)-bGIzq;%Cálculo de banda de guarda derecha

vSobreM=zeros(4*(parametros.numSub-1),1);%Equivale a K*Subportadoras. Se corrige este última al par entero anterior
HkUnil=[0.97196 sqrt(2)/2 0.235147];%Coeficientes unilaterales filtro PHYDYAS
Hk=[fliplr(HkUnil) 1 HkUnil];%Coneficientes completos filtro PHYDYAS
                    
vSobreM(1:4:end)=datosOQAM;%Sobre muestreo en factor K=4 (sobrelapamiento)
bGIzqFBMC=4*bGIzq;% Equivale a K*bGIzq 
bGDerFBMC=4*bGDer;% Equivale a K*bGDer
vAdC=[zeros(bGIzqFBMC,1);vSobreM;zeros(bGDerFBMC,1)];%Vector con adición de ceros en bandas de guarda
X1=filter(Hk,1,vAdC);  % aplicación de filtro PHYDYAS
X=[X1(4:end);zeros(4-1,1)];%Remoción/compensación retardo filtro PHYDYAS (K=4), a la mitad de su longitud

end

