%%% Este seria el sistema para OFDM-CDMA usando ZP en el caso mas simple %%% es decir ttiendo un solo simbolo a la vez y usando codigos aleatorios %parametros 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') [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,'bd-') %en azul aleatorio grid; xlabel('Es/No'); ylabel('Ber'); hold on Hada=Hadamard(M); c1=Hada(:,1); % genero el codigo longitud1=sqrt(length(c1)); %hago que el codigo tenga energia unidad c1=c1/longitud1; c2=Hada(:,2); % genero el codigo longitud2=sqrt(length(c2)); %hago que el codigo tenga energia unidad c2=c2/longitud2; c3=Hada(:,3); % genero el codigo longitud3=sqrt(length(c3)); %hago que el codigo tenga energia unidad c3=c3/longitud3; c4=Hada(:,4); % genero el codigo longitud4=sqrt(length(c4)); %hago que el codigo tenga energia unidad c4=c4/longitud4; c5=Hada(:,5); % genero el codigo longitud5=sqrt(length(c5)); %hago que el codigo tenga energia unidad c5=c5/longitud5; c6=Hada(:,6); % genero el codigo longitud6=sqrt(length(c6)); %hago que el codigo tenga energia unidad c6=c6/longitud6; c7=Hada(:,7); % genero el codigo longitud7=sqrt(length(c7)); %hago que el codigo tenga energia unidad c7=c7/longitud7; 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 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,'r+-') %en rojo Hadamard 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: