function Gmmse=generaGmmse(h,L,M,flag,X)
matriz=matrizifft(L,M);
P=L+M;
%sigma=sigma^2;  %se le ha pasado la desviacion tipica, aqui se obtiene la varianza (potencia de ruido)
Fr=transpose(conj(matriz));

    if flag==0
        Ho=matrizcanalcp(h,L,M);
        R=generaRcp(L,M);
        T=matrizTcp(L,M);
        
    else
        Ho=matrizcanalzp(h,L,M);
        R=generaRzp(L,M);
        T=matrizTcp(L,M);
    end
    H=R*Ho*T;
    Rss=eye(M); %viene de calcular la E[ss']=(s*s')/size(s,2)==eye(P)
    A=ctranspose(H*Fr);
    a=size(A)
    rss=size(Rss)
    Rxx=(X*X')/size(X,2);   
    rxx=size(Rxx)
    Gmmse=Rss*A*Rxx;
    
