%%% 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=2; 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') [S1,s]=generasenal(Nt,M,hiper); C1=sign(randn(M/B,1)); % genero el codigo I=eye(B); c1=kron(I,C1); % genero el codigo longitud1=sqrt(length(c1)); %hago que el codigo tenga energia unidad c1=c1/longitud1; [S2,s]=generasenal(Nt,M,hiper); C2=sign(randn(M/B,1)); % genero el codigo I=eye(B); c2=kron(I,C2); % genero el codigo longitud2=sqrt(length(c2)); %hago que el codigo tenga energia unidad c2=c2/longitud2; [S3,s]=generasenal(Nt,M,hiper); C3=sign(randn(M/B,1)); % genero el codigo I=eye(B); c3=kron(I,C3); % genero el codigo longitud3=sqrt(length(c3)); %hago que el codigo tenga energia unidad c3=c3/longitud3; [S4,s]=generasenal(Nt,M,hiper); C4=sign(randn(M/B,1)); % genero el codigo I=eye(B); c4=kron(I,C4); % genero el codigo longitud4=sqrt(length(c4)); %hago que el codigo tenga energia unidad c4=c4/longitud4; [S5,s]=generasenal(Nt,M,hiper); C5=sign(randn(M/B,1)); % genero el codigo I=eye(B); c5=kron(I,C5); % genero el codigo longitud5=sqrt(length(c5)); %hago que el codigo tenga energia unidad c5=c5/longitud5; [S6,s]=generasenal(Nt,M,hiper); C6=sign(randn(M/B,1)); % genero el codigo I=eye(B); c6=kron(I,C6); % genero el codigo longitud6=sqrt(length(c6)); %hago que el codigo tenga energia unidad c6=c6/longitud6; [S7,s]=generasenal(Nt,M,hiper); C7=sign(randn(M/B,1)); % genero el codigo I=eye(B); c7=kron(I,C7); % genero el codigo longitud7=sqrt(length(c7)); %hago que el codigo tenga energia unidad c7=c7/longitud7; [S8,s]=generasenal(Nt,M,hiper); C8=sign(randn(M/B,1)); % genero el codigo I=eye(B); c8=kron(I,C8); % genero el codigo longitud8=sqrt(length(c8)); %hago que el codigo tenga energia unidad c8=c8/longitud8; [S9,s]=generasenal(Nt,M,hiper); C9=sign(randn(M/B,1)); % genero el codigo I=eye(B); c9=kron(I,C9); % genero el codigo longitud9=sqrt(length(c9)); %hago que el codigo tenga energia unidad c9=c9/longitud9; [S10,s]=generasenal(Nt,M,hiper); C10=sign(randn(M/B,1)); % genero el codigo I=eye(B); c10=kron(I,C10); % genero el codigo longitud10=sqrt(length(c10)); %hago que el codigo tenga energia unidad c10=c10/longitud10; [S11,s]=generasenal(Nt,M,hiper); C11=sign(randn(M/B,1)); % genero el codigo I=eye(B); c11=kron(I,C11); % genero el codigo longitud11=sqrt(length(c11)); %hago que el codigo tenga energia unidad c11=c11/longitud11; [S12,s]=generasenal(Nt,M,hiper); C12=sign(randn(M/B,1)); % genero el codigo I=eye(B); c12=kron(I,C12); % genero el codigo longitud12=sqrt(length(c12)); %hago que el codigo tenga energia unidad c12=c12/longitud12; [S13,s]=generasenal(Nt,M,hiper); C13=sign(randn(M/B,1)); % genero el codigo I=eye(B); c13=kron(I,C13); % genero el codigo longitud13=sqrt(length(c13)); %hago que el codigo tenga energia unidad c13=c13/longitud13; [S14,s]=generasenal(Nt,M,hiper); C14=sign(randn(M/B,1)); % genero el codigo I=eye(B); c14=kron(I,C14); % genero el codigo longitud14=sqrt(length(c14)); %hago que el codigo tenga energia unidad c14=c14/longitud14; [S15,s]=generasenal(Nt,M,hiper); C15=sign(randn(M/B,1)); % genero el codigo I=eye(B); c15=kron(I,C15); % genero el codigo longitud15=sqrt(length(c15)); %hago que el codigo tenga energia unidad c15=c15/longitud15; [S16,s]=generasenal(Nt,M,hiper); C16=sign(randn(M/B,1)); % genero el codigo I=eye(B); c16=kron(I,C16); % genero el codigo longitud16=sqrt(length(c16)); %hago que el codigo tenga energia unidad c16=c16/longitud16; [S17,s]=generasenal(Nt,M,hiper); C17=sign(randn(M/B,1)); % genero el codigo I=eye(B); c17=kron(I,C17); % genero el codigo longitud17=sqrt(length(c17)); %hago que el codigo tenga energia unidad c17=c17/longitud17; [S18,s]=generasenal(Nt,M,hiper); C18=sign(randn(M/B,1)); % genero el codigo I=eye(B); c18=kron(I,C18); % genero el codigo longitud18=sqrt(length(c18)); %hago que el codigo tenga energia unidad c18=c18/longitud18; [S19,s]=generasenal(Nt,M,hiper); C19=sign(randn(M/B,1)); % genero el codigo I=eye(B); c19=kron(I,C19); % genero el codigo longitud19=sqrt(length(c19)); %hago que el codigo tenga energia unidad c19=c19/longitud19; [S20,s]=generasenal(Nt,M,hiper); C20=sign(randn(M/B,1)); % genero el codigo I=eye(B); c20=kron(I,C20); % genero el codigo longitud20=sqrt(length(c20)); %hago que el codigo tenga energia unidad c20=c20/longitud20; [S21,s]=generasenal(Nt,M,hiper); C21=sign(randn(M/B,1)); % genero el codigo I=eye(B); c21=kron(I,C21); % genero el codigo longitud21=sqrt(length(c21)); %hago que el codigo tenga energia unidad c21=c21/longitud21; [S22,s]=generasenal(Nt,M,hiper); C22=sign(randn(M/B,1)); % genero el codigo I=eye(B); c22=kron(I,C22); % genero el codigo longitud22=sqrt(length(c22)); %hago que el codigo tenga energia unidad c22=c22/longitud22; [S23,s]=generasenal(Nt,M,hiper); C23=sign(randn(M/B,1)); % genero el codigo I=eye(B); c23=kron(I,C23); % genero el codigo longitud23=sqrt(length(c23)); %hago que el codigo tenga energia unidad c23=c23/longitud23; [S24,s]=generasenal(Nt,M,hiper); C24=sign(randn(M/B,1)); % genero el codigo I=eye(B); c24=kron(I,C24); % genero el codigo longitud24=sqrt(length(c24)); %hago que el codigo tenga energia unidad c24=c24/longitud24; [S25,s]=generasenal(Nt,M,hiper); C25=sign(randn(M/B,1)); % genero el codigo I=eye(B); c25=kron(I,C25); % genero el codigo longitud25=sqrt(length(c25)); %hago que el codigo tenga energia unidad c25=c25/longitud25; [S26,s]=generasenal(Nt,M,hiper); C26=sign(randn(M/B,1)); % genero el codigo I=eye(B); c26=kron(I,C26); % genero el codigo longitud26=sqrt(length(c26)); %hago que el codigo tenga energia unidad c26=c26/longitud26; [S27,s]=generasenal(Nt,M,hiper); C27=sign(randn(M/B,1)); % genero el codigo I=eye(B); c27=kron(I,C27); % genero el codigo longitud27=sqrt(length(c27)); %hago que el codigo tenga energia unidad c27=c27/longitud27; [S28,s]=generasenal(Nt,M,hiper); C28=sign(randn(M/B,1)); % genero el codigo I=eye(B); c28=kron(I,C28); % genero el codigo longitud28=sqrt(length(c28)); %hago que el codigo tenga energia unidad c28=c28/longitud28; [S29,s]=generasenal(Nt,M,hiper); C29=sign(randn(M/B,1)); % genero el codigo I=eye(B); c29=kron(I,C29); % genero el codigo longitud29=sqrt(length(c29)); %hago que el codigo tenga energia unidad c29=c29/longitud29; [S30,s]=generasenal(Nt,M,hiper); C30=sign(randn(M/B,1)); % genero el codigo I=eye(B); c30=kron(I,C30); % genero el codigo longitud30=sqrt(length(c30)); %hago que el codigo tenga energia unidad c30=c30/longitud30; [S31,s]=generasenal(Nt,M,hiper); C31=sign(randn(M/B,1)); % genero el codigo I=eye(B); c31=kron(I,C31); % genero el codigo longitud31=sqrt(length(c31)); %hago que el codigo tenga energia unidad c31=c31/longitud31; [S32,s]=generasenal(Nt,M,hiper); C32=sign(randn(M/B,1)); % genero el codigo I=eye(B); c32=kron(I,C32); % genero el codigo longitud32=sqrt(length(c32)); %hago que el codigo tenga energia unidad c32=c32/longitud32; [S33,s]=generasenal(Nt,M,hiper); C33=sign(randn(M/B,1)); % genero el codigo I=eye(B); c33=kron(I,C33); % genero el codigo longitud33=sqrt(length(c33)); %hago que el codigo tenga energia unidad c33=c33/longitud33; [S34,s]=generasenal(Nt,M,hiper); C34=sign(randn(M/B,1)); % genero el codigo I=eye(B); c34=kron(I,C34); % genero el codigo longitud34=sqrt(length(c34)); %hago que el codigo tenga energia unidad c34=c34/longitud34; [S35,s]=generasenal(Nt,M,hiper); C35=sign(randn(M/B,1)); % genero el codigo I=eye(B); c35=kron(I,C35); % genero el codigo longitud35=sqrt(length(c35)); %hago que el codigo tenga energia unidad c35=c35/longitud35; [S36,s]=generasenal(Nt,M,hiper); C36=sign(randn(M/B,1)); % genero el codigo I=eye(B); c36=kron(I,C36); % genero el codigo longitud36=sqrt(length(c36)); %hago que el codigo tenga energia unidad c36=c36/longitud36; [S37,s]=generasenal(Nt,M,hiper); C37=sign(randn(M/B,1)); % genero el codigo I=eye(B); c37=kron(I,C37); % genero el codigo longitud37=sqrt(length(c37)); %hago que el codigo tenga energia unidad c37=c37/longitud37; [S38,s]=generasenal(Nt,M,hiper); C38=sign(randn(M/B,1)); % genero el codigo I=eye(B); c38=kron(I,C38); % genero el codigo longitud38=sqrt(length(c38)); %hago que el codigo tenga energia unidad c38=c38/longitud38; [S39,s]=generasenal(Nt,M,hiper); C39=sign(randn(M/B,1)); % genero el codigo I=eye(B); c39=kron(I,C39); % genero el codigo longitud39=sqrt(length(c39)); %hago que el codigo tenga energia unidad c39=c39/longitud39; [S40,s]=generasenal(Nt,M,hiper); C40=sign(randn(M/B,1)); % genero el codigo I=eye(B); c40=kron(I,C40); % genero el codigo longitud40=sqrt(length(c40)); %hago que el codigo tenga energia unidad c40=c40/longitud40; [S41,s]=generasenal(Nt,M,hiper); C41=sign(randn(M/B,1)); % genero el codigo I=eye(B); c41=kron(I,C41); % genero el codigo longitud41=sqrt(length(c41)); %hago que el codigo tenga energia unidad c41=c41/longitud41; [S42,s]=generasenal(Nt,M,hiper); C42=sign(randn(M/B,1)); % genero el codigo I=eye(B); c42=kron(I,C42); % genero el codigo longitud42=sqrt(length(c42)); %hago que el codigo tenga energia unidad c42=c42/longitud42; [S43,s]=generasenal(Nt,M,hiper); C43=sign(randn(M/B,1)); % genero el codigo I=eye(B); c43=kron(I,C43); % genero el codigo longitud43=sqrt(length(c43)); %hago que el codigo tenga energia unidad c43=c43/longitud43; [S44,s]=generasenal(Nt,M,hiper); C44=sign(randn(M/B,1)); % genero el codigo I=eye(B); c44=kron(I,C44); % genero el codigo longitud44=sqrt(length(c44)); %hago que el codigo tenga energia unidad c44=c44/longitud44; [S45,s]=generasenal(Nt,M,hiper); C45=sign(randn(M/B,1)); % genero el codigo I=eye(B); c45=kron(I,C45); % genero el codigo longitud45=sqrt(length(c45)); %hago que el codigo tenga energia unidad c45=c45/longitud45; [S46,s]=generasenal(Nt,M,hiper); C46=sign(randn(M/B,1)); % genero el codigo I=eye(B); c46=kron(I,C46); % genero el codigo longitud46=sqrt(length(c46)); %hago que el codigo tenga energia unidad c46=c46/longitud46; [S47,s]=generasenal(Nt,M,hiper); C47=sign(randn(M/B,1)); % genero el codigo I=eye(B); c47=kron(I,C47); % genero el codigo longitud47=sqrt(length(c47)); %hago que el codigo tenga energia unidad c47=c47/longitud47; [S48,s]=generasenal(Nt,M,hiper); C48=sign(randn(M/B,1)); % genero el codigo I=eye(B); c48=kron(I,C48); % genero el codigo longitud48=sqrt(length(c48)); %hago que el codigo tenga energia unidad c48=c48/longitud48; [S49,s]=generasenal(Nt,M,hiper); C49=sign(randn(M/B,1)); % genero el codigo I=eye(B); c49=kron(I,C49); % genero el codigo longitud49=sqrt(length(c49)); %hago que el codigo tenga energia unidad c49=c49/longitud49; [S50,s]=generasenal(Nt,M,hiper); C50=sign(randn(M/B,1)); % genero el codigo I=eye(B); c50=kron(I,C50); % genero el codigo longitud50=sqrt(length(c50)); %hago que el codigo tenga energia unidad c50=c50/longitud50; [S51,s]=generasenal(Nt,M,hiper); C51=sign(randn(M/B,1)); % genero el codigo I=eye(B); c51=kron(I,C51); % genero el codigo longitud51=sqrt(length(c51)); %hago que el codigo tenga energia unidad c51=c51/longitud51; [S52,s]=generasenal(Nt,M,hiper); C52=sign(randn(M/B,1)); % genero el codigo I=eye(B); c52=kron(I,C52); % genero el codigo longitud52=sqrt(length(c52)); %hago que el codigo tenga energia unidad c52=c52/longitud52; [S53,s]=generasenal(Nt,M,hiper); C53=sign(randn(M/B,1)); % genero el codigo I=eye(B); c53=kron(I,C53); % genero el codigo longitud53=sqrt(length(c53)); %hago que el codigo tenga energia unidad c53=c53/longitud53; [S54,s]=generasenal(Nt,M,hiper); C54=sign(randn(M/B,1)); % genero el codigo I=eye(B); c54=kron(I,C54); % genero el codigo longitud54=sqrt(length(c54)); %hago que el codigo tenga energia unidad c54=c54/longitud54; [S55,s]=generasenal(Nt,M,hiper); C55=sign(randn(M/B,1)); % genero el codigo I=eye(B); c55=kron(I,C55); % genero el codigo longitud55=sqrt(length(c55)); %hago que el codigo tenga energia unidad c55=c55/longitud55; [S56,s]=generasenal(Nt,M,hiper); C56=sign(randn(M/B,1)); % genero el codigo I=eye(B); c56=kron(I,C56); % genero el codigo longitud56=sqrt(length(c56)); %hago que el codigo tenga energia unidad c56=c56/longitud56; [S57,s]=generasenal(Nt,M,hiper); C57=sign(randn(M/B,1)); % genero el codigo I=eye(B); c57=kron(I,C57); % genero el codigo longitud57=sqrt(length(c57)); %hago que el codigo tenga energia unidad c57=c57/longitud57; [S58,s]=generasenal(Nt,M,hiper); C58=sign(randn(M/B,1)); % genero el codigo I=eye(B); c58=kron(I,C58); % genero el codigo longitud58=sqrt(length(c58)); %hago que el codigo tenga energia unidad c58=c58/longitud58; [S59,s]=generasenal(Nt,M,hiper); C59=sign(randn(M/B,1)); % genero el codigo I=eye(B); c59=kron(I,C59); % genero el codigo longitud59=sqrt(length(c59)); %hago que el codigo tenga energia unidad c59=c59/longitud59; [S60,s]=generasenal(Nt,M,hiper); C60=sign(randn(M/B,1)); % genero el codigo I=eye(B); c60=kron(I,C60); % genero el codigo longitud60=sqrt(length(c60)); %hago que el codigo tenga energia unidad c60=c60/longitud60; [S61,s]=generasenal(Nt,M,hiper); C61=sign(randn(M/B,1)); % genero el codigo I=eye(B); c61=kron(I,C61); % genero el codigo longitud61=sqrt(length(c61)); %hago que el codigo tenga energia unidad c61=c61/longitud61; [S62,s]=generasenal(Nt,M,hiper); C62=sign(randn(M/B,1)); % genero el codigo I=eye(B); c62=kron(I,C62); % genero el codigo longitud62=sqrt(length(c62)); %hago que el codigo tenga energia unidad c62=c62/longitud62; [S63,s]=generasenal(Nt,M,hiper); C63=sign(randn(M/B,1)); % genero el codigo I=eye(B); c63=kron(I,C63); % genero el codigo longitud63=sqrt(length(c63)); %hago que el codigo tenga energia unidad c63=c63/longitud63; [S64,s]=generasenal(Nt,M,hiper); C64=sign(randn(M/B,1)); % genero el codigo I=eye(B); c64=kron(I,C64); % genero el codigo longitud64=sqrt(length(c64)); %hago que el codigo tenga energia unidad c64=c64/longitud64; 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 for a=1:Nt SS3(:,a)=c3*S3(1:B,a); %genero una matriz con los simbolos codificados que voy a ttir end for b=1:Nt SS4(:,b)=c4*S4(1:B,b); %genero una matriz con los simbolos codificados que voy a ttir end for c=1:Nt SS5(:,c)=c5*S5(1:B,c); %genero una matriz con los simbolos codificados que voy a ttir end for d=1:Nt SS6(:,d)=c6*S6(1:B,d); %genero una matriz con los simbolos codificados que voy a ttir end for f=1:Nt SS7(:,f)=c7*S7(1:B,f); %genero una matriz con los simbolos codificados que voy a ttir end for z=1:Nt SS8(:,z)=c8*S8(1:B,z); %genero una matriz con los simbolos codificados que voy a ttir end for k=1:Nt SS9(:,k)=c9*S9(1:B,k); %genero una matriz con los simbolos codificados que voy a ttir end for r=1:Nt SS10(:,r)=c10*S10(1:B,r); %genero una matriz con los simbolos codificados que voy a ttir end for a=1:Nt SS11(:,a)=c11*S11(1:B,a); %genero una matriz con los simbolos codificados que voy a ttir end for b=1:Nt SS12(:,b)=c12*S12(1:B,b); %genero una matriz con los simbolos codificados que voy a ttir end for c=1:Nt SS13(:,c)=c13*S13(1:B,c); %genero una matriz con los simbolos codificados que voy a ttir end for d=1:Nt SS14(:,d)=c14*S14(1:B,d); %genero una matriz con los simbolos codificados que voy a ttir end for f=1:Nt SS15(:,f)=c15*S15(1:B,f); %genero una matriz con los simbolos codificados que voy a ttir end for z=1:Nt SS16(:,z)=c16*S16(1:B,z); %genero una matriz con los simbolos codificados que voy a ttir end for k=1:Nt SS17(:,k)=c17*S17(1:B,k); %genero una matriz con los simbolos codificados que voy a ttir end for r=1:Nt SS18(:,r)=c18*S18(1:B,r); %genero una matriz con los simbolos codificados que voy a ttir end for a=1:Nt SS19(:,a)=c19*S19(1:B,a); %genero una matriz con los simbolos codificados que voy a ttir end for b=1:Nt SS20(:,b)=c20*S20(1:B,b); %genero una matriz con los simbolos codificados que voy a ttir end for c=1:Nt SS21(:,c)=c21*S21(1:B,c); %genero una matriz con los simbolos codificados que voy a ttir end for d=1:Nt SS22(:,d)=c22*S22(1:B,d); %genero una matriz con los simbolos codificados que voy a ttir end for f=1:Nt SS23(:,f)=c23*S23(1:B,f); %genero una matriz con los simbolos codificados que voy a ttir end for z=1:Nt SS24(:,z)=c24*S24(1:B,z); %genero una matriz con los simbolos codificados que voy a ttir end for k=1:Nt SS25(:,k)=c25*S25(1:B,k); %genero una matriz con los simbolos codificados que voy a ttir end for r=1:Nt SS26(:,r)=c26*S26(1:B,r); %genero una matriz con los simbolos codificados que voy a ttir end for a=1:Nt SS27(:,a)=c27*S27(1:B,a); %genero una matriz con los simbolos codificados que voy a ttir end for b=1:Nt SS28(:,b)=c28*S28(1:B,b); %genero una matriz con los simbolos codificados que voy a ttir end for c=1:Nt SS29(:,c)=c29*S29(1:B,c); %genero una matriz con los simbolos codificados que voy a ttir end for d=1:Nt SS30(:,d)=c30*S30(1:B,d); %genero una matriz con los simbolos codificados que voy a ttir end for f=1:Nt SS31(:,f)=c31*S31(1:B,f); %genero una matriz con los simbolos codificados que voy a ttir end for z=1:Nt SS32(:,z)=c32*S32(1:B,z); %genero una matriz con los simbolos codificados que voy a ttir end for k=1:Nt SS33(:,k)=c33*S33(1:B,k); %genero una matriz con los simbolos codificados que voy a ttir end for r=1:Nt SS34(:,r)=c34*S34(1:B,r); %genero una matriz con los simbolos codificados que voy a ttir end for a=1:Nt SS35(:,a)=c35*S35(1:B,a); %genero una matriz con los simbolos codificados que voy a ttir end for b=1:Nt SS36(:,b)=c36*S36(1:B,b); %genero una matriz con los simbolos codificados que voy a ttir end for c=1:Nt SS37(:,c)=c37*S37(1:B,c); %genero una matriz con los simbolos codificados que voy a ttir end for d=1:Nt SS38(:,d)=c38*S38(1:B,d); %genero una matriz con los simbolos codificados que voy a ttir end for f=1:Nt SS39(:,f)=c39*S39(1:B,f); %genero una matriz con los simbolos codificados que voy a ttir end for z=1:Nt SS40(:,z)=c40*S40(1:B,z); %genero una matriz con los simbolos codificados que voy a ttir end for k=1:Nt SS41(:,k)=c41*S41(1:B,k); %genero una matriz con los simbolos codificados que voy a ttir end for r=1:Nt SS42(:,r)=c42*S42(1:B,r); %genero una matriz con los simbolos codificados que voy a ttir end for a=1:Nt SS43(:,a)=c43*S43(1:B,a); %genero una matriz con los simbolos codificados que voy a ttir end for b=1:Nt SS44(:,b)=c44*S44(1:B,b); %genero una matriz con los simbolos codificados que voy a ttir end for c=1:Nt SS45(:,c)=c45*S45(1:B,c); %genero una matriz con los simbolos codificados que voy a ttir end for d=1:Nt SS46(:,d)=c46*S46(1:B,d); %genero una matriz con los simbolos codificados que voy a ttir end for f=1:Nt SS47(:,f)=c47*S47(1:B,f); %genero una matriz con los simbolos codificados que voy a ttir end for z=1:Nt SS48(:,z)=c48*S48(1:B,z); %genero una matriz con los simbolos codificados que voy a ttir end for k=1:Nt SS49(:,k)=c49*S49(1:B,k); %genero una matriz con los simbolos codificados que voy a ttir end for r=1:Nt SS50(:,r)=c50*S50(1:B,r); %genero una matriz con los simbolos codificados que voy a ttir end for a=1:Nt SS51(:,a)=c51*S51(1:B,a); %genero una matriz con los simbolos codificados que voy a ttir end for b=1:Nt SS52(:,b)=c52*S52(1:B,b); %genero una matriz con los simbolos codificados que voy a ttir end for c=1:Nt SS53(:,c)=c53*S53(1:B,c); %genero una matriz con los simbolos codificados que voy a ttir end for d=1:Nt SS54(:,d)=c54*S54(1:B,d); %genero una matriz con los simbolos codificados que voy a ttir end for f=1:Nt SS55(:,f)=c55*S55(1:B,f); %genero una matriz con los simbolos codificados que voy a ttir end for z=1:Nt SS56(:,z)=c56*S56(1:B,z); %genero una matriz con los simbolos codificados que voy a ttir end for k=1:Nt SS57(:,k)=c57*S57(1:B,k); %genero una matriz con los simbolos codificados que voy a ttir end for r=1:Nt SS58(:,r)=c58*S58(1:B,r); %genero una matriz con los simbolos codificados que voy a ttir end for a=1:Nt SS59(:,a)=c59*S59(1:B,a); %genero una matriz con los simbolos codificados que voy a ttir end for b=1:Nt SS60(:,b)=c60*S60(1:B,b); %genero una matriz con los simbolos codificados que voy a ttir end for c=1:Nt SS61(:,c)=c61*S61(1:B,c); %genero una matriz con los simbolos codificados que voy a ttir end for d=1:Nt SS62(:,d)=c62*S62(1:B,d); %genero una matriz con los simbolos codificados que voy a ttir end for f=1:Nt SS63(:,f)=c63*S63(1:B,f); %genero una matriz con los simbolos codificados que voy a ttir end for z=1:Nt SS64(:,z)=c64*S64(1:B,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); Ttido=S1(1:B,:); 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+SS10+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 %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: