UNIVERSIDAD RICARDO PALMA
FACULTAD DE INGENIERÍA
FUNDAMENTOS DE
TELECOMUNICACIONES UTILIZANDO
EL MATLAB
Diciembre 2011
LIMA - PERÚ
FUNDAMENTOS DE
TELECOMUNICACIONES
UTILIZANDO EL MATLAB
Por
Pedro Freddy Huamaní Navarrete
Facultad de Ingeniería
Universidad Ricardo Palma
PRESENTACIÓN
En los últimos años, en diversas carreras de ingeniería, es muy común encontrar asignaturas relacionadas a las telecomunicaciones. Desde las materias más simples y teóricas, hasta las más complejas y elaboradas en laboratorios de hardware y de simulación.
Asimismo, la aparición de softwares de computación científica, tal como el Matlab, nos brinda capacidad para la realización de simulaciones de conceptos impartidos en las aulas de clase. Tal es así que el mismo Matlab posee una librería denominada Communications Toolbox, la cual agrupa adecuadamente un conjunto de comandos para utilizarse en el área de las telecomunicaciones.
Por tal razón, y con la finalidad de brindar al estudiante la facilidad de realizar simulaciones que complementen lo aprendido en clases, se presenta este manual introductorio donde se utiliza el software Matlab como herramienta principal de software.
Este manual ha sido preparado con la intención de mostrar los fundamentos de las telecomunicaciones utilizando una herramienta computacional. Es decir, basado en simulaciones y mostrando el desarrollo de fórmulas en gráficos a nivel del tiempo y de frecuencia. Por esta razón, este material consta de diez capítulos importantes. Desde la manipulación de señales periódicas y no periódicas, pasando por la teoría de la serie y la transformada de Fourier, hasta las modulaciones analógicas por amplitud y frecuencia.
CONTENIDO
PRESENTACIÓN 05
CONTENIDO 07
1. Señales periódicas y no periódicas 09
2. Sistemas lineales. Filtros analógicos 16
3. Serie de Fourier 28
4. Transformada de Fourier 37
5. Densidad espectral de potencia y de energía 46
6. Modulación en amplitud (AM) 51
7. Demodulación AM 68
8. Modulación Angular: Frecuencia y Fase 74
9. Demodulación FM 86
10. Introducción al Toolbox Communications 90
1. SEÑALES PERIÓDICAS Y NO PERIÓDICAS
Una señal puede representarse de diversas formas, y asimismo describir una variedad de fenómenos físicos. De esta manera, su representación se da en forma periódica o no periódica, y en forma continua o discreta [1].
Señales continuas en el tiempo.
En el caso de una señal periódica y continua en el tiempo, se cumple la siguiente definición:
f(t) = f(t + n T), t R y n Z Donde:
T: periodo de dicha señal. n: número entero.
Ejemplo 01: Tren de pulsos con T = 0.2 seg. >> T = 0.2;
>> t = linspace( -0.4 , 0.6 , 800 );
>> x = 0.5 * ( square(2*pi*t*(1/T)) + 1 );
>> plot( t , x , 'LineWidth' , 4 ), % ver figura 1.1 >> axis( [ -0.4 0.6 -0.5 1.5 ] ),
>> grid >> F = 1 / T
Ejemplo 02: x(t) = cos(10t) + 2cos(20t) >> t = linspace( -0.6 , 0.6 , 1200 );
>> x = cos(10*pi*t) + 2*cos(20*pi*t);
>> plot( t , x , 'LineWidth' , 4 ) % ver figura 1.2 >> axis( [ -0.6 0.6 -3 4 ] ),
>> grid >> T = 0.02;
>> F = 1/T; % Menor frec.
Figura 1.2: Señal periódica par.
Por otro lado, para el caso de una señal no periódica, no hay presencia de periodo y se demuestra con los siguientes ejemplos.
Ejemplo 03: x(t): señal no periódica >> t = linspace( 0 , 30 , 15000 );
>> x = 5*cos( 3*t ) + 5*cos( (3 + pi)*t ); >> plot( t , x , 'LineWidth' , 4 ) ;
>> grid, axis([ 0 30 -12 12 ]) % ver figura 1.3
Ejemplo 04: x(t): señal no periódica >> t = linspace( 0 , 30 , 15000 );
>> x = 1*cos( 2*pi*5*t ) .* exp(-0.40*t);
>> plot( t , x , 'LineWidth' , 2 ) ; grid % ver figura 1.4 >> axis( [ 0 , 15 , -1 , 1 ] )
Figura 1.3: Ejemplo de señal no periódica.
Figura 1.4: Ejemplo de señal no periódica. Señales discretas en el tiempo.
Por otro lado, en el caso de señales discretas periódicas o no periódicas, se consideran dos factores importantes: el periodo de muestro y el número de bits por muestra.
El periodo de muestreo (Ts) señala el tiempo de separación existente entre dos muestras consecutivas. Asimismo, la frecuencia de muestreo (Fs), que es la inversa del periodo de muestro, representa el número de muestras por segundo. Por lo tanto, para la adecuada digitalización de una señal analógica, y
posterior recuperación, debe cumplirse el teorema de muestreo [4]:
Fs > 2 * Fmax Donde:
Fs: es la frecuencia de muestreo elegida.
Fmax: es la máxima frecuencia de la señal a digitalizar. Por otro lado, el número de bits por muestra corresponde al número de niveles de cuantización utilizados para representar una señal discreta. Por ejemplo, al utilizar 4 bits por muestra se genera 24 = 16 niveles de cuantización, desde el “0000”, hasta el “1111”. A continuación se muestran algunos ejemplos.
Ejemplo 05: x(n): señal con 100 muestras/segundo >> Fs = 100;
>> n = 0 : Fs-1; >> F= 8;
>> x = 127 + 128*cos( 2 * pi * F * n / Fs );
>> if Fs > 2*F, disp(' cumple '), else, disp(' No cumple '), end >> x = round( x );
>> [ max(x) min(x) ]
>> stem ( n , x ) % ver figura 1.5 >> grid
Figura 1.5: Señal discreta con Ts = 10 mSeg. y codificado con
Para conocer el valor numérico o amplitud de algunas muestras de la señal digitalizada, se señala directamente el número de muestra en la variable “x”. >> A1 = x( 77 ) % muestra número 77. A1 = 239 >> A2 = x( 34 ) % muestra número 34. A2 = 45
Luego, para representar tales muestras en formato binario con 8 bits, se utiliza el comando DEC2BIN. De igual forma, para transformar un número binario en decimal, o decimal en hexadecimal, se utiliza los comandos, BIN2DEC y DEC2HEX, respectivamente.
>> N1= dec2bin( A1 , 8 ); >> N2= dec2bin( A2 , 8 ); >> D1 = bin2dec(' 11110000 ');
>> H1 = dec2hex( 255 ,2 ); % Dos dígitos hexadec.
Ejemplo 06: x(n): señal con 50 muestras/segundo >> Fs = 50;
>> n = 0 : Fs-1;
>> x = 2.5*cos( 2*pi*6*n / Fs ) + sin( 2*pi*8*n / Fs ); >> x = 2*x;
>> subplot(121)
>> stem ( n , x , 'Linewidth' , 3 ), >> grid
>> axis( [ 0 50 -8 8 ] )
Posteriormente, se procede a graficar los 16 niveles de cuantización sobre la señal creada. Luego, se procede a redondear cada muestra de dicha señal con la finalidad de alcanzar exactamente algunos de los niveles de cuantización. >> 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)
Figura 1.6: a) Señal muestreada y b) Señal digitalizada, sobre
los 16 niveles de cuantización.
Señales con simetrías de ½ y ¼ onda.
Pertenecen al grupo de señales periódicas que permiten la simplificación de diversos cálculos, debido a la forma como se encuentran presentadas periódicamente. Así tenemos:
Ejemplo 07: x(t) : periódica, continua y simetría de ½ onda >> %% f(t) = - f( t T/2 ) >> Fs = 200; >> t = linspace( 0 , 1 , Fs ); >> POS = 5 + 10*exp( -5*t ); >> NEG = -10*exp( -5*t ) - 5;
>> x = [ POS NEG POS NEG POS NEG ]; >> tiempo = linspace( -3 , 3 , length(x) ); >> subplot(121)
>> plot( tiempo , x , 'LineWidth' , 4 ) % ver figura 1.7 >> grid
>> axis([ -3 3 -20 20 ])
Ejemplo 08: x(t) : periódica, discreta y simetría de ¼ onda
>> %% f(t) = - f( t + T/2 ) y a la vez PAR o IMPAR >> t = linspace( -0.5 , 0.5 , 100 );
>> x1 = square(2*pi*t*4 + pi/2 ); >> x2 = cos(2*pi*t*4);
>> x12 = x1 + x2; >> subplot(122)
>> stem( t , x12 , 'LineWidth' , 4 ) % ver figura 1.7 >> axis( [ -0.5 0.5 -3 3 ] ) , grid
Figura 1.7: a) Señal continua con simetría de ½ onda. b) Señal
2. SISTEMAS LINEALES. FILTROS ANALÓGICOS.
Los sistemas físicos, en su sentido más amplio, son una interconexión de componentes, dispositivos o subsistemas. Entonces, un sistema se define como un proceso por el cual las señales de entrada son transformadas por el sistema dando como respuesta otra señal de salida [1]. A continuación, la figura 2.1 muestra una representación de un sistema continuo o discreto en forma general.
Asimismo, el sistema es considerado lineal si posee la propiedad de la superposición. Lo cual se define de la siguiente manera:
Ax1(t) + Bx2(t) Ay1(t) + By2(t)
Ax1[nTs] + Bx2[nTs] Ay1[nTs] + By2[nTs] 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]
Figura 2.1: Representación general de un sistema.
En esta sección, a manera de un caso particular, se plantea el análisis de sistemas eléctricos conformados por elementos pasivos y activos: filtros analógicos.
El tema de sistemas discretos, como es el caso de filtros digitales, no es abordado por corresponder a asignaturas de ciclos superiores. Tal es el caso de la asignatura procesamiento digital de señales. SISTEMA CONTÍNUO / DISCRETO x (t) x[nTs] y (t) y[nTs]
Filtro analógico Pasa Bajo.
El circuito eléctrico mostrado en la figura 2.2 representa a un filtro analógico Pasa-Bajo de segundo orden.
Figura 2.2: Filtro Pasa-Bajo de 2do orden.
Obteniendo las ecuaciones diferenciales, y posteriormente transformando a Laplace se llega a la función de transferencia de dicho sistema: Vo(s) / Vi(s). 2 2 0
sC
I
V
2 1 1 1 1 1 2 2 1 2 1 1 1 1 1 1 1 I s C I s C I R V I s C s C R I sC i
2 2 1 1 1 2 2 1 2 1 2 / 1 ) / ( / 1 ) ( ) ( C s C C R R R s C R R C s V s V i o >> 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+ - vi (t) + vo (t) - R2 = 2 K R1 = 1 K C1 = 1 mF C2 = 5 mF v1 (t) i1 (t) i2 (t)
Figura 2.3: Diagrama de Bode del filtro Pasa-Bajo de 2do
orden. >> [ num , den ] = tfdata( FT ); >> num = num{1}
>> den = den{1}
>> pzmap( num , den ) % diag. de polos- ceros También es posible diseñar un filtro Pasa-Bajo utilizando las funciones analógicas Butterworth, Chebyshev y Elliptic.
A continuación se muestra un ejemplo de obtención de un filtro Pasa-Bajo normalizado Butterworth; es decir, con frecuencia de corte normalizada wo = 1 rad/seg. y orden o número de polos igual a 4.
>> n = 4; % número de polos
>> [Z , P , K ] = buttap( n ); % retorna Ceros, Polos >> NumN = K* poly( Z ); % y ganancia
>> DenN = poly( P ); >> pzmap( NumN , DenN ) >> bode( NumN , DenN ), grid
>> w = [ 1 10 ]; % verificando el módulo >> H = freqs( NumN , DenN , w ); % en w=1 y 10 rad/seg. >> 20*log10( abs(H) )
Luego, se transforma el filtro Pasa-Bajo normalizado a otro filtro Pasa-Bajo Butterworth con wo=2100 rad/seg. Esta transformación también es conocida como operación de desnormalización.
>> 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
Figura 2.4: Diagrama de Bode del filtro Pasa-Bajo Butterworth
de 4to orden y frecuencia de corte Wo=2100 rad/seg. Es así que para diseñar filtros Pasa-Alto, Pasa-Banda y Rechaza-Banda, se parte del diseño de un filtro Pasa-Bajo para luego transformarlo según la frecuencia de corte deseada. Más adelante se muestran algunos ejemplos.
Filtro analógico Pasa Alto.
Transformando un filtro analógico Pasa-Bajo Butterworth normalizado (wo=1 rad/seg.) de orden 9, a un filtro analógico Pasa-Alto Butterworth con wo = 250 rad/seg. y el mismo orden.
>> 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
Figura 2.5: Diagrama de Bode del filtro Pasa-Alto Butterworth
de 9no orden y frecuencia de corte Wo=250 rad/seg. Por otro lado, el circuito eléctrico mostrado en la figura 2.6 representa a un filtro analógico Pasa-Alto activo y de primer orden, cuya función de transferencia está representada por la siguiente expresión:
1 K ) ( ) ( ) ( ) ( 1 3 3 2 3 o i o i o W s s s V s V C R R s R s R R s V s V
1 1 3 1 2 3 C R W R C R R R K o Figura 2.6: Diagrama circuital de Filtro Pasa-Alto de 1er orden.
>> R1 = 100; >> R2 = 20; >> R3 = 800; >> C= 5/10000; >> K = (R2 + R3)*(R1*C)/ R3; >> Wo = 1/(R1*C) % frecuencia de corte >> FT = K * tf( [1 0 ] , [1/Wc 1 ] )
>> bode( FT ) , grid % ver figura 2.7
Analizando de otra manera, y suponiendo que la señal analógica
)
cos(
*
10
)
cos(
*
2
)
(
t
w
1t
w
2t
x
, está compuesta por lasfrecuencias: w1=250 rad/seg. y w2=20.7 rad/seg., entonces, se procede a filtrar dicha señal utilizando el filtro Pasa-alto. Posteriormente, se comprueba la atenuación de la menor frecuencia. >> t = linspace(0,1,1000); >> x = 2*cos(2*pi*50*t) + 10*cos(2*pi*0.7*t); + vo(t) - + vi(t) - R3 = 800 R2 = 20 + - R1 = 100 C = 0.5 mF
>> subplot( 2,1,1 ), >> plot( t , x ) , grid
Figura 2.7: Diagrama de Bode del filtro Pasa-Alto de 1er orden.
>> help lsim % rpta. para entrada arbitraria >> y = lsim( FT , x , t );
>> subplot( 2,1,2 ),
>> plot( t , y ) , grid % ver figura 2.8
Figura 2.8: a) Señal de entrada al filtro Pasa-alto. b) Señal de
Filtro analógico Pasa Banda.
Respecto al diseño de filtros analógicos Pasa Banda, también es posible obtenerlo utilizando la función analógica Chebyshev, tipo I o tipo II.
Por ejemplo, en la figura 2.9 se muestra las principales características deseadas para el diseño de un filtro analógico Pasa-Banda.
>> Wp = [20*pi 100*pi]; % frecuencias de banda pasante >> Wa = [5*pi 120*pi]; % frecuencia de atenuación >> Rp = -1; % ripple en la banda pasante >> Ra = -30; % atenuación mínima en la
% banda de rechazo.
Figura 2.9: Características del filtro Pasa-Banda a diseñar.
>> [N, Wo] = cheb1ord(Wp, Wa, abs(Rp) , abs(Ra) , 's' ); N = 7 Wo = 62.8319 314.1593 >> R = 1; % ripple pico-pico en % banda pasante 0 Wa1 Wp1 Wp2 Wa2 rad/seg - Ra 0 -Rp 20 log10( | H(w) | )
>> [Num3 , Den3] = cheby1( N , R , Wo , 's' ); >> pzmap( Num3 , Den3 )
>> freqs( Num3 , Den3 ) % ver figura 2.10
Figura 2.10: Magnitud y fase del filtro analógico Pasa-Banda
tipo Chebyshev I, y de orden 14
Por otro lado, un filtro Pasa-banda también puede ser representado por un circuito operacional tal como se muestra en la figura 2.11. A continuación se procede a obtener su respectiva función de transferencia.
Figura 2.11: Diagrama circuital de un filtro Pasa Banda de 2do
orden. + vo(t) - + vi(t) - R2 = 1 K - + R1 = 1 K C1 = 0.1 mF C2 = 1 µF
) C 1/(R Wc ) C 1/(R Wc 1 1 ) ( ) ( 2 2 2 1 1 1 2 2 1 1 1 2 s C R s C R s C R s V s V i o >> 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
Figura 2.12: Magnitud y fase del filtro analógico Pasa-banda de
orden 2.
Filtro analógico Rechaza o Para Banda.
Un filtro analógico Rechaza banda se puede diseñar a partir de un filtro analógico Pasa-bajo, indicándose la frecuencia central y el ancho de banda.
A continuación se procede a diseñar un filtro Butterworth analógico tipo Rechaza banda de orden 6, frecuencia central de 1000 Hz y ancho de banda de 800 Hz. >> 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) ')
Figura 2.13: Magnitud y fase del filtro analógico Pasa-banda de
Para visualizar la magnitud del filtro para valores de frecuencias específicas (ancho de banda y frecuencia central), se procede a utilizar la función FREQS.
>> w = [ wo-Bw/2 wo wo+Bw/2 ]; >> [ H , W] = freqs( Nun5 , Den5 , w ); >> H = 20*log10( abs ( H ) );
>> F = W/2/pi; >> round(F), >> H,
También, es posible representar un filtro Rechaza-Banda a partir de una red eléctrica conformada por elementos pasivos (ver la figura 2.14). Por lo tanto, a continuación se muestra su correspondiente función de transferencia después de obtener la transformada de Laplace de las ecuaciones diferenciales que pertenecen a dicha red.
1
1 1 ) ( ) ( 2 1 2 2 1 1 2 2 2 1 1 2 2 1 1 s C R C R C R s C R C R s C R s C R s V s V i oFigura 2.14: Diagrama circuital de Filtro Rechaza Banda de
orden 2. C2 = 2 mF R2 = 1.5 K R1 = 0.5 K C1 = 0.5 mF + vo (t) - + vi (t) -
>> 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
Figura 2.15: Magnitud y fase del filtro analógico
Rechaza-banda de orden 2.
3. SERIE DE FOURIER
Serie de Fourier Trigonométrica.
Las señales periódicas pueden ser representadas en combinaciones lineales de sinusoides con fases desplazadas, utilizando la Serie de Fourier en forma trigonométrica [2].
1)
2
(
)
2
cos(
)
(
n o n o n oa
n
f
t
b
sen
n
f
t
a
t
g
Donde:
o o o T t t o o n o o T t t o o n T t t o o dt t w n sen t g T b f w dt t w n t g T a dt t g T a ) ( ) ( 2 , 2 ) cos( ) ( 2 , ) ( 1 of
: frecuencia fundamental. onf
: n-ésima frecuencia armónica.Para demostrar la teoría de la Serie de Fourier, seguidamente se grafica una señal periódica (tren de pulsos) con amplitud igual a 5 voltios, y periodo igual a 1 mSeg. Ver la figura 3.1. >> 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
Figura 3.1: Tren de pulsos con periodo de 0.25 segundos o
frecuencia de 4 Hz (ciclos/segundo).
Entonces, se procede a obtener los coeficientes ao, an y bn utilizando las respectivas expresiones matemáticas. Por tratarse de una señal impar, el coeficiente an es igual a cero.
5
.
2
0
25
.
0
1
5
25
.
0
1
0.25 125 . 0 125 . 0 0
o oa
dt
dt
a
25 . 0 125 . 0 125 . 0 00
25
.
0
2
5
25
.
0
2
dt
t
nw
sen
dt
t
nw
sen
b
n o o
25
.
0
2
,
40
1
1
o o n nw
nw
b
De esta manera, la expresión general será:
18
)
1
(
1
8
40
5
.
2
)
(
n nt
n
sen
n
t
g
>> 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
Serie de Fourier Compleja.
También es posible representar a la señal periódica por la forma Compleja de la Serie de Fourier [2]. Por lo tanto, se procede a remplazar las funciones seno y coseno por su respectiva fórmula de Euler, para luego obtener una nueva expresión.
Figura 3.2: Aproximación del tren de pulsos por la suma de 100 funciones sinusoidales.
1)
2
(
)
2
cos(
)
(
n o n o n oa
n
f
t
b
sen
n
f
t
a
t
g
1 j 2 j 2 j 2 j 22
2
)
(
n t f n t f n n t f n t f n n oj
e
e
b
e
e
a
a
t
g
o o o o
n t f n n oe
c
t
g
(
)
2 j , Con:
0
,
2
1
0
,
n
j
b
a
n
a
c
n n n nPor lo tanto, el gráfico de magnitud de los coeficientes cn complejos versus la frecuencia angular w, se conoce como Espectro de Amplitud. Asimismo, al gráfico del ángulo de fase de los coeficientes cn complejos versus la frecuencia angular w, se conoce como Espectro de Fase.
Entonces, para el ejemplo anterior, se vuelve a graficar su representación temporal pero esta vez utilizando menos componentes sinusoidales. Luego, se presentan los respectivos espectros de amplitud y fase a partir de los coeficientes cn. >> 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
Figura 3.3: Aproximación del tren de pulsos a partir de la Serie
Compleja de Fourier. >> SUMA = 31; >> n = -SUMA : SUMA; >> a0 = 2.5; >> an = 0; >> bn = 5*( 1 - (-1) .^ n ) ./ ( n * pi );
>> cn = 0.5*( an - j*bn );
>> cn( SUMA + 1 ) = a0; % Valor de Cn, para n=0 >> M_cn = abs( cn ); % espectro_amp. de Cn >> F_cn = angle( cn ); % espectro_fase de Cn >> F_cn = F_cn * 180 / pi;
>> subplot( 121 ), stem( n , M_cn ) >> title(' Espectro de Magnitud ') >> xlabel(' n ')
>> grid
>> subplot( 122 ), stem( n , F_cn ) % ver figura 3.4 >> grid
>> title(' Espectro de Fase ') >> xlabel(' n ')
Figura 3.4: Izquierda: Espectro de Magnitud. Derecha:
Espectro de Fase.
En el gráfico de espectro de magnitud se puede observar claramente las componentes de frecuencias existentes:
>> %% PARA n=0 Componente DC
>> [ n(SUMA+1) abs( M_cn( SUMA + 1 ) ) ];
>> %% Para n=1 Componente o Frecuencia Principal >> [ n(SUMA+2) abs( M_cn( SUMA + 2 ) ) ];
>> %% PARA n=2 2da armónica
>> [ n(SUMA+3) abs( M_cn( SUMA + 3 ) ) ]; >> %% PARA n=3 3ra armónica
>> [ n(SUMA+4) abs( M_cn( SUMA + 4 ) ) ]; >> %% PARA n=4 4ta armónica
>> [ n(SUMA+5) abs( M_cn( SUMA + 5 ) ) ]; >> %% PARA n=5 5ta armónica
>> [ n(SUMA+6) abs( M_cn( SUMA + 6 ) ) ]; Y así sucesivamente para las demás armónicas.
Seguidamente se muestra un segundo ejemplo donde se representa a una señal triangular par con sus coeficientes de Fourier. Para ello, primero se procede a generar la señal triangular con frecuencia de 2 Hz y amplitud de 1 voltio, utilizando la función SAWTOOTH del Matlab. Luego, se compara con la función conformada por los coeficientes de Fourier de dicha señal periódica.
>> t = linspace( -0.5 , 1.5 , 200 );
>> f = 2; % 2 ciclos/segundo
>> g1 = sawtooth( 2*pi*t*f , 0.5 ); % onda triangular >> plot( t , g1 ) % ver figura 3.5 >> grid
>> axis( [-0.5 1.5 -1.2 1.2 ] )
De esta figura puede observarse un nivel DC igual a cero, y una característica de señal par. Por lo tanto, los coeficientes a0 y bn son iguales a cero.
0 3 8 5 . 0 1 1 8 5 . 0 1 0.5 25 . 0 25 . 0 0
o o a dt t dt t a
n sen n a dt t nw t dt t nw t a n o o n 2 4053 . 0 cos 3 8 5 . 0 2 cos 1 8 5 . 0 2 2 2 5 . 0 25 . 0 25 . 0 0 Figura 3.5: Señal triangular par con periodo de 0.5 segundos.
>> 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,
Luego, para visualizar la comparación entre la señal obtenida con la función SAWTOOTH, y la obtenida a partir de los
coeficientes de Fourier, se procede a utilizar una retención de figura con la función HOLD ON.
>> hold on
>> t = linspace(-0.5 , 1.5 , 200 );
>> plot( t , g1 , '*r' ), % ver figura 3.6 >> hold off
Figura 3.6: Aproximación de señal periódica por la suma de
1000 funciones sinusoidales.
Finalmente, se vuelve a mostrar el Espectro de Magnitud y de Fase para este segundo ejemplo.
>> SUMA = 21; >> n = -SUMA : SUMA; >> a0 = 0; >> bn = 0; >> an = -2*(0.4053)*sin(0.5*pi*n).*sin(0.5*pi*n)./(n.*n); >> cn = 0.5*( an - j*bn );
>> cn( SUMA + 1 ) = a0; % Valor de Cn, para n=0 >> M_cn = abs( cn ); % espectro_amp. de Cn >> stem( n , M_cn ,'LineWidth', 3)
>> title(' Espectro de Magnitud ') % ver figura 3.7 >> xlabel(' n ')
>> ylabel(' | Cn | ') >> grid
Figura 3.7: Espectro de Magnitud de la señal triangular
conformado por la frecuencia principal (en n=1), y demás armónicas (para n=2, 3, 4, … , 21).
4. TRANSFORMADA DE FOURIER
En la sección anterior se trató la representación de señales periódicas como combinaciones lineales de exponenciales complejas, o señales sinusoidales. Por lo tanto, ahora se extiende este concepto para el caso de señales no periódicas, donde las exponenciales complejas se encuentran infinitesimalmente cercanas en frecuencia, y la representación en términos de una combinación lineal adopta la forma de una integral en lugar de una suma [1].
Seguidamente se presenta las expresiones matemáticas para la obtención de la Transformada Continua de Fourier (TCF), y para la Transformada Discreta de Fourier (TDF) [7].
dw e jw X t x dt e t x jw TCF jwt jwt ) ( 2 1 ) ( ) ( ) ( X :
1 , ... , 2 , 1 , 0 ) ( 1 ] [ ] [ ) ( : 1 0 2 1 0 2
N k e k X N n x e n x K X TDF N k k N n j N n k N n j Transformada Continua de Fourier
Según la expresión de la página anterior, la TCF es obtenida a través de una integral evaluada desde menos infinito a infinito, y conociendo la expresión matemática de la señal a analizar. Por lo tanto, el Matlab cuenta con el Toolbox Symbolic, que permite la obtención de la TCF en forma literal. Para ello, es posible utilizar los comandos FOURIER e INT para la respectiva evaluación.
Asimismo, se resalta que el espectro de Fourier de señales no periódicas es continuo, mientras que el de señales periódicas es discreto. Tal como se demostró con la Serie de Fourier. A continuación algunos ejemplos del cálculo de la TCF:
Ejemplo 01: x1(t)cos(5t) y ) 2 sin( 3 ) ( 1 t t x >> 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 ))
Este resultado es del tipo real y representa a dos impulsos desfasados en: w=-5 y w=5. A continuación se muestra el gráfico de la TCF de esta señal real.
>> w = -10 : 10;
>> TX1 = pi * [ zeros(1,5) 1 zeros(1,9) 1 zeros(1,5) ]; >> stem( w, TX1 ),
Figura 4.1: TCF de la señal x1(t) real.
En el caso de una señal SENO, el resultado de la TCF es complejo. Asimismo, también es posible obtener la TCF inversa haciendo uso del comando IFOURIER. A continuación se muestra el ejemplo.
>> syms t w % declaración de variab. >> x1 = 3*sin(0.5*t ); % literales >> TX1 = fourier( x1 , w ); TX1 = (-3)*pi*i*(dirac(w - 1/2) - dirac(w + 1/2)) >> w = -10: 0.5 : 10; >> [a1, b1] = find(w == -0.5); >> [a2, b2] = find(w == 0.5);
>> tx1 = [ zeros(1,19) 3*pi 0 -3*pi zeros(1,19) ]; >> stem( w , tx1 ) % ver figura 4.2 >> text( 0.7 , -3*pi , ' -3*pi*j ' )
>> text( -0.3 , 3*pi , ' 3*pi*j ' ) >> help ifourier
>> x1_inv = ifourier( TX1 , t ); >> x1 = simplify( x1_inv ); >> pretty( x1 )
Figura 4.2: Transformada de Fourier de señal SENO. Ejemplo 02: () 2 ()
2 t e t
x t
Obteniendo la TCF de la señal x2(t) pero partiendo de la expresión matemática de Fourier.
>> 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 )
(exp(- 200000000 - w 100000000 j ) - 1) (w + 2 j ) j --- 2
w + 4
Evaluando y simplificando el exponencial, la expresión anterior queda reducida a:
w j
w j
j
jw
j w j w j w 2 1 2 2 2 1 0 4 2 1 0 2Puesto que la Transformada de Fourier tiene valor complejo, entonces se expresa TX2(jw) en términos de su magnitud y de su fase.
>> w = linspace( - 4*pi , 4*pi , 1000 ); >> TX2 = 1 ./ ( 2 + j*w );
>> MTX2 = abs( TX2 );
>> FTX2 = angle( TX2 ) * 180 / pi;
>> subplot(121), plot( w , MTX2 ) % ver figura 4.3 >> grid, axis( [ -4*pi 4*pi 0 0.6] )
>> title(' Magnitud ')
>> xlabel(' w[rad/seg]: -4pi a 4pi ') >> ylabel(' | TX2(jw) | ')
>> subplot(122), plot( w , FTX2 ) , grid, >> title(' Fase ')
>> xlabel(' w ') , ylabel(' ANG TX2(jw) ')
Ejemplo 03: 4 t , 0 4 t , 1 ) ( 3 t x
Obteniendo la TCF de la señal x3(t) pero partiendo de la expresión matemática de Fourier, para luego graficar la magnitud y la fase.
>> 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
>> w = linspace( - 3*pi , 3*pi , 1000 ); >> TX3 = 2 * sin( 4*w ) ./ w ;
>> subplot(122)
>> plot( w , TX3 ) % ver figura 4.4 >> grid,
>> title(' Transformada de Fourier '), >> xlabel(' w ') , ylabel(' TX3(jw) ')
Figura 4.4: Izquierda: Señal continua x3(t) Derecha: Transformada de Fourier de la señal x3(t).
Transformada Discreta de Fourier.
La obtención de los coeficientes de la Transformada Discreta de Fourier (TDF), se logra con el comando FFT. Y, para el caso de la transformada inversa, se utiliza el comando IFFT. Entonces, a continuación se muestra algunos ejemplos del uso de la TDF sobre señales periódicas, y luego sobre señales no periódicas. El comando FFT se refiere a la Transformada Rápida de Fourier, el cual corresponde a un algoritmo para la obtención de la TF en forma rápida.
Ejemplo 01: Señal periódica de 60 Hz. >> Ts = 1*0.001; % Ts = 1 mSeg. >> Fs = 1 / Ts; >> F = 60; >> n = 0 : Fs-1; >> x1 = cos( 2*pi*F*n / Fs ); >> subplot( 1,2,1 ) >> stem( n , x1 ), grid >> axis([ 0 100 -2 2 ]) >> N = 1024; % número de muestras >> TX1 = fft( x1 , N ); % para el cálculo de TF >> MTX1 = abs( fftshift( TX1 ) ); % desplazamiento >> F = linspace( -Fs/2 , Fs/2 , N );
>> subplot( 1,2,2 ), >> stem( F, MTX1 ),
>> grid % ver figura 4.5
Ejemplo 02: señal cuadrada de 100 Hz. >> Ts = 0.5*0.001; % Ts=0.5 mSeg. >> Fs = 1 / Ts; >> F = 100; >> n = 0 : Fs-1; >> x5 = square( 2*pi*F*n / Fs ); >> subplot( 1,2,1 ) >> stem( n , x5 ) >> axis([ 200 280 -1.2 1.2 ]) >> N = 1024; >> TX5 = fft( x5 , N ); >> MTX5 = fftshift( TX5 );
Figura 4.5: Izquierda: señal discreta x4(nTs). Derecha: módulo de la TDF de x4(nTs), con una componente de frecuencia en 60
Hz. >> MTX5 = abs( MTX5 );
>> F = linspace( -Fs/2 , Fs/2 , N ); >> subplot( 1,2,2 )
>> stem( F, MTX5 ) % ver figura 3.13
Figura 4.6: Izq. Señal discreta x5(nTs) Der. Módulo de la TDF de x5(nTs), con componentes de frecuencia en: 100, 300, 500,
Ejemplo 03: señal pulso rectangular
4 nT , 0 4 nT , 1 s s 6 nTs x >> Ts = 100*0.001; % Ts=100 mSeg. >> Fs = 1 / Ts;>> n = linspace( 0 , 8 , 8*Fs ); % 8 seg. de duración >> tam = length( n );
>> x6 = [ ones( 1 , tam/2 ) zeros( 1 , tam/2 ) ]; >> subplot(121)
>> xlabel(' Tiempo Discreto ') >> stem( n , x6 ) >> 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) )
Figura 4.7: Izq. Señal discreta x6(nTs) Der. Módulo de la TDF de x6(nTs), con una componente de frecuencia en 60 Hz.
Ejemplo 04: señal no periódica:
s nT s e nT nT x s
2 7 >> 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 );>> subplot(121) , stem( n/Fs , x7 ) % ver figura 4.8 >> subplot(122) , stem( F , MTX7 )
Figura 4.8: Izquierda: señal discreta x7(nTs) Derecha: módulo de la TDF de x7(nTs).
5. DENSIDAD ESPECTRAL DE POTENCIA Y DE ENERGÍA
La densidad espectral de potencia (PSD) es bastante útil para describir la manera en que el contenido de potencia, de las señales y el ruido, es afectado por filtros y otros dispositivos en
los sistemas de comunicación. A continuación se muestra la expresión matemática que representa a la PSD [5], así como dos ejemplos de estimación de la PSD a partir de dos métodos diferentes. Cabe resaltar que algunas señales (por ejemplo, las periódicas) tienen energía infinita y por lo tanto se les conoce como señales de potencia.
T w X PSD T 2 ) (lim
>> Fs = 1000; >> t = linspace(0 , 0.75 , 0.75*Fs ); >> x = cos(2*pi*t*100) + randn(size(t));>> % SE CREA EL ESTIMADOR ESPECTRAL PERIODOGRAMA >> h = spectrum.periodogram;
>> H_PSD = psd( h , x , 'Fs' , Fs );
>> plot( H_PSD ) % ver figura 5.1 >> xlabel(' Frecuencia (Hz) ')
>> ylabel(' Potencia / Frecuencia (db / Hz) ')
>> title(' Estimación de la Densidad Espectral de Potencia ')
Figura 5.1: Representación de la PSD estimada via el método
>> 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 ')
Figura 5.2: Representación de la PSD estimada a través del
método Welch’s.
Por otro lado, el concepto de energía de una señal es válido sólo si el área bajo x2(t) es finita. Todas las señales que cumplen esta condición se llaman señales de energía. Por lo tanto, cuando expresamos la energía en términos del espectro, la denominamos densidad espectral de energía (ESD) [5]. A continuación un ejemplo para el caso de una señal no periódica.
2 ) (w X ESD >> n = 0 : 20 ; >> N = length(n); >> x = 0.4 .^n;>> subplot( 211 ), >> stem( n , x ), grid
>> xlabel(' Tiempo discreto < 0 a 20 >') >> ylabel(' x[n] ')
>> title(' SEÑAL DISCRETA NO PERIÓDICA ' ) >> ESDx = fft( x , N );
>> Fs = 2*pi;
>> ESDx = fftshift( ESDx ); >> mESDx = abs( ESDx ) .^2; >> F = linspace( -Fs/2 , Fs/2 , N ); >> subplot(212),
>> plot( F , mESDx )
>> grid % ver figura 5.3
>> xlabel(' Frecuencia < -PI a PI >') >> ylabel(' | X(w) | ^2 ')
>> title(' DENSIDAD ESPECTRAL DE ENERGÍA ' )
Figura 5.3: Arriba: señal no periódica de tiempo discreto.
Abajo: densidad espectral de energía de la señal no periódica de tiempo discreto.
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.
X w dw dt t x 2 ( ) 2 2 1 ) (
Este teorema resulta ser un método alternativo de evaluar la energía que utiliza la descripción del dominio de la frecuencia en lugar de la definición del dominio del tiempo. Para el caso de señales de tiempo discreto, se utiliza la expresión siguiente que a su vez da origen a una nueva relación que utiliza los coeficientes complejos de Fourier c[n] [4].
X w dw n x 2 -n 2 ) ( 2 1 ] [ ] [ ) ( 1 -n 2 2 / 2 / 2
cn dt t x T T T>> % SEGUIDAMENTE SE REPRESENTA UN EJEMPLO >> % UTILIZANDO UNA SEÑAL CUADRADA DE 1 HZ >> Fs = 500;
>> t = linspace(-1 , 2 , 3*Fs ); >> x = square(2*pi*1*t); >> plot( t , x , 'linewidth' , 3 ) >> grid
>> an = 0; % por ser señal par >> ao = 0; % no tiene nivel DC >> syms n
>> bn = (2./(n*pi)) .* ( 1 - (-1).^n); % coef. bn obtenido >> cn = (0.5) * ( an - j*bn);
>> Acn = abs( cn ); % Absoluto: | cn | >> pretty( Acn )
| n | |(-1) - 1| --- PI |n|
>> % AL DESARROLLAR LA SUMATORIA, PARA “n” IMPAR >> % EL NUMERADOR SIEMPRE SERÁ “2”. AL ELEVAR AL
>> % CUADRADO Y DUPLICAR LA SUMATORIA POR EL >> % VALOR ABSOLUTO DE “cn”, SE TRANSFORMA EN: >> syms n
>> CN = ((2/pi)^2 )*2/n/n; >> suma = 0;
>> for n = 1:2:10001
suma = subs( CN , n ) + suma; end
>> RESPUESTA_1 = suma;
>> % LO MISMO SE OBTIENE AL EVALUAR LA INTEGRAL >> % DE x(t) ENTRE –T/2 y T/2.
>> F = 1; >> T = 1/F; >> sym -1
>> MedioP1 = int( ans*ans , -T/2 , 0 ); >> sym 1
>> MedioP2 = int( ans*ans , 0 , T/2 );
>> RESPUESTA_2 = (1/T)*( MedioP1 + MedioP2 );
Entonces, RESPUESTA_1 = 1.0000 y RESPUESTA_2 = 1. Próximos entre sí.
6. MODULACIÓN EN AMPLITUD (AM)
La modulación es un proceso que ocasiona un desplazamiento del rango de frecuencias de una señal, con la finalidad de obtener ciertas ventajas en la transmisión. Por lo tanto, en una modulación en amplitud, la amplitud de una portadora sinusoidal de alta frecuencia se varía en proporción a la señal de banda base [3].
Doble banda lateral con supresión de portadora (DBL-SP)
Se obtiene multiplicando directamente la señal de banda base (señal moduladora) con una señal de portadora, de frecuencia wp suficientemente mayor a la frecuencia de la señal moduladora. Ver la figura 6.1.
) cos( * ) ( ) ( ( ) ( 2 t) cos(w A * ) ( (w) S ) ( _ p p M t w t s A t s w w S w w S A t s t s p m p SP DBL am p M p M p m m Donde: sm(t) : señal moduladoraSM(w) : espectro de frecuencia de la señal moduladora
Figura 6.1: Diagrama de bloques de una modulación AM de
DBL-SP.
Ejemplo 01: Señal moduladora con tono de 100 Hz y
amplitud de 3 voltios. Señal de portadora con frecuencia de 4 KHz y amplitud de 12 voltios. Luego, se realiza una multiplicación directa para obtener la señal modulada en AM. >> Fs = 10000;
>> t = linspace( 0 , 1 , Fs ); >> Sm = 3*cos(2*pi*100*t); >> Sp = 12*cos(2*pi*4000*t); >> Sam = Sm .* Sp ;
Luego, se muestra la señal modulada en AM en el dominio temporal, y posteriormente en el dominio frecuencial, haciendo uso de la transformada discreta de Fourier.
X
~
Sm(t) SAM_DBL-SP (t)
>> subplot(2,1,1), plot( t , Sam ) >> grid, xlabel('Tiempo')
>> axis( [ 0 0.05 -40 40 ] ) >> N = Fs;
>> SAM = fft( Sam , N );
>> SAM = abs( fftshift( SAM )) / N; >> F = linspace( -Fs/2 , Fs/2 , N );
>> subplot(2,1,2), plot( F , SAM ) % ver figura 6.2 >> grid, xlabel('Frecuencia')
Figura 6.2: (a) Gráfico temporal de la modulación AM DBL-SP.
(b) Espectro de frecuencia (magnitud).
De esta manera, el ancho de banda resultante se obtiene restando la mayor frecuencia de la menor:
>> maxF = 4000 + 100; >> minF = 4000 - 100; >> Bw = maxF - minF;
Ejemplo 02: Modulación AM de una onda ECG generada
desde el Matlab. Se considera la duración de un latido cardiaco como 0.86 segundos, en relación a una frecuencia estándar de 70 latidos por minuto.
>> help ecg
>> Sm = ecg( muestras );
>> t = linspace( 0 , 0.86 , muestras ); >> subplot( 2,2,1 )
>> plot( t , Sm ) % ver figura 6.3 >> grid,
>> xlabel(' Sm(t) : Tiempo')
Luego, se procede a obtener el espectro de frecuencia en magnitud de la señal moduladora, y de la modulación AM DBL-SP después de realizarse el producto se señales correspondientes. >> 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') >> SAM = fft( Sam , N );
>> SAM = abs( fftshift( SAM )) / N; >> F = linspace( -Fs/2 , Fs/2 , N ); >> subplot(2,2,4)
>> plot( F , SAM ) % Banda Lateral Sup. e Inf. >> grid
>> xlabel('SAM(f) : Espectro de Frecuencia') >> axis([ -1350 1350 0 0.15 ])
Figura 6.3: (a) Representación temporal de señal ECG. (b)
Espectro de frecuencia en magnitud de señal ECG. (c) Modulación AM DBL-SP de señal ECG. (d) Espectro de frecuencia en magnitud de modulación AM DBL-SP.
Doble banda lateral (DBL)
Se obtiene multiplicando una señal de portadora con una de banda base sumada a un nivel DC. O también, tal como lo señala el diagrama de bloques de la figura 6.4.
) cos( * ) ( ) cos( ) ( ( ) ( 2 1 t) cos(w * ) ( (w) S ) ( _ p M t w t s t w A t s w w w w A w w S w w S t s A t s p m p p DBL am p p p p M p M m p m Ejemplo 01: Señal moduladora compuesta por dos tonos: 50
Hz y 25 Hz, con amplitudes de 6 y 8 voltios, respectivamente; y una señal de portadora con frecuencia de 800 Hz con amplitud de a) 26 voltios, b) 10 voltios, y c) 2 voltios. A continuación se procede a realizar la modulación AM de DBL.
>> Fs = 5000;
>> t = linspace( 0 , 1 , Fs );
Figura 6.4: Diagrama de bloques de una modulación AM de
DBL.
>> % a) Primer caso: Sub-modulación ( m < 1) >> Ap = 26;
>> Sp = cos(2*pi*800*t) ; >> Sam1 = ( Sm + Ap) .* Sp ;
Seguidamente se obtiene el índice de modulación y se grafica los primeros 200 milisegundos de la señal modulada.
>> 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 ')
>> % b) Segundo caso: modulación igual a 1 >> Ap = 10; >> Sp = cos(2*pi*800*t) ; >> Sam2 = ( Sm + Ap) .* Sp ; >> m = sqrt( power(6/Ap,2) + power(8/Ap,2) ); >> subplot(3,1,2) >> plot( t(1:5000*0.2) , Sam2(1:5000*0.2) ) >> grid >> xlabel(' Tiempo ')
X
~
Sm(t) SAM_DBL (t) cos(2Fpt)+
Ap>> % c) Tercer caso: Sobre-modulación ( m > 1 ) >> Ap = 2; >> Sp = cos(2*pi*800*t) ; >> Sam3 = ( Sm + Ap) .* Sp ; >> m = sqrt( power(6/Ap,2) + power(8/Ap,2) ); >> subplot(3,1,3)
>> plot(t(1:5000*0.2) , Sam3(1:5000*0.2)) % fig. 6.5 >> grid
>> xlabel('Tiempo')
Figura 6.5: Representación temporal de una modulación AM
DBL a) m < 1. b) m = 1. c) m > 1.
Posteriormente, se procede a graficar la señal modulada en AM DBL en el dominio frecuencial (para el rango de -1KH a 1KHz), para el caso de un índice de modulación menor y mayor a 1. En dicha modulación es posible observar las bandas laterales superiores: 800+20 y 800+50, e inferiores: 800-20 y 800-50, y asimismo la señal de portadora en 800 Hz.
>> N = 5000; >> Fs = N;
>> fase_SAM1 = angle( SAM1 ); % fase >> SAM1 = fftshift( SAM1 ) / N;
>> SAM1 = abs( SAM1 );
>> F = linspace( -Fs/2 , Fs/2 , N ); >> subplot(211)
>> plot( F , SAM1 ) >> grid
>> xlabel('Frecuencia (Hz)')
>> ylabel(' Espectro de Sub modulación ') >> axis( [-1000 1000 0 10 ])
>> SAM3 = fft( Sam3 , N );
>> fase_SAM3 = angle( SAM3 ); % fase >> SAM3 = fftshift( SAM3 ) / N;
>> SAM3 = abs( SAM3 );
>> F = linspace( -Fs/2 , Fs/2 , N ); >> subplot(212)
>> plot( F , SAM3 ) % ver figura 6.6 >> grid
>> xlabel('Frecuencia (Hz)')
>> ylabel(' Espectro de Sobre modulación ') >> axis( [-1000 1000 0 10 ])
Figura 6.6: Arriba: Espectro de frecuencia de una modulación
AM DBL (m<1). Abajo: Espectro de frecuencia de una modulación AM DBL (m>1)
El ancho de banda se obtiene restando la mayor frecuencia de la menor:
>> maxF = 800 + 50; >> minF = 800 - 50; >> Bw = maxF - minF
Doble banda lateral única (BLU)
Corresponde al caso de modulación AM en donde se transmite solamente una banda lateral. De esta manera se requiere sólo de la mitad del ancho de banda de una modulación AM DBL. Existen dos métodos para la generación de una modulación BLU. El primer método utiliza filtros de corte exacto para eliminar la banda lateral indeseable, y el segundo utiliza circuitos de corrimiento de fase para lograr el mismo objetivo. Además, también es considerado el método de Weaver [3].
Método de desviación de fase
Es un método indirecto para generar señales de BLU a partir de la desviación del espectro de fase de la señal de portadora y de la señal modulante [3]. Luego se modula en AM DBL-SP, y se finaliza con una suma o resta de ambos resultados, según la banda lateral a desear: superior o inferior.
Figura 6.7: Diagrama de bloques del método de desviación de
El diagrama de bloques de la figura 6.7 muestra una representación de este método de desviación de fase. Donde el bloque de desfasaje de -90° tiene como función de transferencia H(w), la cual está compuesta por la función signo. De esta manera, si una señal Sm(t) se hace pasar a través de este bloque, se obtiene su respectiva Transformada de Hilbert, SmH(t). La Transformada de Hilbert es obtenida a través del comando HILBERT. 0 , 1 0 , 1 ) ( (w) sgn j (w) 2 2 w e j w e j w H H j j
La función signo se obtiene y grafica utilizando el comando SIGN del Matlab. Luego, el módulo y fase de H(w) será:
>> t = linspace( -5 , 5 , 300 ); >> f = sign( t );
>> figure(1)
>> plot( t , f ) % función SIGNO >> 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 )
A continuación un ejemplo de la obtención de la transformada de Hilbert con ayuda del Matlab.
>> t = linspace( 0 , 1, 100 ); >> x = cos(2*pi*t*3); >> y = hilbert( x );
>> subplot(211), plot( t , x ); >> title(' Onda Coseno ')
>> subplot(212), plot( t , xh ); % ver figura 6.8 >> title(' Onda Seno (coseno con fase: –pi/2) ') >> axis([ 0 1 -1 1 ])
Figura 6.8: Arriba: señal coseno original. Abajo: transformada
de Hilbert de la señal coseno, que representa a su vez a una onda seno.
Seguidamente se muestra dos ejemplos de modulación AM-BLU.
Ejemplo 01: modulación de tono múltiple >> Fs = 12000; >> t = linspace( 0 , 1 , Fs ); >> Sp = cos(2*pi*5000*t); >> Sm = cos(2*pi*200*t)+ cos(2*pi*400*t)+cos(2*pi*800*t); >> sA = Sp .* Sm; >> Smh = imag( hilbert( Sm ) ) ; >> sB = Smh; >> Sph = imag( hilbert( Sp ) ); >> sC = sB .* Sph;
>> BLsup = sA - sC; % BLU - superior >> BLinf = sA + sC; % BLU - inferior >> N = 1024;
>> SM = fftshift( SM );
>> F= linspace( - Fs/2 , Fs/2 , N ); >> subplot(311)
>> plot( F , SM )
>> title(' Señal Modulante ')
>> T_BLsup = abs( fft( BLsup , N ) ); >> T_BLsup = fftshift( T_BLsup ); >> F= linspace( - Fs/2 , Fs/2 , N ); >> subplot(312)
>> plot( F , T_BLsup )
>> title(' Banda Lateral Superior ') >> axis([ -6000 6000 0 600 ]) >> T_BLinf = abs( fft( BLinf , N ) ); >> T_BLinf = fftshift( T_BLinf ); >> F= linspace( - Fs/2 , Fs/2 , N ); >> subplot(313)
>> plot( F , T_BLinf ) % ver figura 6.9 >> title(' Banda Lateral Inferior ')
>> axis([ -6000 6000 0 600 ]) >> xlabel(' Frecuencia (Hz) ')
Figura 6.9: Módulo del espectro de frecuencia. a) Señal
modulante tono múltiple. b) Banda lateral superior. c) Banda lateral inferior.
Ejemplo 02: modulación de señal ECG. >> Fs = 1000; N = power( 2 , 10 ); >> t = linspace( 0 , 1 , Fs );
>> Sp = cos(2*pi*400*t);
>> Sm = ecg( Fs ); % señal de ECG >> %plot( t , Sm );
>> sA = Sp .* Sm;
>> Smh = imag( hilbert( Sm ) ) ; sB = Smh; >> Sph = imag( hilbert( Sp ) ); sC = sB .* Sph;
>> BLsup = sA - sC; % BLU - superior >> BLinf = sA + sC; % BLU - inferior >> SM = abs( fft( Sm , N ) );
>> SM = fftshift( SM );
>> F= linspace( - Fs/2 , Fs/2 , N ); >> %plot( F , SM )
>> T_BLsup = abs( fft( BLsup , N ) ); >> T_BLsup = fftshift( T_BLsup ); >> F= linspace( - Fs/2 , Fs/2 , N ); >> subplot(312), plot( F , T_BLsup ) >> title(' Banda Lateral Superior ') >> T_BLinf = abs( fft( BLinf , N ) ); >> T_BLinf = fftshift( T_BLinf ); >> F= linspace( - Fs/2 , Fs/2 , N ); >> subplot(313), plot( F , T_BLinf ) >> title(' Banda Lateral Inferior ')
>> xlabel(' Frecuencia (Hz) ') % ver figura 6.10
Método de filtrado selectivo
En este método, una señal DBL-SP se hace pasar a través de un filtro de corte exacto para eliminar la señal indeseable, tal como se observa en la figura 6.11. A continuación se representa un ejemplo de modulación de tono múltiple.
>> Fs = 30000;
>> t = linspace( 0 , 1 , Fs ); >> Ap = 4;
>> Sm = 2*cos(2*pi*400*t) + cos(2*pi*600*t);
Figura 6.10: Módulo del espectro de frecuencia. a) Señal
modulante de ECG. b) Banda lateral superior. c) Banda lateral inferior.
Figura 6.11: Diagrama de bloques del método de filtrado
selectivo >> Sam = Sp .* Sm;
>> F= linspace( -Fs/2 , Fs/2 , N ); >> SAM = abs( fft(Sam,N)); >> SAM = fftshift( SAM ); >> subplot( 311 ),
>> plot( F , SAM )
>> title(' Señal AM antes de aplicar el filtro Pasa-banda ') >> 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 ) ) )
>> Fcorte2 = [ 7000 8000 ] / (Fs/2);
>> [ Nbanda2 , Dbanda2 ] = butter( orden , Fcorte2 ); >> H2 = freqz( Nbanda2 , Dbanda2 , N , 'whole' , Fs ); >> H2 = fftshift( H2 );
>> %Representa el módulo del filtro Pasa-banda 2 >> %plot( F , 20*log10( abs( H2 ) ) )
>> BLsup = filter( Nbanda1 , Dbanda1 , Sam ); >> BLinf = filter( Nbanda2 , Dbanda2 , Sam ); >> TBLsup = fftshift( fft( BLsup , N ) ); >> TBLsup = abs( TBLsup );
>> TBLinf = fftshift( fft( BLinf , N ) ); >> TBLinf = abs( TBLinf );
Figura 6.12: Módulo del espectro de frecuencia. a) Señal antes
de filtrarse con Pasa-banda1 o Pasa-banda2. b) Banda lateral superior. c) Banda lateral inferior.
>> 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.
Figura 6.13: Diagrama de bloques del método de Weaver.
El código de programa correspondiente a dicho método de modulación, es presentado a continuación.
>> 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); >> SM = abs( fft( Sm , N ) ); >> SM = fftshift( SM ); >> F= linspace( - Fs/2 , Fs/2 , N ); >> subplot(311)
>> plot( F , SM ), grid
>> axis([ -1000 1000 0 9000 ])
>> title(' Módulo del espectro de señal modulante') >> sA = cos( wo*t ) .* Sm;
>> sB = sin( wo*t ) .* Sm; >> orden = 10;
>> Fo = wo / 2 / pi; >> Fcorte = Fo / (Fs/2);
>> [ NPbajo , DPbajo ] = butter( orden , Fcorte ); >> Ho = freqz( NPbajo , DPbajo , N , 'whole' , Fs ); >> Ho = fftshift( Ho );
>> F = linspace( -Fs/2 , Fs/2 , N );
>> %Representa el módulo del filtro Pasa-bajo Ho(w) >> %plot( F , 20*log10( abs( Ho ) ) )
>> sC = filter( NPbajo , DPbajo , sA ); >> sD = filter( NPbajo , DPbajo , sB ); >> sE = sC .* cos( wp*t );
>> sF = sD .* sin( wp*t ); >> BLsup = sE + sF ; >> BLinf = sE - sF ;
>> TBLsup = abs( fft( BLsup , N ) ); >> TBLsup = fftshift( TBLsup );
>> TBLinf = abs( fft( BLinf , N ) ); >> TBLinf = fftshift( TBLinf ); >> subplot(312)
>> plot( F , TBLsup ), grid >> title(' Banda Lateral Superior ') >> subplot(313)
>> plot( F , TBLinf ), grid % ver figura 6.14 >> title(' Banda Lateral Inferior ')
>> xlabel(' Frecuencia (Hz) ')
7. DEMODULACIÓN AM
El proceso de demodulación es el proceso inverso a la modulación; es decir, la señal original Sm(t) debe ser recuperada en el extremo receptor a partir de un traslado de su espectro de frecuencia. Una de las formas de realizar el proceso de demodulación se consigue con la detección sincronizada o coherente (también conocida como homodino) [3].
Demodulación coherente de señales AM DBL-SP
La demodulación se realiza mediante una portadora generada en el receptor, con frecuencia y fase en sincronización con la portadora generada en el transmisor. La figura 7.1 muestra el diagrama de bloques correspondiente a este tipo de demodulación.
Figura 7.1: Diagrama de bloques de la demodulación
coherente. >> Fs = 5000;
>> N = Fs;
>> t = linspace(0,1,Fs); >> Sm = ecg( Fs );