16
Anexo 1 71 Caracterización Experimental de la BER en un Sistema de Comunicaciones W-CDMA ANEXO 1.- Ficheros Matlab

6.-Anexo 1 Ficheros Matlab

Embed Size (px)

Citation preview

Page 1: 6.-Anexo 1 Ficheros Matlab

Anexo 1 71

Caracterización Experimental de la BER en un Sistema de Comunicaciones W-CDMA

ANEXO 1.- Ficheros Matlab

Page 2: 6.-Anexo 1 Ficheros Matlab

Anexo 1 72

Caracterización Experimental de la BER en un Sistema de Comunicaciones W-CDMA

Transmisor.m : genera las muestras de una señal CDMA.

numsimb = 4; Fs = 8; R = 0.22; Delay = 24; % codigos de Walsh de 256 chips H2 = [1 1; 1 -1]; H4 = [H2 H2 ; H2 -H2]; H8 = [H4 H4 ; H4 -H4]; H16 = [H8 H8 ; H8 -H8]; H32 = [H16 H16 ; H16 -H16]; H64 = [H32 H32 ; H32 -H32]; H128 = [H64 H64 ; H64 -H64]; H256 = [H128 H128 ; H128 -H128]; % símbolos son complejos b = randsrc(1,numsimb)+i*randsrc(1,numsimb); % expansión x=kron(b,H256(12,:)); I = [1/sqrt(2)]*real(x); Q = [1/sqrt(2)]*imag(x); qpsk = I+j*Q; figure(1) plot(qpsk,'*'); axis([-1 1 -1 1]); axis('square'); ylabel('Constelacion en Transmision'); % Zero-padding I_val=zeros(1,Fs*length(I)); p=1; for k1=1:Fs:(length(I_val)-Fs+1) I_val(k1)=I(p); p=p+1; end Q_val=zeros(1,Fs*length(Q)); p=1; for k1=1:Fs:(length(Q_val)-Fs+1) Q_val(k1)=Q(p); p=p+1; end aux=root_coseno(Delay,R); %Raiz de Coseno alzado p=1; for k3=1:128/Fs:(length(aux)-128/Fs) h(p)=aux(k3); p=p+1; end If = sqrt(1/6.373)*conv(I_val,h); Qf = sqrt(1/6.373)*conv(Q_val,h); secuencia_qpsk=If+j*Qf;

Page 3: 6.-Anexo 1 Ficheros Matlab

Anexo 1 73

Caracterización Experimental de la BER en un Sistema de Comunicaciones W-CDMA

root_coseno.m : función que implementa un filtro raíz coseno alzado

function y=root_coseno(periodos,roll_off) % Entrada: % periodos: número de Tsimb que contendrá el coseno alzado % Devuelve la respuesta impulsiva de un filtro % raiz de coseno alzado, con los siguientes valores % % Tasa de símbolos = 1.92Msimb/s Rb=1.92*10^6; Beta=roll_off*Rb; Tb=1/Rb; x=-periodos*Tb/2:Tb/128:periodos*Tb/2; a=(8*Beta)*cos((Rb+2*Beta)*pi*x); for k=1:1:length(x) if(x(k)==0) b(k)=1; else b(k)=sin((Rb-2*Beta)*pi*x(k))/x(k); end end c=pi/sqrt(Rb); d=(((8*Beta*x).^2)-1); % Respuesta impulsiva h=(-(a+b)./(c*d))/(16*Beta*sqrt(Rb)/pi); h(((length(h)-1)/2)+1)=1; y=h;

long_colas.m: determina la longitud de las colas introducidas en la señal tras

pasar por el filtro raíz coseno alzado en recepción

clear all muestras = 8; % 8 muestras fchip = 3.84e6; Fs = muestras*fchip; % Frecuencia de muestreo. alfa = 0.22; % Factor de roll-off Long_cos=24; % Duración, en Tsimb, del coseno alzado roll_off=0.22; % Factor de Roll_off del filtro a implementar delay = Long_cos; x = [1/sqrt(2)]*sign(randn(1,64)); % el factor 1/sqrt(2) es para que Eb sea 1/2 xcomp = sign(x); % Zero-padding x_val=zeros(1,muestras*length(x)); i=1; for k1=1:muestras:(length(x_val)-muestras+1) x_val(k1)=x(i); i=i+1;

