%%% 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=8; hiper=0; %ahora empezamos Es=1; K=length(w); ejex1ZF=zeros(1,9); ejey1ZF=zeros(1,9); ejex2ZF=zeros(1,9); ejey2ZF=zeros(1,9); ejex1FAST=zeros(1,9); ejey1FAST=zeros(1,9); ejex2FAST=zeros(1,9); ejey2FAST=zeros(1,9); ejex1OLA=zeros(1,9); ejey1OLA=zeros(1,9); ejex2OLA=zeros(1,9); ejey2OLA=zeros(1,9); 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') Hada=Hadamard(M/B); [S1,s]=generasenal(Nt,M,hiper); C1=Hada(:,1); I=eye(B); c1=kron(I,C1); longitud=sqrt(length(c1)); %hago que el codigo tenga energia unidad c1=c1/longitud; [S2,s]=generasenal(Nt,M,hiper); C2=Hada(:,2); I=eye(B); c2=kron(I,C2); longitud=sqrt(length(c2)); %hago que el codigo tenga energia unidad c2=c2/longitud; for k=1:Nt SS1(:,k)=c1*S1(1:B,k); %genero una matriz con los simbolos codificados que voy a ttir end for r=1:Nt SS2(:,r)=c2*S2(1:B,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); Ttido=S1(1:B,:); 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 %ZF ZZ=pinv(H*T*F)*YY; CC=c1'*ZZ; %señal demodulada ber=calculaber(Ttido,CC); ejexZF(i)=snr; ejeyZF(i)=ber; %FAST DELTA=Fp'*H*Fp; V=Fp'*T*F; U=SS1; s=V*U; Y=Fp'*YY; %Y=DELTA*s+N; Rss=(s*s')/size(s,2); DELTA1=DELTA'; Ryy=(Y*Y')/size(Y,2); Ryyinv=pinv(Ryy); Gmmse=Rss*DELTA1*Ryyinv; Sest=Gmmse*Y; Uest=pinv(V)*Sest; CC=c1'*Uest; ber=calculaber(Ttido,CC); ejexFAST(i)=snr; ejeyFAST(i)=ber; %OLA Ho=H*T; A=Ho(M+1:P,:); B=Ho(1:L,:); C=Ho(L+1:M,:); aux=A+B; H1=[aux;C]; %h1 es H con gorrito del articulo DELTA=F'*H1*F; U=SS1; %Y=DELTA*U+N; Y=YY(1:M,:)+[YY(M+1:P,:);zeros(M-L,Nt)]; Y=F'*Y; DELTA1=DELTA'; %comienza el calculo de Gmmse Ryy=(Y*Y')/size(Y,2); diagonal=diag(Ryy); diagonal1=1./diagonal; Ryyinv=diag(diagonal1); Gmmse=DELTA1*Ryyinv; Uest=Gmmse*Y; CC=c1'*Uest; ber=calculaber(Ttido,CC); ejexOLA(i)=snr; ejeyOLA(i)=ber; %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(Ttido,CC); ejexMMSE(i)=snr; ejeyMMSE(i)=ber; i=i+1; end ejex1ZF=ejex1ZF+ejexZF; ejey1ZF=ejey1ZF+ejeyZF; ejex1FAST=ejex1FAST+ejexFAST; ejey1FAST=ejey1FAST+ejeyFAST; ejex1OLA=ejex1OLA+ejexOLA; ejey1OLA=ejey1OLA+ejeyOLA; ejex1MMSE=ejex1MMSE+ejexMMSE; ejey1MMSE=ejey1MMSE+ejeyMMSE; i=1; end ejex1ZF=ejex1ZF/60; ejey1ZF=ejey1ZF/60; ejex2ZF=ejex2ZF+ejex1ZF; ejey2ZF=ejey2ZF+ejey1ZF; ejex1FAST=ejex1FAST/60; ejey1FAST=ejey1FAST/60; ejex2FAST=ejex2FAST+ejex1FAST; ejey2FAST=ejey2FAST+ejey1FAST; ejex1OLA=ejex1OLA/60; ejey1OLA=ejey1OLA/60; ejex2OLA=ejex2OLA+ejex1OLA; ejey2OLA=ejey2OLA+ejey1OLA; ejex1MMSE=ejex1MMSE/60; ejey1MMSE=ejey1MMSE/60; ejex2MMSE=ejex2MMSE+ejex1MMSE; ejey2MMSE=ejey2MMSE+ejey1MMSE; end ejex2ZF=ejex2ZF/10 ejey2ZF=ejey2ZF/10 semilogy(ejex2ZF,ejey2ZF,'ro-') grid; xlabel('Es/No'); ylabel('Ber'); hold on; ejex2FAST=ejex2FAST/10 ejey2FAST=ejey2FAST/10 semilogy(ejex2FAST,ejey2FAST,'gh-') grid; xlabel('Es/No'); ylabel('Ber'); hold on; ejex2OLA=ejex2OLA/10 ejey2OLA=ejey2OLA/10 semilogy(ejex2OLA,ejey2OLA,'cp-') grid; xlabel('Es/No'); ylabel('Ber'); hold on; ejex2MMSE=ejex2MMSE/10 ejey2MMSE=ejey2MMSE/10 semilogy(ejex2MMSE,ejey2MMSE,'bd-') 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: