function simulacion44

Nt=1000;
L=16;
M=64;
w=[0 2 4 6 8 10 12 14 16 18];
B=1;
hiper=0;
Es=1;
K=length(w);
ejex1CDMA=zeros(1,9);
ejey1CDMA=zeros(1,9);
ejex2CDMA=zeros(1,9);
ejey2CDMA=zeros(1,9);
ejex1OFDM=zeros(1,9);
ejey1OFDM=zeros(1,9);
ejex2OFDM=zeros(1,9);
ejey2OFDM=zeros(1,9);
load('C:\Documents and Settings\Juan Pablo\Escritorio\pfdc\pfdc OFDM\PRUEBA\canales.mat')
[S1,s]=generasenal(Nt,M,hiper);
[S2,s]=generasenal(Nt,M,hiper);
[S3,s]=generasenal(Nt,M,hiper);
[S4,s]=generasenal(Nt,M,hiper);
[S5,s]=generasenal(Nt,M,hiper);
[S6,s]=generasenal(Nt,M,hiper);
[S7,s]=generasenal(Nt,M,hiper);
[S8,s]=generasenal(Nt,M,hiper);
c1=sign(randn(M,1));                         % genero el codigo
longitud=sqrt(length(c1));           %hago que el codigo tenga energia unidad
c1=c1/longitud;
c2=sign(randn(M,1));                         % genero el codigo
longitud=sqrt(length(c2));           %hago que el codigo tenga energia unidad
c2=c2/longitud;
c3=sign(randn(M,1));                         % genero el codigo
longitud=sqrt(length(c3));           %hago que el codigo tenga energia unidad
c3=c3/longitud;
c4=sign(randn(M,1));                         % genero el codigo
longitud=sqrt(length(c4));           %hago que el codigo tenga energia unidad
c4=c4/longitud;
c5=sign(randn(M,1));                         % genero el codigo
longitud=sqrt(length(c5));           %hago que el codigo tenga energia unidad
c5=c5/longitud;
c6=sign(randn(M,1));                         % genero el codigo
longitud=sqrt(length(c6));           %hago que el codigo tenga energia unidad
c6=c6/longitud;
c7=sign(randn(M,1));                         % genero el codigo
longitud=sqrt(length(c7));           %hago que el codigo tenga energia unidad
c7=c7/longitud;
c8=sign(randn(M,1));                         % genero el codigo
longitud=sqrt(length(c8));           %hago que el codigo tenga energia unidad
c8=c8/longitud;

for k=1:Nt
    SS1(:,k)=c1*S1(1,k);
                    %genero una matriz con los simbolos codificados que voy a ttir
end
for r=1:Nt
    SS2(:,r)=c2*S2(1,r);
                    %genero una matriz con los simbolos codificados que voy a ttir
end
for a=1:Nt
    SS3(:,a)=c3*S3(1,a);
                    %genero una matriz con los simbolos codificados que voy a ttir
end
for b=1:Nt
    SS4(:,b)=c4*S4(1,b);
                    %genero una matriz con los simbolos codificados que voy a ttir
end
for c=1:Nt
    SS5(:,c)=c5*S5(1,c);
                    %genero una matriz con los simbolos codificados que voy a ttir
end
for d=1:Nt
    SS6(:,d)=c6*S6(1,d);
                    %genero una matriz con los simbolos codificados que voy a ttir
end
for f=1:Nt
    SS7(:,f)=c7*S7(1,f);
                    %genero una matriz con los simbolos codificados que voy a ttir
end
for z=1:Nt
    SS8(:,z)=c8*S8(1,z);
                    %genero una matriz con los simbolos codificados que voy a ttir
end

i=1;
F=matrizifft(L,M);
T=matrizTzp(L,M);
for q=1:10
h=canal(:,q)
q
H=matrizcanalzp(h,L,M);
XX=H*T*F*(SS1+SS2+SS3+SS4+SS5+SS6+SS7+SS8); %señal que ttito
XX1=H*T*F*(S1+S2+S3+S4+S5+S6+S7+S8);


    
for g=1:100
    for snr=0:5:40
            No=1/10^(snr/10);
            P=L+M;
            sigma=sqrt(No/2);          
            ni=randn(P,Nt);
            nq=randn(P,Nt);
            N=sigma.*(ni+i.*nq);
            YY=XX+N;                        %señal que recibo
            YY1=XX1+N;
            ZZ=pinv(H*T*F)*YY;
            ZZ1=pinv(H*T*F)*YY1;
            CC=c1'*ZZ;                      %señal demodulada
            ber1=calculaber(S1(1,:),CC);
            ber2=calculaber(S1,ZZ1);
            ejexCDMA(i)=snr;
            ejeyCDMA(i)=ber1;
            ejexOFDM(i)=snr;
            ejeyOFDM(i)=ber2;
            i=i+1;
           
    end
    
    ejex1CDMA=ejex1CDMA+ejexCDMA;
    ejey1CDMA=ejey1CDMA+ejeyCDMA;
    
    ejex1OFDM=ejex1OFDM+ejexOFDM;
    ejey1OFDM=ejey1OFDM+ejeyOFDM;
    i=1;
end
    ejex1CDMA=ejex1CDMA/100;
    ejey1CDMA=ejey1CDMA/100;
    ejex1OFDM=ejex1OFDM/100;
    ejey1OFDM=ejey1OFDM/100;
    ejex2CDMA=ejex2CDMA+ejex1CDMA;
    ejey2CDMA=ejey2CDMA+ejey1CDMA;
    ejex2OFDM=ejex2OFDM+ejex1OFDM;
    ejey2OFDM=ejey2OFDM+ejey1OFDM;
end
ejex2CDMA=ejex2CDMA/10;
ejey2CDMA=ejey2CDMA/10;
ejex2OFDM=ejex2OFDM/10;
ejey2OFDM=ejey2OFDM/10;
    
    
    semilogy(ejex2CDMA,ejey2CDMA,'ro-') %cdma EN ROJO
    grid;
    xlabel('Es/No');
    ylabel('Ber');
    hold on
    semilogy(ejex2OFDM,ejey2OFDM,'bd-') %ofdm EN AZUL
    grid;
    xlabel('Es/No');
    ylabel('Ber');