Page 4: 6.-Anexo 1 Ficheros Matlab

Anexo 1 74

Caracterización Experimental de la BER en un Sistema de Comunicaciones W-CDMA

end aux=root_coseno(Long_cos,roll_off); % Raiz de Coseno alzado i=1; for k3=1:128/muestras:(length(aux)-128/muestras) h(i)=aux(k3); i=i+1; end xf = sqrt(1/6.373)*conv(x_val,h); xr = sqrt(1/6.373)*conv(xf,h); Long_colas = length(xr)-[length(x)*muestras]+2

Posicion_muestreo.m: determina la posición óptima de muestreo

clear all muestras = 8; % 8 muestras fchip = 3.84e6; Fs = muestras*fchip; % Frecuencia de muestreo. alfa = 0.22; % Factor de roll-off Long_cos=24; % Duración, en Tsimb, del coseno alzado roll_off=0.22; % Factor de Roll_off del filtro a implementar delay = Long_cos; x = [1/sqrt(2)]*sign(randn(1,64)); % el factor 1/sqrt(2) es para que Eb sea 1/2 xcomp = sign(x); % Zero-padding x_val=zeros(1,muestras*length(x)); i=1; for k1=1:muestras:(length(x_val)-muestras+1) x_val(k1)=x(i); i=i+1; end aux=root_coseno(Long_cos,roll_off); % Raiz de Coseno alzado i=1; for k3=1:128/muestras:(length(aux)-128/muestras) h(i)=aux(k3); i=i+1; end xf = sqrt(1/6.373)*conv(x_val,h); xr = sqrt(1/6.373)*conv(xf,h); xr= transpose(xr); xrt = xr(delay .* muestras + 1:end-(delay .* muestras),:); Error=zeros(1,5); for aux = 1:5 aux1=aux; for i = 1:length(x) dt(i) = xrt(aux1);

Page 5: 6.-Anexo 1 Ficheros Matlab

Anexo 1 75

Caracterización Experimental de la BER en un Sistema de Comunicaciones W-CDMA

aux1 = aux1 + muestras; end dt; dc = sign(dt); error = xcomp-dc; error2= x-dt; Error(aux)=sum(abs(error2))/length(error2); end valor=min(Error); Posicion_optima=0; for a=1:5 if Error(a) == valor Posicion_optima=a end end

Canalconrruido.m: realiza una representación gráfica BER frente a Eb/N0

implementando el Sistema completo de Comunicación

clear all numsimb = 5000; muestras = 8; % 8 muestras fchip = 3.84e6; Fs = muestras*fchip; % Frecuencia de muestreo. Long_cos=24; % Duración, en Tsimb, del coseno alzado roll_off=0.22; % Factor de Roll_off del filtro a implementar delay = Long_cos; llave=1;

%TRANSMISOR I = [1/sqrt(2)]*sign(randn(1,numsimb)); Q = [1/sqrt(2)]*sign(randn(1,numsimb)); qpsk = I+j*Q; figure(1) plot(qpsk,'*'); axis([-1 1 -1 1]); axis('square'); ylabel('Constelacion en Transmision'); pause; % Zero-padding I_val=zeros(1,muestras*length(I)); i=1; for k1=1:muestras:(length(I_val)-muestras+1) I_val(k1)=I(i); i=i+1; end Q_val=zeros(1,muestras*length(Q)); i=1; for k1=1:muestras:(length(Q_val)-muestras+1) Q_val(k1)=Q(i); i=i+1;

Page 6: 6.-Anexo 1 Ficheros Matlab

Anexo 1 76

Caracterización Experimental de la BER en un Sistema de Comunicaciones W-CDMA

end aux=root_coseno(Long_cos,roll_off); % Raiz de Coseno alzado i=1; for k3=1:128/muestras:(length(aux)-128/muestras) h(i)=aux(k3); i=i+1; end If = sqrt(1/6.373)*conv(I_val,h); Qf = sqrt(1/6.373)*conv(Q_val,h); Icomp=sqrt(2)*I; Qcomp=sqrt(2)*Q; for N=1:2:2*length(qpsk) % secuencia de muestras de información muestr(N)=Icomp((N+1)/2); muestr(N+1)=Qcomp((N+1)/2); end;

