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); Hada=Hadamard(M); c=Hada(:,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); Hada=Hadamard(M); c1=Hada(:,1); % genero el codigo longitud1=sqrt(length(c1)); %hago que el codigo tenga energia unidad c1=c1/longitud1; [S2,s]=generasenal(Nt,M,hiper); c2=Hada(:,2); % genero el codigo longitud2=sqrt(length(c2)); %hago que el codigo tenga energia unidad c2=c2/longitud2; 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); Hada=Hadamard(M); c1=Hada(:,1); % genero el codigo longitud1=sqrt(length(c1)); %hago que el codigo tenga energia unidad c1=c1/longitud1; [S2,s]=generasenal(Nt,M,hiper); c2=Hada(:,2); % genero el codigo longitud2=sqrt(length(c2)); %hago que el codigo tenga energia unidad c2=c2/longitud2; [S3,s]=generasenal(Nt,M,hiper); c3=Hada(:,3); % genero el codigo longitud3=sqrt(length(c3)); %hago que el codigo tenga energia unidad c3=c3/longitud3; [S4,s]=generasenal(Nt,M,hiper); c4=Hada(:,4); % genero el codigo longitud4=sqrt(length(c4)); %hago que el codigo tenga energia unidad c4=c4/longitud4; [S5,s]=generasenal(Nt,M,hiper); c5=Hada(:,5); % genero el codigo longitud5=sqrt(length(c5)); %hago que el codigo tenga energia unidad c5=c5/longitud5; [S6,s]=generasenal(Nt,M,hiper); c6=Hada(:,6); % genero el codigo longitud6=sqrt(length(c6)); %hago que el codigo tenga energia unidad c6=c6/longitud6; [S7,s]=generasenal(Nt,M,hiper); c7=Hada(:,7); % genero el codigo longitud7=sqrt(length(c7)); %hago que el codigo tenga energia unidad c7=c7/longitud7; [S8,s]=generasenal(Nt,M,hiper); c8=Hada(:,8); % genero el codigo longitud8=sqrt(length(c8)); %hago que el codigo tenga energia unidad c8=c8/longitud8; 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); Hada=Hadamard(M); [S1,s]=generasenal(Nt,M,hiper); c1=Hada(:,1); % genero el codigo longitud1=sqrt(length(c1)); %hago que el codigo tenga energia unidad c1=c1/longitud1; [S2,s]=generasenal(Nt,M,hiper); c2=Hada(:,2); % genero el codigo longitud2=sqrt(length(c2)); %hago que el codigo tenga energia unidad c2=c2/longitud2; [S3,s]=generasenal(Nt,M,hiper); c3=Hada(:,3); % genero el codigo longitud3=sqrt(length(c3)); %hago que el codigo tenga energia unidad c3=c3/longitud3; [S4,s]=generasenal(Nt,M,hiper); c4=Hada(:,4); % genero el codigo longitud4=sqrt(length(c4)); %hago que el codigo tenga energia unidad c4=c4/longitud4; [S5,s]=generasenal(Nt,M,hiper); c5=Hada(:,5); % genero el codigo longitud5=sqrt(length(c5)); %hago que el codigo tenga energia unidad c5=c5/longitud5; [S6,s]=generasenal(Nt,M,hiper); c6=Hada(:,6); % genero el codigo longitud6=sqrt(length(c6)); %hago que el codigo tenga energia unidad c6=c6/longitud6; [S7,s]=generasenal(Nt,M,hiper); c7=Hada(:,7); % genero el codigo longitud7=sqrt(length(c7)); %hago que el codigo tenga energia unidad c7=c7/longitud7; [S8,s]=generasenal(Nt,M,hiper); c8=Hada(:,8); % genero el codigo longitud8=sqrt(length(c8)); %hago que el codigo tenga energia unidad c8=c8/longitud8; [S9,s]=generasenal(Nt,M,hiper); c9=Hada(:,9); % genero el codigo longitud9=sqrt(length(c9)); %hago que el codigo tenga energia unidad c9=c9/longitud9; [S10,s]=generasenal(Nt,M,hiper); c10=Hada(:,10); % genero el codigo longitud10=sqrt(length(c10)); %hago que el codigo tenga energia unidad c10=c10/longitud10; [S11,s]=generasenal(Nt,M,hiper); c11=Hada(:,11); % genero el codigo longitud11=sqrt(length(c11)); %hago que el codigo tenga energia unidad c11=c11/longitud11; [S12,s]=generasenal(Nt,M,hiper); c12=Hada(:,12); % genero el codigo longitud12=sqrt(length(c12)); %hago que el codigo tenga energia unidad c12=c12/longitud12; [S13,s]=generasenal(Nt,M,hiper); c13=Hada(:,13); % genero el codigo longitud13=sqrt(length(c13)); %hago que el codigo tenga energia unidad c13=c13/longitud13; [S14,s]=generasenal(Nt,M,hiper); c14=Hada(:,14); % genero el codigo longitud14=sqrt(length(c14)); %hago que el codigo tenga energia unidad c14=c14/longitud14; [S15,s]=generasenal(Nt,M,hiper); c15=Hada(:,15); % genero el codigo longitud15=sqrt(length(c15)); %hago que el codigo tenga energia unidad c15=c15/longitud15; [S16,s]=generasenal(Nt,M,hiper); c16=Hada(:,16); % genero el codigo longitud16=sqrt(length(c16)); %hago que el codigo tenga energia unidad c16=c16/longitud16; [S17,s]=generasenal(Nt,M,hiper); c17=Hada(:,17); % genero el codigo longitud17=sqrt(length(c17)); %hago que el codigo tenga energia unidad c17=c17/longitud17; [S18,s]=generasenal(Nt,M,hiper); c18=Hada(:,18); % genero el codigo longitud18=sqrt(length(c18)); %hago que el codigo tenga energia unidad c18=c18/longitud18; [S19,s]=generasenal(Nt,M,hiper); c19=Hada(:,19); % genero el codigo longitud19=sqrt(length(c19)); %hago que el codigo tenga energia unidad c19=c19/longitud19; [S20,s]=generasenal(Nt,M,hiper); c20=Hada(:,20); % genero el codigo longitud20=sqrt(length(c20)); %hago que el codigo tenga energia unidad c20=c20/longitud20; [S21,s]=generasenal(Nt,M,hiper); c21=Hada(:,21); % genero el codigo longitud21=sqrt(length(c21)); %hago que el codigo tenga energia unidad c21=c21/longitud21; [S22,s]=generasenal(Nt,M,hiper); c22=Hada(:,22); % genero el codigo longitud22=sqrt(length(c22)); %hago que el codigo tenga energia unidad c22=c22/longitud22; [S23,s]=generasenal(Nt,M,hiper); c23=Hada(:,23); % genero el codigo longitud23=sqrt(length(c23)); %hago que el codigo tenga energia unidad c23=c23/longitud23; [S24,s]=generasenal(Nt,M,hiper); c24=Hada(:,24); % genero el codigo longitud24=sqrt(length(c24)); %hago que el codigo tenga energia unidad c24=c24/longitud24; [S25,s]=generasenal(Nt,M,hiper); c25=Hada(:,25); % genero el codigo longitud25=sqrt(length(c25)); %hago que el codigo tenga energia unidad c25=c25/longitud25; [S26,s]=generasenal(Nt,M,hiper); c26=Hada(:,26); % genero el codigo longitud26=sqrt(length(c26)); %hago que el codigo tenga energia unidad c26=c26/longitud26; [S27,s]=generasenal(Nt,M,hiper); c27=Hada(:,27); % genero el codigo longitud27=sqrt(length(c27)); %hago que el codigo tenga energia unidad c27=c27/longitud27; [S28,s]=generasenal(Nt,M,hiper); c28=Hada(:,28); % genero el codigo longitud28=sqrt(length(c28)); %hago que el codigo tenga energia unidad c28=c28/longitud28; [S29,s]=generasenal(Nt,M,hiper); c29=Hada(:,29); % genero el codigo longitud29=sqrt(length(c29)); %hago que el codigo tenga energia unidad c29=c29/longitud29; [S30,s]=generasenal(Nt,M,hiper); c30=Hada(:,30); % genero el codigo longitud30=sqrt(length(c30)); %hago que el codigo tenga energia unidad c30=c30/longitud30; [S31,s]=generasenal(Nt,M,hiper); c31=Hada(:,31); % genero el codigo longitud31=sqrt(length(c31)); %hago que el codigo tenga energia unidad c31=c31/longitud31; [S32,s]=generasenal(Nt,M,hiper); c32=Hada(:,32); % genero el codigo longitud32=sqrt(length(c32)); %hago que el codigo tenga energia unidad c32=c32/longitud32; [S33,s]=generasenal(Nt,M,hiper); c33=Hada(:,33); % genero el codigo longitud33=sqrt(length(c33)); %hago que el codigo tenga energia unidad c33=c33/longitud33; [S34,s]=generasenal(Nt,M,hiper); c34=Hada(:,34); % genero el codigo longitud34=sqrt(length(c34)); %hago que el codigo tenga energia unidad c34=c34/longitud34; [S35,s]=generasenal(Nt,M,hiper); c35=Hada(:,35); % genero el codigo longitud35=sqrt(length(c35)); %hago que el codigo tenga energia unidad c35=c35/longitud35; [S36,s]=generasenal(Nt,M,hiper); c36=Hada(:,36); % genero el codigo longitud36=sqrt(length(c36)); %hago que el codigo tenga energia unidad c36=c36/longitud36; [S37,s]=generasenal(Nt,M,hiper); c37=Hada(:,37); % genero el codigo longitud37=sqrt(length(c37)); %hago que el codigo tenga energia unidad c37=c37/longitud37; [S38,s]=generasenal(Nt,M,hiper); c38=Hada(:,38); % genero el codigo longitud38=sqrt(length(c38)); %hago que el codigo tenga energia unidad c38=c38/longitud38; [S39,s]=generasenal(Nt,M,hiper); c39=Hada(:,39); % genero el codigo longitud39=sqrt(length(c39)); %hago que el codigo tenga energia unidad c39=c39/longitud39; [S40,s]=generasenal(Nt,M,hiper); c40=Hada(:,40); % genero el codigo longitud40=sqrt(length(c40)); %hago que el codigo tenga energia unidad c40=c40/longitud40; [S41,s]=generasenal(Nt,M,hiper); c41=Hada(:,41); % genero el codigo longitud41=sqrt(length(c41)); %hago que el codigo tenga energia unidad c41=c41/longitud41; [S42,s]=generasenal(Nt,M,hiper); c42=Hada(:,42); % genero el codigo longitud42=sqrt(length(c42)); %hago que el codigo tenga energia unidad c42=c42/longitud42; [S43,s]=generasenal(Nt,M,hiper); c43=Hada(:,43); % genero el codigo longitud43=sqrt(length(c43)); %hago que el codigo tenga energia unidad c43=c43/longitud43; [S44,s]=generasenal(Nt,M,hiper); c44=Hada(:,44); % genero el codigo longitud44=sqrt(length(c44)); %hago que el codigo tenga energia unidad c44=c44/longitud44; [S45,s]=generasenal(Nt,M,hiper); c45=Hada(:,45); % genero el codigo longitud45=sqrt(length(c45)); %hago que el codigo tenga energia unidad c45=c45/longitud45; [S46,s]=generasenal(Nt,M,hiper); c46=Hada(:,46); % genero el codigo longitud46=sqrt(length(c46)); %hago que el codigo tenga energia unidad c46=c46/longitud46; [S47,s]=generasenal(Nt,M,hiper); c47=Hada(:,47); % genero el codigo longitud47=sqrt(length(c47)); %hago que el codigo tenga energia unidad c47=c47/longitud47; [S48,s]=generasenal(Nt,M,hiper); c48=Hada(:,48); % genero el codigo longitud48=sqrt(length(c48)); %hago que el codigo tenga energia unidad c48=c48/longitud48; [S49,s]=generasenal(Nt,M,hiper); c49=Hada(:,49); % genero el codigo longitud49=sqrt(length(c49)); %hago que el codigo tenga energia unidad c49=c49/longitud49; [S50,s]=generasenal(Nt,M,hiper); c50=Hada(:,50); % genero el codigo longitud50=sqrt(length(c50)); %hago que el codigo tenga energia unidad c50=c50/longitud50; [S51,s]=generasenal(Nt,M,hiper); c51=Hada(:,51); % genero el codigo longitud51=sqrt(length(c51)); %hago que el codigo tenga energia unidad c51=c51/longitud51; [S52,s]=generasenal(Nt,M,hiper); c52=Hada(:,52); % genero el codigo longitud52=sqrt(length(c52)); %hago que el codigo tenga energia unidad c52=c52/longitud52; [S53,s]=generasenal(Nt,M,hiper); c53=Hada(:,53); % genero el codigo longitud53=sqrt(length(c53)); %hago que el codigo tenga energia unidad c53=c53/longitud53; [S54,s]=generasenal(Nt,M,hiper); c54=Hada(:,54); % genero el codigo longitud54=sqrt(length(c54)); %hago que el codigo tenga energia unidad c54=c54/longitud54; [S55,s]=generasenal(Nt,M,hiper); c55=Hada(:,55); % genero el codigo longitud55=sqrt(length(c55)); %hago que el codigo tenga energia unidad c55=c55/longitud55; [S56,s]=generasenal(Nt,M,hiper); c56=Hada(:,56); % genero el codigo longitud56=sqrt(length(c56)); %hago que el codigo tenga energia unidad c56=c56/longitud56; [S57,s]=generasenal(Nt,M,hiper); c57=Hada(:,57); % genero el codigo longitud57=sqrt(length(c57)); %hago que el codigo tenga energia unidad c57=c57/longitud57; [S58,s]=generasenal(Nt,M,hiper); c58=Hada(:,58); % genero el codigo longitud58=sqrt(length(c58)); %hago que el codigo tenga energia unidad c58=c58/longitud58; [S59,s]=generasenal(Nt,M,hiper); c59=Hada(:,59); % genero el codigo longitud59=sqrt(length(c59)); %hago que el codigo tenga energia unidad c59=c59/longitud59; [S60,s]=generasenal(Nt,M,hiper); c60=Hada(:,60); % genero el codigo longitud60=sqrt(length(c60)); %hago que el codigo tenga energia unidad c60=c60/longitud60; [S61,s]=generasenal(Nt,M,hiper); c61=Hada(:,61); % genero el codigo longitud61=sqrt(length(c61)); %hago que el codigo tenga energia unidad c61=c61/longitud61; [S62,s]=generasenal(Nt,M,hiper); c62=Hada(:,62); % genero el codigo longitud62=sqrt(length(c62)); %hago que el codigo tenga energia unidad c62=c62/longitud62; [S63,s]=generasenal(Nt,M,hiper); c63=Hada(:,63); % genero el codigo longitud63=sqrt(length(c63)); %hago que el codigo tenga energia unidad c63=c63/longitud63; [S64,s]=generasenal(Nt,M,hiper); c64=Hada(:,64); % genero el codigo longitud64=sqrt(length(c64)); %hago que el codigo tenga energia unidad c=c64/longitud64; 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: