Aplicando MATLAB en Telecomunicaciones
Aplicando MATLAB en Telecomunicaciones
Aplicando MATLAB en Telecomunicaciones
FACULTAD DE INGENIERÍA
FUNDAMENTOS DE
TELECOMUNICACIONES UTILIZANDO
EL MATLAB
Diciembre 2011
LIMA - PERÚ
FUNDAMENTOS DE
TELECOMUNICACIONES
UTILIZANDO EL MATLAB
Por
Facultad de Ingeniería
Universidad Ricardo Palma
PRESENTACIÓN
CONTENIDO
PRESENTACIÓN 05
CONTENIDO 07
3. Serie de Fourier 28
4. Transformada de Fourier 37
7. Demodulación AM 68
9. Demodulación FM 86
BIBLIOGRAFÍA 96
Donde:
T: periodo de dicha señal.
n: número entero.
Fs > 2 * Fmax
Donde:
Fs: es la frecuencia de muestreo elegida.
Fmax: es la máxima frecuencia de la señal a digitalizar.
>> hold on
>> for i = 7: -1 : -7
plot( n , i*ones( 1, 50 ) , 'r ' )
end
>> hold off
>> subplot(122)
>> x = round( x );
>> [ max(x) min(x) ]
>> stem ( n , x , 'Linewidth' , 3 ) % ver figura 1.6
>> hold on
>> for i = 7: -1 : -7
plot( n , i*ones( 1, 50 ) , 'r ' )
end
>> hold off
>> axis( [ 0 50 -8 8 ] )
>> grid
(a) (b)
Donde:
A y B son constantes complejas cualesquiera.
Ts es el periodo de muestreo de la señal discreta.
X(t) y(t)
x[nTs] y[nTs]
R1 = 1 K R2 = 2 K
v1 (t)
+ +
i1 (t) i2 (t)
vi (t) vo (t)
C1 = 1 mF C2 = 5 mF
- -
Vo ( s) 1 / C2
Vi ( s) R1 R2 C1 s ( R2 R1 R1C1 / C 2 ) s 1 / C 2
2
>> C1 = 1*0.001;
>> C2 = 5*0.001;
>> R1 = 1000;
>> R2 = 2000;
>> FT = tf( [1/C2] , [ R1*R2*C1 R2+R1+R1*C1/C2 1/C2 ] )
>> bode( FT ) , grid % ver figura 2.3
>> wo = 2*pi*100;
>> [ Num1 , Den1 ] = lp2lp( NumN , DenN , wo );
>> pzmap( Num1 , Den1 )
>> bode( Num1 , Den1 ) , grid % ver figura 2.4
>> wo
wo =
628.3185
>> wo = 2*pi*50;
>> [ z, p , k ] = buttap( 9 );
>> NumN = K* poly( Z );
>> DenN = poly( P );
>> [ Num2, Den2 ] = lp2hp( NumN , DenN , wo );
>> pzmap( Num2 , Den2 )
>> bode( Num2 , Den2 ) , grid % ver figura 2.5
Vo ( s ) R3 R2 s
Vi ( s ) R
R3 s 3
R1C
Vo ( s ) s
K
Vi ( s ) s
1
o
W
R3 R2 R1C
K
R3
1
Wo
R1C
C = 0.5 mF
+
-
+ R2 = 20 +
vi(t) vo(t)
R1 = 100
- R3 = 800
-
>> R1 = 100;
>> R2 = 20;
>> R3 = 800;
>> C= 5/10000;
>> K = (R2 + R3)*(R1*C)/ R3;
>> Wo = 1/(R1*C) % frecuencia de corte
>> t = linspace(0,1,1000);
>> x = 2*cos(2*pi*50*t) + 10*cos(2*pi*0.7*t);
20 log10( | H(w) | )
0
-Rp
- Ra
Wo =
62.8319 314.1593
R1 = 1 K C2 = 1 µF
-
+ C1 = 0.1 mF +
+
vi(t) vo(t)
- -
Vo ( s ) s
R2C1
Vi ( s ) R1C1s 1R2C2 s 1
>> R1 = 1000;
>> R2 = 1000;
>> C1 = 1*0.0001;
>> C2 = 1*0.000001;
>> nu = [ -R2*C1 0 ];
>> de = conv( [ R2*C2 1] , [ R1*C1 1 ] );
>> FT = tf( nu , de )
>> bode( FT ) % ver figura 2.12
>> grid
>> Fc1 = 1/(2*pi*R1*C1); % Frec. inferior en Hertz
>> Fc2 = 1/(2*pi*R2*C2); % Frec. super. en Hertz
>> orden = 3;
>> [ Z , P , K ] = buttap( orden );
>> Nun4 = K * poly( Z );
>> Den4 = poly( P );
>> help lp2bs % transforma a
>> wo = 2*pi*1000; % Para-Banda
>> Bw = 2*pi*800;
>> [ Nun5 , Den5 ] = lp2bs( Nun4 , Den4 , wo , Bw );
>> W = linspace( 2*pi*1 , 2*pi*4000 , 1000 );
>> [ MAG , FASE ] = bode( Nun5 , Den5 , W );
>> F = W / 2 / pi;
>> subplot(121)
>> plot( F , MAG ), grid
>> axis( [ 1 4000 0.001 1 ] )
>> xlabel(' Hz '), ylabel(' Magnitud Lineal ')
>> subplot(122)
>> plot( F , 20*log10( MAG ) ), grid % ver figura 2.13
>> axis( [ 1 4000 -60 0 ] )
>> xlabel(' Hz '), ylabel(' Magnitud(dB) ')
Vo ( s) R1C1 s 1R2 C2 s 1
Vi ( s)
R1C1 R2 C 2 s 2 R1C1 R2 C 2 R1C 2 s 1
R1 = 0.5 K
C1 = 0.5 mF
+ +
R2 = 1.5 K
vi (t) vo (t)
- C2 = 2 mF -
>> R1 = 0.5*1000;
>> R2 = 1.5*1000;
>> C1 = 0.5*0.001;
>> C2 = 2*0.001;
>> p = [ R1*C1 1 ];
>> q = [ R2*C2 1 ];
>> Nun6 = conv( p , q );
>> Den6 = [ R1*C1*R2*C2 R1*C1+R2*C2+R1*C2 1 ];
>> bode( Nun6 , Den6 ) % ver figura 2.15
>> grid
3. SERIE DE FOURIER
g (t ) ao an cos(2 n f o t ) bn sen(2 n f o t )
n 1
Donde:
t To t To
1 2
ao
To g (t )dt ,
t
an
To g (t ) cos(n w t )dt
t
o
t To
2
wo 2 f o , bn
To g (t )sen(n w t )dt
t
o
fo : frecuencia fundamental.
nf o : n-ésima frecuencia armónica.
>> t = linspace(0,1,1000);
>> x= 2.5*( square(2*pi*4*t) + 1 );
>> plot( t , x ,'LineWidth' , 3 )
>> axis( [ 0 1 -0.5 6 ] )
>> grid
0.125 0.25
1 1
ao
0.25 5dt
0
0dt
0.25 0.125
ao 2.5
0.125 0.25
bn 1 1
n
nw40 , wo
2
0.25
o
1 (1) n
sen8 n t
40
g (t ) 2.5
8
n 1
n
>> T = 0.25;
>> wo = 2*pi*(1/T);
>> a0 = 5/2;
>> an = 0;
>> g = 0;
>> SUMA = 100;
>> for n=1:SUMA
t = linspace( 0 , 1 , 1000);
wo = 2*pi / 0.25;
bn = 40*( 1 - (-1)^n ) / ( n* wo );
g = g + bn * sin( wo*n*t);
plot( t , g + a0 ), % ver figura 3.2
grid
pause(0.2)
end
g (t ) ao an cos(2 n f o t ) bn sen(2 n f o t )
n 1
e 2 j n fo t e 2 j n fo t e 2 j n fo t e 2 j n fo t
g (t ) ao an bn
n 1 2 2j
g (t ) c e
n
n
2 j n fo t
,
an , n 0
Con: cn
1 a b j , n 0
2 n n
>> ao = 2.5;
>> an = 0;
>> g = 0;
>> SUMA = 21;
>> for n=-SUMA:2:SUMA
t = linspace( 0 , 1 , 1000);
wo = 2*pi / 0.25;
cn = 0.5 * ( an - 5*j*( 1 - (-1)^n ) / ( n* pi ) );
g = g + cn * exp( j*wo*n*t );
plot( t , ao + real( g ) ), % ver figura 3.3
grid
pause(0.2)
end
0.25 0.5
ao 0
0.25 0.5
0.4053
an sen 2 n
n2 2
>> an = 0;
>> bn = 0;
>> a0 = 0;
>> g = 0;
>> t = linspace(-0.5 , 1.5 , 200);
>> SUMA = 1000;
>> for n=1:SUMA,
an = -2*(0.4053)*sin(0.5*pi*n)*sin(0.5*pi*n)/(n*n);
g = an*cos(4*pi*n*t) + bn*sin(4*pi*n*t) + g;
plot( t , g + a0 , 'LineWidth' , 3 ),
grid
axis([-0.5 1.5 -1.2 1.2 ]),
pause(0.01),
end,
>> hold on
>> t = linspace(-0.5 , 1.5 , 200 );
>> plot( t , g1 , '*r' ), % ver figura 3.6
>> hold off
4. TRANSFORMADA DE FOURIER
2 j n
N 1
X ( K ) x[n]e
k
N
n 0
TDF : N 1 2 j n
1
X ( k )e
k
x[n] N
k 0, 1, 2, ... , N 1
N k 0
Ejemplo 01: t
x1 (t ) cos(5t ) y x1 (t ) 3 sin( )
2
>> t = linspace( 0 , 1 , 100);
>> x1 = cos( 5* t );
>> plot( t , x1 )
>> syms t w % declaración de variab. literales
>> x1 = cos(5*t );
>> TX1 = fourier( x1 , w );
TX1 =
pi*(dirac( w - 5 ) + dirac( w + 5 ))
>> syms t w
>> x2 = exp(-2*t);
>> limINF = 0; % por utilizarse un escalón.
>> limSUP = 10^8; % simulando a infinito.
>> TX2 = int( x2 * exp(-j*w*t) , t , limINF , limSUP );
>> pretty( TX2 )
0 1w 2 j j 0 1w 2 j j 1
w2 4 w 2 j w 2 j 2 jw
>> t = -8 : 0.1 : 8 ;
>> tam = length(t);
>> [a1 , b1] = find( t == -4);
>> [a2 , b2] = find( t == 4);
>> x3 = [ zeros(1,40) ones(1,81) zeros(1,40) ];
>> subplot(121)
>> plot( t , x3 , 'LineWidth' ,3 ), grid
>> axis( [ - 8 8 -0.5 1.5 ] )
>> xlabel(' Tiempo: t ')
>> title(' Señal Pulso Rectangular ')
>> syms t
>> TX3 = int( 1*exp(-w*j*t) , t , -4 , 4 );
>> pretty( TX3 )
2 sin(4 w)
----------
W
1, nTs 4
x6 nTs
0, nTs 4
>> N = 256;
>> TX6 = fft( x6 , N );
>> TX6 = fftshift ( TX6 );
>> MTX6 = abs( TX6 ) ;
>> F = linspace( -Fs/2 , Fs/2 , N );
>> subplot(122), % ver figura 4.7
>> xlabel(' Frecuencia ')
>> stem( F , real(TX6) )
nTs
Ejemplo 04: señal no periódica: x7 nTs e 2
nTs
>> Fs = 100; % 100 muestras/seg.
>> Ts = 1/Fs;
>> n = 0 : Fs-1;
>> x7 = exp(-0.5*n*Ts);
>> N = 1024;
>> TX7 = fftshift( fft( x7 , N ) );
>> MTX7 = abs( TX7 );
>> FTX7 = angle( TX7 ) * 180/pi;
>> F = linspace( -Fs/2 , Fs/2 , N );
X ( w)2
PSD lim
T T
>> Fs = 1000;
>> t = linspace(0 , 0.75 , 0.75*Fs );
>> x = cos(2*pi*t*100) + randn(size(t));
>> Fs = 1000;
>> t = linspace(0 , 0.75 , 0.75*Fs );
>> x = cos(2*pi*t*100) + randn(size(t));
>> % SE CREA EL ESTIMADOR ESPECTRAL WELCH
>> h = spectrum.welch;
>> H_PSD = psd( h , x , 'Fs' , Fs );
>> plot( H_PSD ) % ver figura 5.2
>> xlabel(' Frecuencia (Hz) ')
>> ylabel(' Potencia / Frecuencia (db / Hz) ')
>> title(' Estimación de la Densidad Espectral de Potencia ')
ESD X (w)
2
>> n = 0 : 20 ;
>> N = length(n);
>> x = 0.4 .^n;
Teorema de Parseval.
A la relación entre la energía de una señal x(t) en el dominio del
tiempo y en el dominio de la frecuencia, se le conoce como el
Teorema de Parseval [5]. Seguidamente la expresión
matemática.
1
x(t ) 2 dt
2
X ( w) 2 dw
1
x[n]
2
X ( w) 2 dw
n - 2
T /2
1
x(t ) 2 dt c[n]
2
T T / 2 n -
sm (t ) SM (w)
sm (t ) * A p cos(w p t)
Ap
2
S M (w wp ) S M (w wp
Donde:
sm(t) : señal moduladora
SM(w) : espectro de frecuencia de la señal moduladora
~
cos(2Fpt)
>> Fs = 10000;
>> t = linspace( 0 , 1 , Fs );
>> Sm = 3*cos(2*pi*100*t);
>> Sp = 12*cos(2*pi*4000*t);
>> Sam = Sm .* Sp ;
>> Fs = muestras;
>> N = muestras;
>> SM = fft( Sm , N );
>> SM = abs( fftshift( SM )) / N;
>> F = linspace( -Fs/2 , Fs/2 , N );
>> subplot(2,2,2)
>> plot( F , SM )
>> grid
>> xlabel('SM(f) : Espectro de Frecuencia')
>> axis([-250 250 0 0.06 ])
>> Sp = 4*cos(2*pi*1140*t);
>> Sam = Sm .* Sp ;
>> subplot( 2,2,3 ),
>> plot( t , Sam ),
>> grid
>> xlabel(' Sam(t) : Tiempo')
sm (t ) SM (w)
A p
sm (t ) * cos(w p t)
1
2
S M ( w w p ) S M ( w w p Ap w w p w w p
>> Fs = 5000;
>> t = linspace( 0 , 1 , Fs );
>> Sm = 6*cos(2*pi*50*t) + 8*cos(2*pi*20*t);
~
Ap
cos(2Fpt)
>> m1 = power(6/Ap,2);
>> m2 = power(8/Ap,2);
>> m = sqrt( m1 + m2 );
>> subplot(3,1,1)
>> plot( t(1:5000*0.2) , Sam1(1:5000*0.2) )
>> grid
>> xlabel(' Tiempo ')
>> N = 5000;
>> Fs = N;
>> SAM1 = fft( Sam1 , N );
j
j 1e 2 , w0
H ( w)
j 1e j 2 , w0
>> H = -j * f;
>> mH = abs( H );
>> fH = angle( H ) *180/pi;
>> figure(2) % modulo y fase H(w)
>> subplot( 211 ), plot( mH )
>> subplot( 212 ), plot( fH )
>> N = 1024;
>> SM = abs( fft( Sm , N ) );
>> SM = fftshift( SM );
>> F= linspace( - Fs/2 , Fs/2 , N );
>> subplot(311)
>> plot( F , SM )
>> title(' Señal Modulante ')
>> Fs = 30000;
>> t = linspace( 0 , 1 , Fs );
>> Ap = 4;
>> Sp = Ap * cos(2*pi*8000*t);
>> orden = 6;
>> Fcorte1 = [ 8000 9000 ] / (Fs/2);
>> [ Nbanda1 , Dbanda1 ] = butter( orden , Fcorte1 );
>> H1 = freqz( Nbanda1 , Dbanda1 , N , 'whole' , Fs );
>> H1 = fftshift( H1 );
>> %Representa el módulo del filtro Pasa-banda 1
>> %plot( F , 20*log10( abs( H1 ) ) )
>> subplot(312),
>> plot( F , TBLsup )
>> title(' Señal AM BLU SUPERIOR ')
>> subplot(313),
>> plot( F , TBLinf ) % ver figura 6.12
>> title(' Señal AM BLU INFERIOR ')
>> xlabel(' Frecuencia (Hz) ')
Método de Weaver
Este método es posible utilizarlo siempre y cuando el espectro
de la señal de banda base tenga poca potencia cerca del origen.
Ver el diagrama de bloques de la figura 6.13.
>> wo = 2*pi*800;
>> wp = 2*pi*2000;
>> Fs = 8000;
>> N = Fs;
>> t = linspace( 0 , 1 , Fs );
>> Sm = 2*cos(2*pi*300*t) + cos(2*pi*500*t);
7. DEMODULACIÓN AM
>> Fs = 5000;
>> N = Fs;
>> t = linspace(0,1,Fs);
>> Sm = ecg( Fs );
+ +
- -
>> Fs = 20000;
>> t = linspace( 0 , 1 , Fs);
>> N = Fs;
>> Sm = 2*sin(2*pi*200*t);
>> Sp = cos(2*pi*4000*t);
>> Ap = 4;
>> Sam = (Ap + Sm) .* Sp;
>> subplot(311)
>> plot( t , Sam ), grid % modulac. AM
>> axis([ 0 0.02 -12 12 ])
>> title(' Señal AM DBL (función del tiempo) ')
Por otro lado, el rizo se puede reducir aún más mediante otro
filtro RC Pasa-bajo.
Figura 7.4: (a) Señal AM DBL en función del tiempo. (b) Señal
rectificada con el diodo. (c) Señal demodulada con presencia de
nivel DC y pequeño rizo.
>> Fs = 20000;
>> t = linspace( 0 , 1 , Fs);
>> N = Fs;
>> Sm = 2*sin(2*pi*200*t);
>> Sp = cos(2*pi*4000*t);
>> Ap = 4;
>> Sam = (Ap + Sm) .* Sp;
>> subplot(311)
>> plot( t , Sam ), grid % modulac. AM
>> axis([ 0 0.02 -12 12 ])
>> title(' Señal AM DBL (función del tiempo) ')
>> orden = 6;
>> Fcorte = Fp / (Fs/2);
>> [ Npb , Dpb ] = butter( orden , Fcorte );
>> %freqz( Npb , Dpb , N , Fs) % filtro P-bajo
>> orden = 6;
>> Fcorte1 = 50 / (Fs/2);
>> [ Npa , Dpa ] = butter( orden , Fcorte1 , 'high' );
>> [Hpa , F ] = freqz( Npa , Dpa , N , Fs); % filtro P-alto
>> mHpa = abs( Hpa );
>> mHpa = 20*log10( mHpa );
>> %plot( F , mHpa )
>> %xlabel(' Frecuencia ')
t
S fm (t ) Ap cos w p t K f S m ( )d
Donde la frecuencia instantánea, wi(t), corresponde a:
wi (t ) wp K f S m (t )
S ( )d Modulador
m
Sm (t) de Fase Sfm (t)
>> Fs = 2000;
>> N = Fs;
>> t = linspace( 0 , 1, Fs);
>> Ap = 4;
>> kf = 2*pi*100;
>> wp = 2*pi*500;
>> Sm = 2*cos(2*pi*2*t);
>> t = linspace(0,1,Fs);
>> SmI = subs( SmINT , t ); %sustitución simbólica
>> Sfm = Ap * cos( wp*t + kf*SmI); %señal FM
>> subplot(211)
>> plot( t*1000 , Sfm )
>> axis( [ 0 0.2*1000 -4.5 4.5 ] )
>> title(' Señal modulada en frecuencia ')
>> xlabel(' Tiempo (mili segundos) '), grid
>> SFM = abs( fft( Sfm , N ) );
>> F = linspace( -Fs/2 , Fs/2 , N );
>> SFM = fftshift( SFM );
>> subplot(212)
>> plot( F/1000 , SFM ) % ver figura 8.2
>> title(' Módulo del espectro de frecuencia de FM ')
>> xlabel(' Frecuencia (KHz) '), grid
>> Fs = 2000;
>> N = Fs;
>> t = linspace( 0 , 1, Fs);
>> Ap = 4;
>> kf = 2*pi*100;
>> wp = 2*pi*500;
>> Sm = 2*cos(2*pi*2*t);
>> wi = wp + kf * Sm; % en rad/seg.
>> fi = wi / (2*pi); % en Hertz.
>> plot( t , fi ) % ver figura 8.3
>> grid,
>> title(' Frecuencia Instantánea en Hertz ')
>> xlabel(' Tiempo ')
S pm (t ) Ap coswp t K p S m (t )
d S m (t )
wi (t ) w p K p
dt
Por lo tanto, el diagrama de bloques mostrado en la figura 8.4
representa una forma indirecta de obtención de la modulación
de fase, a partir de la derivada de la señal modulante seguida
de un bloque modulador de frecuencia.
dS m (t )
d dt Modulador
Sm (t) de Spm (t)
dt Frecuencia
>> t = linspace(0,1,Fs);
>> Ap = 4;
>> wp = 2*pi*20;
>> kf = 2*pi*10^0.04;
>> kp = 2*pi*12;
Tipos de modulación FM
Para el caso de una modulación FM, la desviación máxima de la
frecuencia de la portadora, fmax (en Hz), y el índice de
modulación, fm, se determinan a partir de las siguientes
expresiones [3]:
k f Am max Fmax
Fmax fm
2 Fm
>> Fs = 10000;
>> N = Fs;
>> t = linspace(0,1,Fs);
>> Am = 2;
>> wm = 2*pi*100;
>> Sm = Am*cos(wm*t);
>> wp = 2*pi*2000;
>> kf = 2*pi*10;
>> beta = kf * Am / ( wm )
beta =
0.2000
>> Fs = 10000;
>> N = Fs;
>> t = linspace(0,1,Fs);
>> Am = 2;
>> wm = 2*pi*100;
>> Sm = Am*cos(wm*t);
>> wp = 2*pi*2000;
>> kf = 2*pi*500;
>> beta = kf * Am / ( wm )
beta =
10.0000
>> t = 0:.01:10;
>> n = 0:5; % orden: 0, 1, 2, 3, 4, 5
>> F = besselj( n , t' );
9. DEMODULACIÓN FM
R1 = 2 K
vx(t) vy(t)
DIODO +
+ R2 = 600 C = 0.1 mF
Sfm (t) SmD (t)
L= 1 h
- -
>> Fs = 1000;
>> N = Fs;
>> t = linspace( 0 , 1, Fs );
>> Ap = 4;
>> kf = 2*pi*20;
>> wp = 2*pi*100;
>> Sm = 2*cos(2*pi*4*t);
>> subplot(311)
>> Sm = subs( Sm , t );
>> plot(t , Sm ), grid
>> title(' Señal modulante ')
>> subplot(312)
>> plot(t , Sfm_DER ), grid %ver figura 9.4
>> title(' Derivada de la Señal FM ')
>> subplot(313)
>> plot(t , SfmD )
>> grid
>> title(' Señal de salida del Detector de Envolvente ')
>> xlabel(' Eje de tiempo (seg.) ')
>> Fp = 100;
>> Fm = 20;
>> t = linspace( 0 , 0.25 , 0.25*Fs );
>> Sm = 2*sin( 2*pi*Fm*t );
>> Fdv = 1.8; % desviación de frec. en rad/seg.
>> Spm = pmmod( Sm , Fp , Fs , Fdv );
>> disp(' Modulación realizada ')
BIBLIOGRAFÍA