%CANAL RUIDOSO AWGN Y RECEPTOR K1 = 1; EbNo = [2 3 4 5 6 7 8 9 10]; BERQPSK = zeros(1,9); for EbN0=2:5 No = 0.5*10^(-0.1*EbN0); desvtip = sqrt(No/2); ruidof = desvtip*randn(1,length(If)); ruidoq = desvtip*randn(1,length(Qf)); aux1 = 0; % variable auxiliar para el calculo de la BER for N = 1:length(If) % "ruidos" que se añaden a las componentes en % fase y cuadratura sectxf(N) = If(N)+ruidof(N); sectxq(N) = Qf(N)+ruidoq(N); end; Ir = sqrt(1/6.373)*conv(sectxf,h); Ir= transpose(Ir); Qr = sqrt(1/6.373)*conv(sectxq,h); Qr= transpose(Qr); Irt = Ir(delay .* muestras + 1:end-(delay .* muestras),:); Qrt = Qr(delay .* muestras + 1:end-(delay .* muestras),:); aux = 1; for i = 1:length(qpsk) Idt(i) = Irt(aux); Qdt(i) = Qrt(aux); aux = aux + muestras; end

Page 7: 6.-Anexo 1 Ficheros Matlab

Anexo 1 77

Caracterización Experimental de la BER en un Sistema de Comunicaciones W-CDMA

Idc = sign(Idt); Qdc = sign(Qdt); for N = 1:2:2*length(qpsk) % secuencia de bits recibidos secbitr(N) = Idc((N+1)/2); secbitr(N+1) = Qdc((N+1)/2); end; for N = 1:2*length(qpsk) % Calculo de la BER if secbitr(N)~=muestr(N) aux1 = aux1+1; end end; BERQPSK(K1) = aux1/(2*length(qpsk)); K1=K1+1; end; vectoraux = zeros(1,5); for v=1:150 I = [1/sqrt(2)]*sign(randn(1,numsimb)); Q = [1/sqrt(2)]*sign(randn(1,numsimb)); % Zero-padding I_val=zeros(1,muestras*length(I)); i=1; for k1=1:muestras:(length(I_val)-muestras+1) I_val(k1)=I(i); i=i+1; end Q_val=zeros(1,muestras*length(Q)); i=1; for k1=1:muestras:(length(Q_val)-muestras+1) Q_val(k1)=Q(i); i=i+1; end aux=root_coseno(Long_cos,roll_off); %Raiz de Coseno alzado i=1; for k3=1:128/muestras:(length(aux)-128/muestras) h(i)=aux(k3); i=i+1; end If = sqrt(1/6.373)*conv(I_val,h); Qf = sqrt(1/6.373)*conv(Q_val,h); Icomp=sqrt(2)*I; Qcomp=sqrt(2)*Q; for N=1:2:2*length(qpsk) %secuencia de muestras de información muestr(N)=Icomp((N+1)/2); muestr(N+1)=Qcomp((N+1)/2); end;

Page 8: 6.-Anexo 1 Ficheros Matlab

Anexo 1 78

Caracterización Experimental de la BER en un Sistema de Comunicaciones W-CDMA

K1=1; for EbN0=6:9 No = 0.5*10^(-0.1*EbN0); desvtip = sqrt(No/2); ruidof = desvtip*randn(1,length(If)); ruidoq = desvtip*randn(1,length(Qf)); aux1 = 0; % variable auxiliar para el calculo de la BER for N = 1:length(If) % "ruidos" que se añaden a las componentes en % fase y cuadratura sectxf(N) = If(N)+ruidof(N); sectxq(N) = Qf(N)+ruidoq(N); end; Ir = sqrt(1/6.373)*conv(sectxf,h); Ir= transpose(Ir); Qr = sqrt(1/6.373)*conv(sectxq,h); Qr= transpose(Qr); Irt = Ir(delay .* muestras + 1:end-(delay .* muestras),:); Qrt = Qr(delay .* muestras + 1:end-(delay .* muestras),:); aux = 1; for i = 1:length(qpsk) Idt(i) = Irt(aux); Qdt(i) = Qrt(aux); aux = aux + muestras; end if EbN0 == 9 & llave ==1 llave=0; qpskr=Idt+j*Qdt; figure(2) plot(qpskr,'*'); axis([-1.5 1.5 -1.5 1.5]); axis('square'); ylabel('Constelacion en Recepcion Eb/No=9'); pause; end Idc = sign(Idt); Qdc = sign(Qdt); for N = 1:2:2*length(qpsk) % secuencia de bits recibidos secbitr(N) = Idc((N+1)/2); secbitr(N+1) = Qdc((N+1)/2); end; for N = 1:2*length(qpsk) % Calculo de la BER if secbitr(N)~=muestr(N) aux1 = aux1+1; end end;

