Nt=2500; L=16; M=64; P=L+M; w=[0 2 4 6 8 10 12 14 16 18]; B=1; hiper=0; %ahora empezamos Es=1; K=length(w); ejex1MMSE=zeros(1,9); ejey1MMSE=zeros(1,9); ejex2MMSE=zeros(1,9); ejey2MMSE=zeros(1,9); load('C:\Documents and Settings\Juan Pablo\Escritorio\pfdc\pfdc OFDM\PRUEBA\canales.mat') [S,s]=generasenal(Nt,M,hiper); c=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c)); %hago que el codigo tenga energia unidad c=c/longitud; for k=1:Nt SS(:,k)=c*S(1,k); %genero una matriz con los simbolos codificados que voy a ttir end i=1; F=matrizifft(L,M); Fp=matrizifft(L,P); T=matrizTzp(L,M); for q=1:10 h=canal(:,q) q H=matrizcanalzp(h,L,M); XX=H*T*F*SS; %señal que ttito for g=1:60 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); %niOLA=randn(M,Nt); %nqOLA=randn(M,Nt); %NOLA=sigma.*(niOLA+i.*nqOLA); YY=XX+N; %señal que recibo %MMSE A=H*T*F; U=SS; %R=A*U+N; R=YY; A1=A'; Rrr=(R*R')/size(R,2); Rrrinv=pinv(Rrr); Gmmse=A1*Rrrinv; Uest=Gmmse*R; CC=c'*Uest; ber=calculaber(S(1,:),CC); ejexMMSE(i)=snr; ejeyMMSE(i)=ber; i=i+1; end ejex1MMSE=ejex1MMSE+ejexMMSE; ejey1MMSE=ejey1MMSE+ejeyMMSE; i=1; end ejex1MMSE=ejex1MMSE/60; ejey1MMSE=ejey1MMSE/60; ejex2MMSE=ejex2MMSE+ejex1MMSE; ejey2MMSE=ejey2MMSE+ejey1MMSE; end ejex2MMSE=ejex2MMSE/10 ejey2MMSE=ejey2MMSE/10 semilogy(ejex2MMSE,ejey2MMSE,'bd-') %un usuario en azul grid; xlabel('Es/No'); ylabel('Ber'); hold on % DOS USUARIOS ejex1MMSE=zeros(1,9); ejey1MMSE=zeros(1,9); ejex2MMSE=zeros(1,9); ejey2MMSE=zeros(1,9); [S1,s]=generasenal(Nt,M,hiper); [S2,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; 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 i=1; F=matrizifft(L,M); Fp=matrizifft(L,P); T=matrizTzp(L,M); for q=1:10 h=canal(:,q) q H=matrizcanalzp(h,L,M); XX=H*T*F*(SS1+SS2); %señal que ttito for g=1:60 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); %niOLA=randn(M,Nt); %nqOLA=randn(M,Nt); %NOLA=sigma.*(niOLA+i.*nqOLA); YY=XX+N; %señal que recibo %MMSE A=H*T*F; U=SS1; %R=A*U+N; R=YY; A1=A'; Rrr=(R*R')/size(R,2); Rrrinv=pinv(Rrr); Gmmse=A1*Rrrinv; Uest=Gmmse*R; CC=c1'*Uest; ber=calculaber(S1(1,:),CC); ejexMMSE(i)=snr; ejeyMMSE(i)=ber; i=i+1; end ejex1MMSE=ejex1MMSE+ejexMMSE; ejey1MMSE=ejey1MMSE+ejeyMMSE; i=1; end ejex1MMSE=ejex1MMSE/60; ejey1MMSE=ejey1MMSE/60; ejex2MMSE=ejex2MMSE+ejex1MMSE; ejey2MMSE=ejey2MMSE+ejey1MMSE; end ejex2MMSE=ejex2MMSE/10 ejey2MMSE=ejey2MMSE/10 semilogy(ejex2MMSE,ejey2MMSE,'gh-') % dos usuarios en verde grid; xlabel('Es/No'); ylabel('Ber'); hold on %OCHO USUARIOS ejex1MMSE=zeros(1,9); ejey1MMSE=zeros(1,9); ejex2MMSE=zeros(1,9); ejey2MMSE=zeros(1,9); [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); Fp=matrizifft(L,P); 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 for g=1:60 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); %niOLA=randn(M,Nt); %nqOLA=randn(M,Nt); %NOLA=sigma.*(niOLA+i.*nqOLA); YY=XX+N; %señal que recibo %MMSE A=H*T*F; U=SS1; %R=A*U+N; R=YY; A1=A'; Rrr=(R*R')/size(R,2); Rrrinv=pinv(Rrr); Gmmse=A1*Rrrinv; Uest=Gmmse*R; CC=c1'*Uest; ber=calculaber(S1(1,:),CC); ejexMMSE(i)=snr; ejeyMMSE(i)=ber; i=i+1; end ejex1MMSE=ejex1MMSE+ejexMMSE; ejey1MMSE=ejey1MMSE+ejeyMMSE; i=1; end ejex1MMSE=ejex1MMSE/60; ejey1MMSE=ejey1MMSE/60; ejex2MMSE=ejex2MMSE+ejex1MMSE; ejey2MMSE=ejey2MMSE+ejey1MMSE; end ejex2MMSE=ejex2MMSE/10 ejey2MMSE=ejey2MMSE/10 semilogy(ejex2MMSE,ejey2MMSE,'ro-') % en rojo 8 usuarios grid; xlabel('Es/No'); ylabel('Ber'); hold on % 64 Usuarios ejex1MMSE=zeros(1,9); ejey1MMSE=zeros(1,9); ejex2MMSE=zeros(1,9); ejey2MMSE=zeros(1,9); [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); [S9,s]=generasenal(Nt,M,hiper); [S10,s]=generasenal(Nt,M,hiper); [S11,s]=generasenal(Nt,M,hiper); [S12,s]=generasenal(Nt,M,hiper); [S13,s]=generasenal(Nt,M,hiper); [S14,s]=generasenal(Nt,M,hiper); [S15,s]=generasenal(Nt,M,hiper); [S16,s]=generasenal(Nt,M,hiper); [S17,s]=generasenal(Nt,M,hiper); [S18,s]=generasenal(Nt,M,hiper); [S19,s]=generasenal(Nt,M,hiper); [S20,s]=generasenal(Nt,M,hiper); [S21,s]=generasenal(Nt,M,hiper); [S22,s]=generasenal(Nt,M,hiper); [S23,s]=generasenal(Nt,M,hiper); [S24,s]=generasenal(Nt,M,hiper); [S25,s]=generasenal(Nt,M,hiper); [S26,s]=generasenal(Nt,M,hiper); [S27,s]=generasenal(Nt,M,hiper); [S28,s]=generasenal(Nt,M,hiper); [S29,s]=generasenal(Nt,M,hiper); [S30,s]=generasenal(Nt,M,hiper); [S31,s]=generasenal(Nt,M,hiper); [S32,s]=generasenal(Nt,M,hiper); [S33,s]=generasenal(Nt,M,hiper); [S34,s]=generasenal(Nt,M,hiper); [S35,s]=generasenal(Nt,M,hiper); [S36,s]=generasenal(Nt,M,hiper); [S37,s]=generasenal(Nt,M,hiper); [S38,s]=generasenal(Nt,M,hiper); [S39,s]=generasenal(Nt,M,hiper); [S40,s]=generasenal(Nt,M,hiper); [S41,s]=generasenal(Nt,M,hiper); [S42,s]=generasenal(Nt,M,hiper); [S43,s]=generasenal(Nt,M,hiper); [S44,s]=generasenal(Nt,M,hiper); [S45,s]=generasenal(Nt,M,hiper); [S46,s]=generasenal(Nt,M,hiper); [S47,s]=generasenal(Nt,M,hiper); [S48,s]=generasenal(Nt,M,hiper); [S49,s]=generasenal(Nt,M,hiper); [S50,s]=generasenal(Nt,M,hiper); [S51,s]=generasenal(Nt,M,hiper); [S52,s]=generasenal(Nt,M,hiper); [S53,s]=generasenal(Nt,M,hiper); [S54,s]=generasenal(Nt,M,hiper); [S55,s]=generasenal(Nt,M,hiper); [S56,s]=generasenal(Nt,M,hiper); [S57,s]=generasenal(Nt,M,hiper); [S58,s]=generasenal(Nt,M,hiper); [S59,s]=generasenal(Nt,M,hiper); [S60,s]=generasenal(Nt,M,hiper); [S61,s]=generasenal(Nt,M,hiper); [S62,s]=generasenal(Nt,M,hiper); [S63,s]=generasenal(Nt,M,hiper); [S64,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; c9=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c9)); %hago que el codigo tenga energia unidad c9=c9/longitud; c10=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c10)); %hago que el codigo tenga energia unidad c10=c10/longitud; c11=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c11)); %hago que el codigo tenga energia unidad c11=c11/longitud; c12=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c12)); %hago que el codigo tenga energia unidad c12=c12/longitud; c13=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c13)); %hago que el codigo tenga energia unidad c13=c13/longitud; c14=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c14)); %hago que el codigo tenga energia unidad c14=c14/longitud; c15=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c15)); %hago que el codigo tenga energia unidad c15=c15/longitud; c16=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c16)); %hago que el codigo tenga energia unidad c16=c16/longitud; c17=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c17)); %hago que el codigo tenga energia unidad c17=c17/longitud; c18=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c18)); %hago que el codigo tenga energia unidad c18=c18/longitud; c19=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c19)); %hago que el codigo tenga energia unidad c19=c19/longitud; c20=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(204)); %hago que el codigo tenga energia unidad c20=c20/longitud; c21=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c21)); %hago que el codigo tenga energia unidad c21=c21/longitud; c22=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c22)); %hago que el codigo tenga energia unidad c22=c22/longitud; c23=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c23)); %hago que el codigo tenga energia unidad c23=c23/longitud; c24=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c24)); %hago que el codigo tenga energia unidad c24=c24/longitud; c25=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c25)); %hago que el codigo tenga energia unidad c25=c25/longitud; c26=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c26)); %hago que el codigo tenga energia unidad c26=c26/longitud; c27=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c27)); %hago que el codigo tenga energia unidad c27=c27/longitud; c28=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c28)); %hago que el codigo tenga energia unidad c28=c28/longitud; c29=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c29)); %hago que el codigo tenga energia unidad c29=c29/longitud; c30=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c30)); %hago que el codigo tenga energia unidad c30=c30/longitud; c31=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c31)); %hago que el codigo tenga energia unidad c31=c31/longitud; c32=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c32)); %hago que el codigo tenga energia unidad c32=c32/longitud; c33=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c33)); %hago que el codigo tenga energia unidad c33=c33/longitud; c34=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c34)); %hago que el codigo tenga energia unidad c34=c34/longitud; c35=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c35)); %hago que el codigo tenga energia unidad c35=c35/longitud; c36=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c36)); %hago que el codigo tenga energia unidad c36=c36/longitud; c37=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c37)); %hago que el codigo tenga energia unidad c37=c37/longitud; c38=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c38)); %hago que el codigo tenga energia unidad c38=c38/longitud; c39=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c39)); %hago que el codigo tenga energia unidad c39=c39/longitud; c40=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c40)); %hago que el codigo tenga energia unidad c40=c40/longitud; c41=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c41)); %hago que el codigo tenga energia unidad c41=c41/longitud; c42=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c42)); %hago que el codigo tenga energia unidad c42=c42/longitud; c43=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c43)); %hago que el codigo tenga energia unidad c43=c43/longitud; c44=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c44)); %hago que el codigo tenga energia unidad c44=c44/longitud; c45=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c45)); %hago que el codigo tenga energia unidad c45=c45/longitud; c46=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c46)); %hago que el codigo tenga energia unidad c46=c46/longitud; c47=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c47)); %hago que el codigo tenga energia unidad c47=c47/longitud; c48=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c48)); %hago que el codigo tenga energia unidad c48=c48/longitud; c49=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c49)); %hago que el codigo tenga energia unidad c49=c49/longitud; c50=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c50)); %hago que el codigo tenga energia unidad c50=c50/longitud; c51=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c51)); %hago que el codigo tenga energia unidad c51=c51/longitud; c52=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c52)); %hago que el codigo tenga energia unidad c52=c52/longitud; c53=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c53)); %hago que el codigo tenga energia unidad c53=c53/longitud; c54=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c54)); %hago que el codigo tenga energia unidad c54=c54/longitud; c55=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c55)); %hago que el codigo tenga energia unidad c55=c55/longitud; c56=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c56)); %hago que el codigo tenga energia unidad c56=c56/longitud; c57=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c57)); %hago que el codigo tenga energia unidad c57=c57/longitud; c58=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c58)); %hago que el codigo tenga energia unidad c58=c58/longitud; c59=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c59)); %hago que el codigo tenga energia unidad c59=c59/longitud; c60=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c60)); %hago que el codigo tenga energia unidad c60=c60/longitud; c61=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c61)); %hago que el codigo tenga energia unidad c61=c61/longitud; c62=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c62)); %hago que el codigo tenga energia unidad c62=c62/longitud; c63=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c63)); %hago que el codigo tenga energia unidad c63=c63/longitud; c64=sign(randn(M,1)); % genero el codigo longitud=sqrt(length(c64)); %hago que el codigo tenga energia unidad c64=c64/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 for k=1:Nt SS9(:,k)=c9*S9(1,k); %genero una matriz con los simbolos codificados que voy a ttir end for r=1:Nt SS10(:,r)=c10*S10(1,r); %genero una matriz con los simbolos codificados que voy a ttir end for a=1:Nt SS11(:,a)=c11*S11(1,a); %genero una matriz con los simbolos codificados que voy a ttir end for b=1:Nt SS12(:,b)=c12*S12(1,b); %genero una matriz con los simbolos codificados que voy a ttir end for c=1:Nt SS13(:,c)=c13*S13(1,c); %genero una matriz con los simbolos codificados que voy a ttir end for d=1:Nt SS14(:,d)=c14*S14(1,d); %genero una matriz con los simbolos codificados que voy a ttir end for f=1:Nt SS15(:,f)=c15*S15(1,f); %genero una matriz con los simbolos codificados que voy a ttir end for z=1:Nt SS16(:,z)=c16*S16(1,z); %genero una matriz con los simbolos codificados que voy a ttir end for k=1:Nt SS17(:,k)=c17*S17(1,k); %genero una matriz con los simbolos codificados que voy a ttir end for r=1:Nt SS18(:,r)=c18*S18(1,r); %genero una matriz con los simbolos codificados que voy a ttir end for a=1:Nt SS19(:,a)=c19*S19(1,a); %genero una matriz con los simbolos codificados que voy a ttir end for b=1:Nt SS20(:,b)=c20*S20(1,b); %genero una matriz con los simbolos codificados que voy a ttir end for c=1:Nt SS21(:,c)=c21*S21(1,c); %genero una matriz con los simbolos codificados que voy a ttir end for d=1:Nt SS22(:,d)=c22*S22(1,d); %genero una matriz con los simbolos codificados que voy a ttir end for f=1:Nt SS23(:,f)=c23*S23(1,f); %genero una matriz con los simbolos codificados que voy a ttir end for z=1:Nt SS24(:,z)=c24*S24(1,z); %genero una matriz con los simbolos codificados que voy a ttir end for k=1:Nt SS25(:,k)=c25*S25(1,k); %genero una matriz con los simbolos codificados que voy a ttir end for r=1:Nt SS26(:,r)=c26*S26(1,r); %genero una matriz con los simbolos codificados que voy a ttir end for a=1:Nt SS27(:,a)=c27*S27(1,a); %genero una matriz con los simbolos codificados que voy a ttir end for b=1:Nt SS28(:,b)=c28*S28(1,b); %genero una matriz con los simbolos codificados que voy a ttir end for c=1:Nt SS29(:,c)=c29*S29(1,c); %genero una matriz con los simbolos codificados que voy a ttir end for d=1:Nt SS30(:,d)=c30*S30(1,d); %genero una matriz con los simbolos codificados que voy a ttir end for f=1:Nt SS31(:,f)=c31*S31(1,f); %genero una matriz con los simbolos codificados que voy a ttir end for z=1:Nt SS32(:,z)=c32*S32(1,z); %genero una matriz con los simbolos codificados que voy a ttir end for k=1:Nt SS33(:,k)=c33*S33(1,k); %genero una matriz con los simbolos codificados que voy a ttir end for r=1:Nt SS34(:,r)=c34*S34(1,r); %genero una matriz con los simbolos codificados que voy a ttir end for a=1:Nt SS35(:,a)=c35*S35(1,a); %genero una matriz con los simbolos codificados que voy a ttir end for b=1:Nt SS36(:,b)=c36*S36(1,b); %genero una matriz con los simbolos codificados que voy a ttir end for c=1:Nt SS37(:,c)=c37*S37(1,c); %genero una matriz con los simbolos codificados que voy a ttir end for d=1:Nt SS38(:,d)=c38*S38(1,d); %genero una matriz con los simbolos codificados que voy a ttir end for f=1:Nt SS39(:,f)=c39*S39(1,f); %genero una matriz con los simbolos codificados que voy a ttir end for z=1:Nt SS40(:,z)=c40*S40(1,z); %genero una matriz con los simbolos codificados que voy a ttir end for k=1:Nt SS41(:,k)=c41*S41(1,k); %genero una matriz con los simbolos codificados que voy a ttir end for r=1:Nt SS42(:,r)=c42*S42(1,r); %genero una matriz con los simbolos codificados que voy a ttir end for a=1:Nt SS43(:,a)=c43*S43(1,a); %genero una matriz con los simbolos codificados que voy a ttir end for b=1:Nt SS44(:,b)=c44*S44(1,b); %genero una matriz con los simbolos codificados que voy a ttir end for c=1:Nt SS45(:,c)=c45*S45(1,c); %genero una matriz con los simbolos codificados que voy a ttir end for d=1:Nt SS46(:,d)=c46*S46(1,d); %genero una matriz con los simbolos codificados que voy a ttir end for f=1:Nt SS47(:,f)=c47*S47(1,f); %genero una matriz con los simbolos codificados que voy a ttir end for z=1:Nt SS48(:,z)=c48*S48(1,z); %genero una matriz con los simbolos codificados que voy a ttir end for k=1:Nt SS49(:,k)=c49*S49(1,k); %genero una matriz con los simbolos codificados que voy a ttir end for r=1:Nt SS50(:,r)=c50*S50(1,r); %genero una matriz con los simbolos codificados que voy a ttir end for a=1:Nt SS51(:,a)=c51*S51(1,a); %genero una matriz con los simbolos codificados que voy a ttir end for b=1:Nt SS52(:,b)=c52*S52(1,b); %genero una matriz con los simbolos codificados que voy a ttir end for c=1:Nt SS53(:,c)=c53*S53(1,c); %genero una matriz con los simbolos codificados que voy a ttir end for d=1:Nt SS54(:,d)=c54*S54(1,d); %genero una matriz con los simbolos codificados que voy a ttir end for f=1:Nt SS55(:,f)=c55*S55(1,f); %genero una matriz con los simbolos codificados que voy a ttir end for z=1:Nt SS56(:,z)=c56*S56(1,z); %genero una matriz con los simbolos codificados que voy a ttir end for k=1:Nt SS57(:,k)=c57*S57(1,k); %genero una matriz con los simbolos codificados que voy a ttir end for r=1:Nt SS58(:,r)=c58*S58(1,r); %genero una matriz con los simbolos codificados que voy a ttir end for a=1:Nt SS59(:,a)=c59*S59(1,a); %genero una matriz con los simbolos codificados que voy a ttir end for b=1:Nt SS60(:,b)=c60*S60(1,b); %genero una matriz con los simbolos codificados que voy a ttir end for c=1:Nt SS61(:,c)=c61*S61(1,c); %genero una matriz con los simbolos codificados que voy a ttir end for d=1:Nt SS62(:,d)=c62*S62(1,d); %genero una matriz con los simbolos codificados que voy a ttir end for f=1:Nt SS63(:,f)=c63*S63(1,f); %genero una matriz con los simbolos codificados que voy a ttir end for z=1:Nt SS64(:,z)=c64*S64(1,z); %genero una matriz con los simbolos codificados que voy a ttir end i=1; F=matrizifft(L,M); Fp=matrizifft(L,P); 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+SS9+SS20+SS11+SS12+SS13+SS14+SS15+SS16+SS17+SS18+SS19+SS20+SS21+SS22+SS23+SS24+SS25+SS26+SS27+SS28+SS29+SS30+SS31+SS32+SS33+SS34+SS35+SS36+SS37+SS38+SS39+SS40+SS41+SS42+SS43+SS44+SS45+SS46+SS47+SS48+SS49+SS50+SS51+SS52+SS53+SS54+SS55+SS56+SS57+SS58+SS59+SS60+SS61+SS62+SS63+SS64); %señal que ttito for g=1:60 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); %niOLA=randn(M,Nt); %nqOLA=randn(M,Nt); %NOLA=sigma.*(niOLA+i.*nqOLA); YY=XX+N; %señal que recibo %MMSE A=H*T*F; U=SS1; %R=A*U+N; R=YY; A1=A'; Rrr=(R*R')/size(R,2); Rrrinv=pinv(Rrr); Gmmse=A1*Rrrinv; Uest=Gmmse*R; CC=c1'*Uest; ber=calculaber(S1(1,:),CC); ejexMMSE(i)=snr; ejeyMMSE(i)=ber; i=i+1; end ejex1MMSE=ejex1MMSE+ejexMMSE; ejey1MMSE=ejey1MMSE+ejeyMMSE; i=1; end ejex1MMSE=ejex1MMSE/60; ejey1MMSE=ejey1MMSE/60; ejex2MMSE=ejex2MMSE+ejex1MMSE; ejey2MMSE=ejey2MMSE+ejey1MMSE; end ejex2MMSE=ejex2MMSE/10 ejey2MMSE=ejey2MMSE/10 semilogy(ejex2MMSE,ejey2MMSE,'kp-') %en negro 64 usuarios grid; xlabel('Es/No'); ylabel('Ber'); e-REdING. Biblioteca de la Escuela Superior de Ingenieros de Sevilla.


ESTUDIO DE UN SISTEMA OFDM-CDMA

: Gallardo Moreno, Juan Pablo
: Ingeniería Telecomunicación
Contenido del proyecto: