Fı́sica de las Comunicaciones – 2006/2007 – Práctica 2 1 Práctica 2: Sistemas, filtros, ruido y canales de comunicaciones 1. Objetivo y contenido El objetivo de esta práctica es doble: por una parte, repasar y consolidar las nociones de matlab dadas en la práctica anterior; por otra parte, utilizar algunas de las funciones que matlab ofrece para modelar sistemas, filtros y canales de comunicaciones. En primer lugar, se utilizará matlab para analizar sistemas lineales invariantes en el tiempo (LTI) y filtros en particular. Después, definiremos modelos de ruido y desvanecimiento para modelado de canales de comunicaciones. Para ello, utilizaremos funciones incluidas en los “Toolboxes” de procesamiento de señales, comunicaciones y diseño de filtros. Finalmente, usaremos Simulink, una interfaz gráfica complementaria a matlab, para simular el comportamiento de un canal de comunicaciones con diferentes modelos de filtrado, retardo, ruido y desvanecimiento. 2. 2.1. Sistemas lineales invariantes con el tiempo y filtros Filtros ideales Un sistema LTI viene definido por su respuesta impulsiva, h(t) (siendo la salida y(t) = Y (s) h(t) ∗ x(t)), y su función de transferencia correspondiente, H(s) = X(s) . En matlab, la función tf define la función de transferencia de un sistema LTI a partir de dos vectores. El primero especifica el numerador de la función de transferencia y el segundo especifica el denominador de la función de transferencia1 . En el ejemplo 1, se define un LTI ideal de ganancia 1/3 que no altera la fase, y se estudia su respuesta a un escalon, su respuesta impulsiva y su respuesta en frecuencia. El ejemplo 2 compara, mediante cálculo simbólico, el resultado de aplicar a dos sinusoides un filtro de paso de baja ideal de ganancia 1 y frecuencia de corte 1001 Hz. 1 El orden en que se escriben los coeficientes de los polinomios ası́ como otros posibles parámetros, como de costumbre, se puede consultar con help tf y doc tf Dpto. Electrónica y Electromagnetismo Facultad de Fı́sica, Universidad de Sevilla 2 Fı́sica de las Comunicaciones – 2006/2007 – Práctica 2 Ejemplo 1 ficom pr2 0001 filtro ganancia.m % Ejemplo de definición de un LTI (Amplificador ideal de ganancia 1/3) X = 3 Y = 1 lti1 = tf(Y,X) % tf define un sistema LTI step(lti1) % representar respuesta a escalón pause % esperar tecla impulse(lti1) % representar respuesta impulsiva pause freqresp(lti1,1) % respuesta en frecuencia = 1 rad. pause bode(lti1) Ejemplo 2 ficom pr2 0002 filtro ideal simbolico.m % Filtro paso de baja ideal mediante cálculo simbólico syms t % Dos se~ nales sinusoides de entrada w1 = 1000; x1 = cos(2*pi*w1*t) w2 = 1100; x2 = cos(2*pi*w2*t) % Función de transferencia del filtro (escalon en frecuencia) syms w w_corte = 1001*2*pi; H_pb = Heaviside(w+w_corte)-Heaviside(w-w_corte) % Calcular las salidas en frecuencia como producto de transformadas X1 = fourier(x1); X2 = fourier(x2); Y1 = X1*H_pb; Y2 = X2*H_pb; % Calcular salidas en el dominio del tiempo y1 = ifourier(Y1) y2 = yfourier(Y2) % Representación de las salidas respecto al tiempo subplot(211) ezplot(y1) subplot(212) ezplot(y2) Dpto. Electrónica y Electromagnetismo Facultad de Fı́sica, Universidad de Sevilla Fı́sica de las Comunicaciones – 2006/2007 – Práctica 2 3 Cualquier otra configuración de filtros paso de baja, alta o banda, se puede obtener mediante cálculo simbólico modificando la frecuencia de corte y restando escalones en frecuencia. 2.2. Filtros reales El ejemplo 3 define un filtro paso de baja realizable de primer orden (filtro RC con 1 H(s) = 1+sRC ). Ejemplo 3 ficom pr2 0003 filtro rc 1er orden.m % filtro RC 1er orden R = 10e3; C = 10e-12; Y = 1; X = [R*C 1] filtroRC = tf(Y,X) step(filtroRC) % respuesta a escalón impulse(filtroRC) % respuesta impulsiva ltiview(filtroRC) % Ventana especial de representación gráfica de sistemas LTI La orden ltiview abre una ventana con una interfaz diseñada para representar gráficamente sistemas LTI. Esta ventana especial permite visualizar de manera cómoda las gráficas normalmente empleadas en el estudio de sistemas LTI y filtros. Definir un ejemplo de filtro RLC de paso de banda de segundo orden ((H(s) = s2 +s ks ) y otro de filtro RLC de paso de baja de segundo orden w0 +w2 Q (H(s) = 0 1 1 ). LC s2 +s(R/L)+1/(LC) Para definir un filtro Butterworth, contamos con las funciones predefinidas butter y buttord. En el ejemplo 4, definimos un filtro de paso de baja Butterworth de orden 3 y frecuencia de corte2 de 1KHz. Ejemplo 4 ficom pr2 0004 filtro butterworth1.m % Filtro Butterworth de orden 3 orden = 3; w_corte = 1000; [Y, X] = butter(orden,w_corte,’s’) b = tf(Y,X) ltiview(b) % ¿’s’? ver help butter En el ejemplo 5, definimos un filtro Butterworth de paso de baja con frecuencia de paso 5 KHz, frecuencia de rechazo 10 KHz, con atenuación menor de 2 dB en la banda de paso y mayor de 30 dB en las bandas rechazo: Comparar las señales de entrada y salida del filtro. 2 Para la cual la respuesta en magnitud es Dpto. Electrónica y Electromagnetismo p 1/2. Facultad de Fı́sica, Universidad de Sevilla 4 Fı́sica de las Comunicaciones – 2006/2007 – Práctica 2 Ejemplo 5 ficom pr2 0005 filtro butterworth2.m % Filtro Butterworth con ’buttord’ y ’butter’ w_paso = 5*pi*1000; w_rechazo = 25*pi*1000; aten_paso = 2; aten_rechazo = 30; [n,w_corte] = buttord(w_paso,w_rechazo,aten_paso,aten_rechazo,’s’) % ¿’s’? ver help buttord [Y,X] = butter(n,w_corte,’s’); b = tf(Y,X); ltiview(b) 3. Ruido Las funciones rand y randn, predefinidas en matlab, generan números pseudoaleatorios de distribucion uniforme y normal, respectivamente. Por tanto, podemos añadir ruido aleatorio de distribución normal a cualquier señal siguiendo el procedimiento que se muestra en el ejemplo 6. Ejemplo 6 ficom pr2 0006 ruido randn.m % A~ nadir ruido a una sinusoide usando numeros aleatorios (randn - distrib. normal) randn(’state’,0); t = 0:0.001:pi; g = sin(2*pi*2*t); g_ruido = g + 0.25*randn(1,size(t)); % sumar vector aleatorio subplot(211) plot(t,g) subplot(212) plot(t,g_ruido) Una manera más cómoda de añadir ruido blanco gaussiano a una señal es utilizar las funciones predefinidas wgn y awgn. Si queremos generar simplemente un vector señal con ruido gaussiano blanco, podemos utilizar la función wgn (ver ejemplo 7). Mediante wgn, también es posible generar ruido especificando la impedancia de carga (ver ejemplo 8). Ejemplo 7 ficom pr2 0007 ruido wgn.m % ‘‘Vector ruido’’ de 1000 elementos y 2 dBm de potencia ruido = wgn(1000,1,2,’dBm’); La función awgn genera ruido para un determinado valor de SNR. De este modo, podemos simular el paso de la señal por un canal con ciertas caracterı́sticas de ruido. En el ejemplo 9, definimos una señal cuadrada y añadimos ruido con SN R = 15 dB: En el ejemplo 10, definimos una señal sinusoide de frecuencia 2 Hz y SN R = 20 dB. Dpto. Electrónica y Electromagnetismo Facultad de Fı́sica, Universidad de Sevilla Fı́sica de las Comunicaciones – 2006/2007 – Práctica 2 5 Ejemplo 8 ficom pr2 0008 ruido wgn impedancia carga.m % ‘‘Vector ruido’’ de 1000 elementos, 0.5W de potencia sobre una carga de 100 Ohmios ruido = wgn(1000,1,0.5,100); Ejemplo 9 ficom pr2 0009 ruido awgn.m % A~ nadir ruido WGN a una se~ nal cuadrada con SNR=15dB t=0:0.01:10; g = square(t); % se~ nal cuadrada g_ruido = awgn(g,15); % a~ nadir ruido, SNR = 15dB plot(t,g_ruido) % Representar se~ nal con ruido % Representar las densidades espectrales de potencia psd(g) hold on psd(g_ruido) Ejemplo 10 ficom pr2 0010 ruido awgn sinusoide.m g=sin(2*pi*2*t); g_ruido = awgn(g,20); subplot(311) % Comparar se~ nal limpia y se~ nal con ruido plot(t,g); subplot(312) plot(t,g_ruido); subplot(313) plot(g,g_ruido) % Representar las densidades espectrales de potencia psd(g) hold on psd(g_ruido) Dpto. Electrónica y Electromagnetismo Facultad de Fı́sica, Universidad de Sevilla 6 Fı́sica de las Comunicaciones – 2006/2007 – Práctica 2 De los siguientes tipos de ruidos, ¿cuales se pueden generar fácilmente en matlab? blanco rosa azul 4. Canales de comunicación Con lo visto hasta ahora, ¿cómo se podrı́an definir en matlab modelos de canales de los siguientes tipos? Canal de ruido aditivo gaussiano. Canal de filtro lineal invariante con el tiempo. Canal de filtro lineal variante con el tiempo. ¿Cómo se pueden simular en matlab los efectos de atenuación de un canal? En cuanto al desvanecimiento, los modelos de canales de Rayleigh y Rician se pueden definir en matlab utilizando las funciones rayleighchan y ricianchan, respectivamente, incluidas en el “Toolbox” de comunicaciones. Ambas funciones crean un objeto canal. Para simular el paso de una señal por el canal representado por el objeto, se puede utilizar la función filter, como en el ejemplo 11. Ejemplo 11 ficom pr2 0011 canal rayleigh.m % Paso de una se~ nal por un canal con modelo de fading de Rayleigh t = 0:0.001:10; x = square(t); % Crear un objeto canal que sigue un modelo de Rayleigh % frec. de muestreo: 1KHz, Máximo desplazamiento Doppler: 20Hz c = rayleighchan(1/1000,20); % ver las propiedades del canal c % la se~ nal x atraviesa el canal c y = filter(c,x); % y es complejo! plot(abs(y)) plot(unwrap(angle(y))) Comparar las señales de entrada y salida del canal. Dpto. Electrónica y Electromagnetismo Facultad de Fı́sica, Universidad de Sevilla Fı́sica de las Comunicaciones – 2006/2007 – Práctica 2 5. 7 Modelado de un canal mediante Simulink Simulink es una herramienta complementaria a matlab que permite definir modelos de manera visual. Se puede arrancar de varias maneras, entre otras, dando la orden simulink en la ventana de órdenes de matlab, o con el botón “Simulink” de la barra de herramientas. Del mismo modo que cuando definimos secuencias de órdenes con matlab contamos con una librerı́a de funciones predefinidas, Simulink proporciona librerı́as de bloques funcionales. Los bloques de las librerı́as aparecen representados como iconos. Para usarlos, creamos un nuevo modelo, y los copiamos arrastrándolos con el ratón. En nuestro caso, nos pueden interesar, entre otros muchos, los siguientes componentes: Sources, Sine Wave. Continuous, Transfer Fcn. Blocksets & Toolboxes, Control System Toolbox, LTI. Comm Blockset, Comm Sources. Las propiedades y parámetros de los componentes que se vayan incorporando en los modelos se pueden editar pinchando dos veces sobre los componentes. En el ejemplo de la figura 1, archivo f icom_2apr_ejemplo_canal_simulinkr14.mdl3 , podemos ver el efecto que sobre diversas señales de origen tienen los siguientes elementos: filtro LTI, retardo y ruido (gaussiano, normal o de otras distribuciones). Probar diferentes señales y modificar los parámetros de los componentes (se pueden editar pinchando dos veces en ellos). Para tener una idea del aspecto del modelo completo de un sistema complejo en Simulink, se pueden abrir y analizar las siguientes demos, ambas pertenecientes al bloque de comunicaciones (Botón “Blocksets & Toolboxes”, y después botón “Comm Blockset”): Rayleigh Fading Channel RF Satellite Link 6. Notas 1. En matlab existen muchas funciones que generan señales (funciones) de uso frecuente. Por ejemplo: rectpuls, que genera un pulso rectangular; tripuls, que genera un pulso triangular; square, que genera una señal cuadrada; sawtooth, que genera una señal en diente de sierra; y otras (gauspuls, pulstran, diric, chirp, etc. En 3 Se proporcionan varios archivos con nombres diferentes (r12,r13,r14) para diferentes versiones de Simulink Dpto. Electrónica y Electromagnetismo Facultad de Fı́sica, Universidad de Sevilla 8 Fı́sica de las Comunicaciones – 2006/2007 – Práctica 2 Figura 1: Ejemplo de modelo de canal en Simulink general, estas funciones admiten parámetros que modifican la forma de la señal a generar. Véase la información que proporciona la orden doc para cualquiera de estas funciones. 2. La orden ltidemo presenta una guı́a práctica sobre definición y manipulación con matlab de sistemas lineales e invariantes en el tiempo. 3. Además de la función tf, existen otras funciones para definir sistemas LTI, como zpk (especificando los ceros, los polos y la ganancia) o ss (modelo estado-espacio). Además, existen funciones para transformar modelos entre diferentes tipos, véase zp2tf, ss2tf, etc. 4. Se dispone de una gran variedad de funciones para obtener representaciones gráficas de filtros: step, impulse, bode, nichols, freqresp y un largo etcétera que queda resumido en la interfaz de ltiview. 5. El “Toolbox” de procesamiento de señales de matlab incluye la demo filtdemo, que representa la transformada de una señal antes y después de pasar por un filtro. ¿Qué se puede deducir sobre el filtro a partir de la gráfica? Otra demo, filtdem, compara gráficamente la respuesta en frecuencia de filtros de tres tipos: YuleWalk, Butterworth y Chebychev. Por último, filtdemo permite comparar variantes de filtros paso de baja, tanto de tipo FIR como de tipo IIR. 6. El Toolbox para diseño de filtros, “Filter Design Toolbox”, ofrece muchas posibilidades que aquı́ apenas hemos utilizado. Dpto. Electrónica y Electromagnetismo Facultad de Fı́sica, Universidad de Sevilla Fı́sica de las Comunicaciones – 2006/2007 – Práctica 2 9 7. Para el tratamiento estadı́stico de señales y errores, matlab dispone de un amplio conjunto de funciones para cálculo estadı́stico en general (véase, por ejemplo, la documentación sobre las funciones mean, std, median). Asimismo, se cuenta con un “Toolbox” especı́fico para cálculo estadı́stico. 8. Para más información sobre canales en matlab, ver el apartado “Channels” de la documentación del “Toolbox” de comunicaciones. En particular, el apartado “Fading Channels” describe el uso de los modelos de Rayleigh y Rician. 9. Los archivos de Simulink, ’.mdl’, no son más que archivos de texto. Se pueden abrir con cualquier editor de textos y comprobar la información que se almacena para representar el modelo visual correspondiente. Para encontrar las descripciones de los bloques, buscar la palabra ’Block’. 7. Referencias [1] Documentation for MathWorks Products, Release 14. http://www.mathworks.com/access/helpdesk/help/helpdesk.shtml [2] GNU Octave Repository Categorical Index. http://octave.sourceforge.net/index/index.html [3] http://www.gts.tsc.uvigo.es/ssd/. Prácticas de la asignatura Señales y Sistemas Discretos, impartida por el Departamento de Teorı́a de la Señal y Comunicaciones de la Universidad de Vigo. [4] Fundamentals of Signals and Systems Using the Web and MATLAB: Online Demos. http://users.ece.gatech.edu/˜bonnie/book/applets.html [5] MathWorks, Inc. Manual de Simulink. http://www.mathworks.com/access/helpdesk/help/toolbox/simulink/ [6] V.K. Ingle y J.G. Proakis. Digital Signal Processing Using MATLAB V.4. PWS Publishing Company. 1997. ISBN: 0-534–93805-1. Dpto. Electrónica y Electromagnetismo Facultad de Fı́sica, Universidad de Sevilla