Page 9: 6.-Anexo 1 Ficheros Matlab

Anexo 1 79

Caracterización Experimental de la BER en un Sistema de Comunicaciones W-CDMA

vectoraux(K1) = vectoraux(K1)+aux1; K1=K1+1; end; end for i=1:5 BERQPSK(i+4)=vectoraux(i)/[150*(2*length(qpsk))]; end figure(3) semilogy(EbNo,BERQPSK,'b'); curvateorica; hold on; semilogy(EbNo,Pbit,'r'); axis([0 15 1e-6 1]); xlabel('EbNo(dB)'); ylabel('BERQPSK practica (azul),BERQPSK teorica (rojo)'); hold off;

curvateorica.m: calcula la curva teórica de BER frente Eb/N0 para una

modulación QPSK

% Calculo de la curva teorica EbNo = [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]; Pbit = zeros(1,16); K1 = 1; for EbN0=0:15 aux = 10^(0.1*EbN0); Pbit(K1)=0.5*erfc(sqrt(aux)); K1=K1+1; end

Calculo_Ganancia.m: calcula la ganancia del amplificador para una

determinada potencia de entrada

clear all numsimb = 1000; muestras = 8; % 8 muestras fchip = 3.84e6; Fs = muestras*fchip; % Frecuencia de muestreo Long_cos=24; % Duración, en Tsimb, del coseno alzado roll_off=0.22; % Factor de Roll_off del filtro a implementar delay = Long_cos-1;

%TRANSMISOR

Page 10: 6.-Anexo 1 Ficheros Matlab

Anexo 1 80

Caracterización Experimental de la BER en un Sistema de Comunicaciones W-CDMA

I = sign(randn(1,numsimb)); Q = sign(randn(1,numsimb)); qpsk = I+j*Q; % Zero-padding I_val=zeros(1,muestras*length(I)); i=1; for k1=1:muestras:(length(I_val)-muestras+1) I_val(k1)=I(i); i=i+1; end Q_val=zeros(1,muestras*length(Q)); i=1; for k1=1:muestras:(length(Q_val)-muestras+1) Q_val(k1)=Q(i); i=i+1; end aux=root_coseno(Long_cos,roll_off); % Raiz de Coseno alzado i=1; for k3=1:128/muestras:(length(aux)-128/muestras) h(i)=aux(k3); i=i+1; end If = conv(I_val,h); Qf = conv(Q_val,h); p = [0.0682 1.8575 -0.2418 0.9550 0.0834 1.6254]; Pi = -10; % Potencia de entrada expresada en dBm opcion=1; cc1=0; cc2=0; Nsymb=numsimb; Ns=muestras; [compfase, compcuad] = salida_amplificador(p, Pi, opcion, cc1, cc2, If, Qf, Nsymb, Ns); outamp = compfase+j*compcuad; % Salida del amplificador E_salida=[sum(real(outamp).^2)+sum(imag(outamp).^2)]/length(outamp); E_entrada=[sum(real(vs_t).^2)+sum(imag(vs_t).^2)]/length(vs_t); G=sqrt(E_salida/E_entrada)

Calcula_Eb.m: calcula para una secuencia con una determinada Pi cual es la

energía de bit de la secuencia transmitida al canal

clear all numsimb = 1000; muestras = 8; % 8 muestras fchip = 3.84e6; Fs = muestras*fchip; % Frecuencia de muestreo

Page 11: 6.-Anexo 1 Ficheros Matlab

Anexo 1 81

Caracterización Experimental de la BER en un Sistema de Comunicaciones W-CDMA

Long_cos=24; % Duración, en Tsimb, del coseno alzado roll_off=0.22; % Factor de Roll_off del filtro a implementar delay = Long_cos-1;

%TRANSMISOR I = sign(randn(1,numsimb)); Q = sign(randn(1,numsimb)); qpsk = I+j*Q; % Zero-padding I_val=zeros(1,muestras*length(I)); i=1; for k1=1:muestras:(length(I_val)-muestras+1) I_val(k1)=I(i); i=i+1; end Q_val=zeros(1,muestras*length(Q)); i=1; for k1=1:muestras:(length(Q_val)-muestras+1) Q_val(k1)=Q(i); i=i+1; end aux=root_coseno(Long_cos,roll_off); % Raiz de Coseno alzado i=1; for k3=1:128/muestras:(length(aux)-128/muestras) h(i)=aux(k3); i=i+1; end If = conv(I_val,h); Qf = conv(Q_val,h); p = [0.0682 1.8575 -0.2418 0.9550 0.0834 1.6254]; Pi = -10; % Potencia de entrada expresada en dBm opcion=1; cc1=0; cc2=0; Nsymb=numsimb; Ns=muestras; [compfase, compcuad] = salida_amplificador(p, Pi, opcion, cc1, cc2, If, Qf, Nsymb, Ns); Eb1=sum(compfase.^2)*8/length(compfase); Eb2=sum(compcuad.^2)*8/length(compcuad); Eb=(Eb1+Eb2)/2

Back_off.m: función que realiza una representación gráfica de BER para

diferentes valores IBO

Page 12: 6.-Anexo 1 Ficheros Matlab

Anexo 1 82

Caracterización Experimental de la BER en un Sistema de Comunicaciones W-CDMA

function back_off clear all numsimb = 1000; muestras = 8; % 8 muestras fchip = 3.84e6; Fs = muestras*fchip; % Frecuencia de muestreo Long_cos=24; % Duración, en Tsimb, del coseno alzado roll_off=0.22; % Factor de Roll_off del filtro a implementar delay = Long_cos-1;

%TRANSMISOR I = sign(randn(1,numsimb)); Q = sign(randn(1,numsimb)); qpsk = I+j*Q; % Zero-padding I_val=zeros(1,muestras*length(I)); i=1; for k1=1:muestras:(length(I_val)-muestras+1) I_val(k1)=I(i); i=i+1; end Q_val=zeros(1,muestras*length(Q)); i=1; for k1=1:muestras:(length(Q_val)-muestras+1) Q_val(k1)=Q(i); i=i+1; end aux=root_coseno(Long_cos,roll_off); % Raiz de Coseno alzado i=1; for k3=1:128/muestras:(length(aux)-128/muestras) h(i)=aux(k3); i=i+1; end If = conv(I_val,h); Qf = conv(Q_val,h); for N=1:2:2*length(qpsk) % secuencia de muestras de información muestr(N)=I((N+1)/2); muestr(N+1)=Q((N+1)/2); end; backoff=-13:12; BERQPSK = zeros(1,26); K1 = 1; for Potentrada = 10:-1:-15 p = [0.0682 1.8575 -0.2418 0.9550 0.0834 1.6254]; Pi = Potentrada; % Potencia de entrada expresada en dBm opcion=1;

Page 13: 6.-Anexo 1 Ficheros Matlab

Anexo 1 83

Caracterización Experimental de la BER en un Sistema de Comunicaciones W-CDMA

cc1=0; cc2=0; Nsymb=numsimb; Ns=muestras; [compfase, compcuad] = salida_amplificador(p, Pi, opcion, cc1, cc2, If, Qf, Nsymb, Ns);

%CANAL RUIDOSO AWGN Y RECEPTOR vectoraux = 0; for v=1:15 EbN0 = 4.419275; No = 8.43*10^(-0.1*EbN0); desvtip = sqrt(No/2); ruidof = desvtip*randn(1,length(compfase)); ruidoq = desvtip*randn(1,length(compcuad)); aux1 = 0; % variable auxiliar para el calculo de la BER for N = 1:length(compfase) % "ruidos" que se añaden a las componentes en % fase y cuadratura sectxf(N) = compfase(N)+ruidof(N); sectxq(N) = compcuad(N)+ruidoq(N); end; Ir = conv(sectxf,h); Ir= transpose(Ir); Qr = conv(sectxq,h); Qr= transpose(Qr); Irt = Ir(delay .* muestras + 1:end-(delay .* muestras),:); Qrt = Qr(delay .* muestras + 1:end-(delay .* muestras),:); aux = 9; for i = 1:length(qpsk) Idt(i) = Irt(aux); Qdt(i) = Qrt(aux); aux = aux + muestras; end Idc = sign(Idt); Qdc = sign(Qdt); for N = 1:2:2*length(qpsk) % secuencia de bits recibidos secbitr(N) = Idc((N+1)/2); secbitr(N+1) = Qdc((N+1)/2); end; for N = 1:2*length(qpsk) % Calculo de la BER if secbitr(N)~=muestr(N) aux1 = aux1+1; end

Page 14: 6.-Anexo 1 Ficheros Matlab

Anexo 1 84

Caracterización Experimental de la BER en un Sistema de Comunicaciones W-CDMA

end; vectoraux = vectoraux+aux1; end; BERQPSK(K1)=vectoraux/[15*(2*length(qpsk))]; K1=K1+1; end semilogy(backoff,BERQPSK,'k'); xlabel('Input Back off(dB)'); ylabel('BER');

salida_amplificador: función que devuelve las componentes en fase y

cuadratura de la señal a la salida del amplificador function [compfase, compcuad] = salida_amplificador(p, Pi, opcion, cc1, cc2, If, Qf, Nsymb, Ns) % salida_amplificador(p, Pi, opcion, cc1, cc2) % % p: Vector de parametros del modelo de Chalmers para el transistor % Pi: Potencia de la señal de entrada medida en dBm % opcion: filtro en raiz de coseno alzado (opcion = 1) y en coseno % alzado (opcion ~= 1) % cc1: Valor en dB de correccion de la grafica de la densidad espectral % de la señal de entrada % cc2: Valor en dB de correccion de la grafica de la densidad espectral % de la señal de salida % If: componente en fase a la entrada del amplificador % Qf: componente en cuadratura a la entrada del amplificador % Nsymb: numero de simbolos % Ns: numero de muestras VGS = -0.57; VDS = 2; Ro = 50; Z0 = 50; Constante = -[cos(pi/3)+i*sin(pi/3)]/abs([cos(pi/3)+i*sin(pi/3)]); %el Amplificador es no lineal % Valores de los parametros del modelo Lg=0.54e-9; % nH Rg=5.91; % Ohm Cgs=1.18e-12; % pF Ri=0; % Ohm Cgd=0.05e-12; % pF Rgd=0; % Ohm Cds=0.35e-12; % pF Rs=3.18; % Ohm Ls=0.09e-9; % nH Rd=1.9; % Ohm Ld=0.31e-9; % nH

Page 15: 6.-Anexo 1 Ficheros Matlab

Anexo 1 85

Caracterización Experimental de la BER en un Sistema de Comunicaciones W-CDMA

[g10, g20, g30, g01, g02, g03, g11, g12, g21] = chalmers(VGS, VDS, p); % Potencia de entrada en Watios (argumento de entrada en dBm) PiW = 10 .^(Pi/10) * 1e-3; % Parametros de la señal modulada: % -QPSK, Rb = 3.84 Mbits/s, Ns muestras/simbolo % -Conformacion del pulso: filtro en raiz de coseno alzado (opcion = 1) % y en coseno alzado (opcion ~= 1) % -Envolvente compleja de la señal modulada (+/- 1): k = sum(abs(If+j*Qf).^2)/length(If); Vs = sqrt(8*Ro*PiW/k); vs_t = Vs * (If+j*Qf); % Envolvente compleja de la señal modulada % Frecuencia central de las señales: 2 GHz fo = 2e9; wc = 2 * pi * fo; dT = inv(Ns * 3.84e6); % Periodo de muestreo de la envolvente compleja % Frecuencia de corte en Ghz para el escalado de la PSD Fs = 3.84e6*Ns*1e-9; Npuntos = 1024; [pvs, f] = psd(vs_t, Npuntos, Fs); frec = 2 + f - Fs/2; pvs = 10*log10(abs(fftshift(pvs)));

% Primer orden % Y1 = matriz_admit_3n(wc,p); dY1 = matriz_admit_deriv_3n(wc,p); % Condiciones iniciales s_t = [0, vs_t]; x1_t = zeros(3,1); Yg1 = inv(Ro + Rg + j * wc * Lg); aux = inv(j * dY1 - dT * Y1); for k = 2:length(s_t) x1_t(:,k) = aux * (j * dY1 * x1_t(:,k-1) - dT * Yg1 * [s_t(k); 0; 0]); end v1_t = x1_t(1,2:length(s_t)); % Envolventes complejas u1_t = x1_t(2,2:length(s_t)); w1_t = x1_t(3,2:length(s_t)); % Envolvente compleja de la tensión de primer orden a la salida o1_t = (u1_t + w1_t) * Ro * inv(Ro + Rd + j * wc * Ld);

% Segundo orden % i20_t = 0.5 * g20 * abs(v1_t).^2 + 0.5 * g02 * abs(u1_t).^2 + ... 0.5 * g11 * real(v1_t.* conj(u1_t)); Y0 = matriz_admit_3n(0,p); dY0 = matriz_admit_deriv_3n(0,p);

Page 16: 6.-Anexo 1 Ficheros Matlab

Anexo 1 86

Caracterización Experimental de la BER en un Sistema de Comunicaciones W-CDMA

x20_t = zeros(3,1); i20_t = [0, i20_t]; aux = inv(j * dY0 - dT * Y0); for k = 2:length(s_t) x20_t(:,k) = aux * (j * dY0 * x20_t(:,k-1) - dT * [0; -i20_t(k); -i20_t(k)]); end v20_t = x20_t(1,2:length(s_t)); % Envolventes complejas u20_t = x20_t(2,2:length(s_t)); w20_t = x20_t(3,2:length(s_t)); o20_t = (u20_t + w20_t) * Ro * inv(Ro + Rd); i22_t = 0.5 * g20 * v1_t.^2 + 0.5 * g02 * u1_t.^2 + 0.5 * g11 * v1_t.* u1_t; Y2 = matriz_admit_3n(2*wc,p); dY2 = matriz_admit_deriv_3n(2*wc,p); x22_t = zeros(3,1); i22_t = [0, i22_t]; aux = inv(j * dY2 - dT * Y2); for k = 2:length(s_t) x22_t(:,k) = aux * (j * dY2 * x22_t(:,k-1) - dT * [0; -i22_t(k); -i22_t(k)]); end v22_t = x22_t(1,2:length(s_t)); % Envolventes complejas u22_t = x22_t(2,2:length(s_t)); w22_t = x22_t(3,2:length(s_t)); o22_t = (u22_t + w22_t) * Ro * inv(Ro + Rd + j * 2 * wc * Ld);

% Tercer orden % i31_t = 0.5 * g30 * ((abs(v1_t).^2) .* v1_t) + 0.25 * g30 * ((v1_t.^2) .* conj(v1_t)) + ... 0.5 * g03 * ((abs(u1_t).^2) .* u1_t) + 0.25 * g03 * ((u1_t.^2) .* conj(u1_t)) + ... 0.5 * g21 * ((abs(v1_t).^2) .* u1_t) + 0.25 * g21 * ((v1_t.^2) .* conj(u1_t)) + ... 0.5 * g12 * ((abs(u1_t).^2) .* v1_t) + 0.25 * g12 * ((u1_t.^2) .* conj(v1_t)) + ... g20 * (v22_t .* conj(v1_t)) + 2 * g20 * (v20_t .* v1_t) + ... g02 * (u22_t .* conj(u1_t)) + 2 * g02 * (u20_t .* u1_t) + ... 0.5 * g11 * (conj(v1_t) .* u22_t) + g11 * (u20_t .* v1_t) + ... 0.5 * g11 * (conj(u1_t) .* v22_t) + g11 * (v20_t .* u1_t); x31_t = zeros(3,1); i31_t = [0, i31_t]; aux = inv(j * dY1 - dT * Y1); for k = 2:length(s_t) x31_t(:,k) = aux * (j * dY1 * x31_t(:,k-1) - dT * [0; -i31_t(k); -i31_t(k)]); end v31_t = x31_t(1,2:length(s_t)); % Envolventes complejas u31_t = x31_t(2,2:length(s_t)); w31_t = x31_t(3,2:length(s_t)); o31_t = (u31_t + w31_t) * Ro * inv(Ro + Rd + j * wc * Ld); outamp = constante*[o31_t + o1_t]; % Salida del amplificador compfase = real(outamp); compcuad = imag(outamp);