Download as pdf or txt
Download as pdf or txt
You are on page 1of 159

ENTORNO MATLAB DE SENALES DISCRETAS

By Alicia Espinosa Collado & Esther De Gracia Corrales c

SUBMITTED IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE OF DOCTOR OF PHILOSOPHY AT DALHOUSIE UNIVERSITY HALIFAX, NOVA SCOTIA DECEMBER 1994

c Copyright by Alicia Espinosa Collado & Esther De Gracia Corrales c, 1994

DALHOUSIE UNIVERSITY DEPARTMENT OF MATHEMATICS STATISTICS AND COMPUTING SCIENCE The undersigned hereby certify that they have read and recommend to the Faculty of Graduate Studies for acceptance a thesis entitled Entorno Matlab de Se nales Discretas by Alicia Espinosa Collado & Esther De Gracia Corrales c in partial fulllment of the requirements for the degree of Doctor of Philosophy.

Dated: December 1994

External Examiner:
Victor Lomonosov

Research Supervisor:
Heydar Radjavi

Examing Committee:
Keith Johnson

Tony Thompson

ii

DALHOUSIE UNIVERSITY
Date: December 1994 Author: Alicia Espinosa Collado & Esther De Gracia Corrales c Title: Entorno Matlab de Se nales Discretas

Department: Mathematics Statistics and Computing Science Degree: Ph.D. Convocation: May Year: 1995

Permission is herewith granted to Dalhousie University to circulate and to have copied for non-commercial purposes, at its discretion, the above title upon the request of individuals or institutions.

Signature of Author
THE AUTHOR RESERVES OTHER PUBLICATION RIGHTS, AND NEITHER THE THESIS NOR EXTENSIVE EXTRACTS FROM IT MAY BE PRINTED OR OTHERWISE REPRODUCED WITHOUT THE AUTHORS WRITTEN PERMISSION. THE AUTHOR ATTESTS THAT PERMISSION HAS BEEN OBTAINED FOR THE USE OF ANY COPYRIGHTED MATERIAL APPEARING IN THIS THESIS (OTHER THAN BRIEF EXCERPTS REQUIRING ONLY PROPER ACKNOWLEDGEMENT IN SCHOLARLY WRITING) AND THAT ALL SUCH USE IS CLEARLY ACKNOWLEDGED.

iii

To Adriana and the Stones.

iv

Indice general
List of Figures 1. Introducci on 1.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Metodolog a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3. Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Aspectos b asicos sobre se nales discretas 2.1. Introducci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Denici on y clasicaci on de se nales . . . . . . . . . . . . . . . . . . . 2.2.1. Se nales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2. Clasicaci on de se nales. . . . . . . . . . . . . . . . . . . . . . 2.3. Se nales b asicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4. Operaciones b asicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5. Relaci on entre se nales continuas y discretas . . . . . . . . . . . . . . . 2.5.1. Muestreo de se nales anal ogicas. . . . . . . . . . . . . . . . . . 2.5.2. Teorema de muestreo. . . . . . . . . . . . . . . . . . . . . . . 2.6. Filtrado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6.1. Filtro paso bajo. . . . . . . . . . . . . . . . . . . . . . . . . . 2.6.2. Filtro paso banda. . . . . . . . . . . . . . . . . . . . . . . . . 2.6.3. Filtro paso alto. . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6.4. Filtro elimina banda. . . . . . . . . . . . . . . . . . . . . . . . v
VIII

1 2 3 5 7 7 8 8 8 14 19 26 27 28 30 31 32 33 34

2.7. Codicaci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. Funcionalidades de Matlab para se nales discretas 3.1. Introducci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1. Matlab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2. Caracter sticas del Entorno. . . . . . . . . . . . . . . . . . . . 3.1.3. Salidas y Representaciones . . . . . . . . . . . . . . . . . . . . 3.1.4. Funciones de Matlab . . . . . . . . . . . . . . . . . . . . . . . 3.1.5. Librer as. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.6. Sptool. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. Metodolog a para el tratamiento de se nales discretas en Matlab . . . 3.2.1. Iniciaci on al tratamiento de se nales discretas. . . . . . . . . . 4. Clases y Objetos en Matlab 4.1. Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.1. Propiedades de los objetos. . . . . . . . . . . . . . . . . . . . . 4.1.2. Relaciones entre objetos. . . . . . . . . . . . . . . . . . . . . . 4.2. Clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.1. Relaciones entre clases. . . . . . . . . . . . . . . . . . . . . . . 4.3. Relaci on entre clases y objetos . . . . . . . . . . . . . . . . . . . . . . 4.4. Caracter sticas de la programaci on orientada a objetos . . . . . . . . 4.5. Procedimiento para la creaci on de clases en Matlab . . . . . . . . . . 4.6. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.1. Estructura de datos Polynom. . . . . . . . . . . . . . . . . . . 4.6.2. Funci on Polynom . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.3. M etodo constructor Polynom . . . . . . . . . . . . . . . . . . 4.6.4. M etodos de conversi on para la clase de Polynom . . . . . . . . 4.6.5. Funci on display para la clase Polynom . . . . . . . . . . . . . 4.6.6. La funci on subsref para la clase Polynom . . . . . . . . . . . . 4.6.7. Operadores aritm eticos adaptados para la clase Polynom . . .

34 36 36 36 37 38 39 41 49 51 51 60 60 60 63 63 65 66 67 68 69 69 69 69 71 74 75 77

vi

4.6.8. Preparaci on de funciones para su uso en la clase Polynom

. .

79 82 84 84 85 85 87

4.6.9. Lista de los M etodos de la Clase . . . . . . . . . . . . . . . . . 5. Clase Signal 5.1. Introducci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2. Procedimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1. Obtenci on de la clase. . . . . . . . . . . . . . . . . . . . . . . 5.2.2. Funciones de la clase Signal. . . . . . . . . . . . . . . . . . . .

5.3. Signal.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 5.3.1. Introducci on. . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 5.3.2. Variables de la funci on Signal. . . . . . . . . . . . . . . . . . . 101 5.3.3. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 6. Ejemplos de pr acticas 113

6.1. Ejemplo pr actico 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 6.2. Ejemplo pr actico 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 6.3. Ejemplo pr actico 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 6.4. Ejemplo pr actico 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 6.5. Ejemplo pr actico 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Bibliography 148

vii

Indice de guras
2.1. Representaci on gr aca de se nales continuas(a y c) y discretas (b y d) en el tiempo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Se nal de tiempo continuo (gr aca superior) y se nal de tiempo discreto (gr aca inferior). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3. Se nal anal ogica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4. Se nal digital. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5. Se nales peri odicas (inferior) y no peri odicas (superior). . . . . . . . . 2.6. Ejemplo gr aco de se nales pares e impares. . . . . . . . . . . . . . . . 2.7. Impulso unitario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.8. Escal on unidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.9. Rampa unitaria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.10. Exponenciales discretas. . . . . . . . . . . . . . . . . . . . . . . . . . 2.11. Se nal sinusoide discreta. . . . . . . . . . . . . . . . . . . . . . . . . . 2.12. Reexi on en el eje de tiempos. . . . . . . . . . . . . . . . . . . . . . . 2.13. Escalonamiento de amplitud. . . . . . . . . . . . . . . . . . . . . . . . 2.14. Escalonamiento temporal. . . . . . . . . . . . . . . . . . . . . . . . . 2.15. Desplazamiento en el tiempo. . . . . . . . . . . . . . . . . . . . . . . 2.16. Sistema de tiempo continuo, conversi on anal ogico-digital y digitalanal ogico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.17. M odulo de la respuesta ideal en frecuencia de un ltro digital: a)paso bajo, b)paso alto, c)paso banda y d)elimina banda. . . . . . . . . . . 31 27 11 11 12 13 14 15 16 17 18 19 22 23 23 24 9

viii

2.18. Proceso de conversi on anal ogico-digital, donde la codicaci on es su u ltima etapa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1. Funciones B asicas Sptool . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. Ventana visualizadora para el Dise no de Filtros . . . . . . . . . . . . 3.3. Se nal obtenida con los vectores a y t. . . . . . . . . . . . . . . . . . . 3.4. Se nal obtenida con los vectores a y t. . . . . . . . . . . . . . . . . . . 4.1. Descomposici on del objeto padre en objetos hijos, que pueden ser a su vez objetos base de otros. . . . . . . . . . . . . . . . . . . . . . . . . 4.2. Concepto de herencia en la clase Guitarra, con las caracter sticas generales y su evoluci on. . . . . . . . . . . . . . . . . . . . . . . . . . 4.3. Ejemplo de clase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4. Representaci on de un polinomio de la clase polynom. . . . . . . . . . 5.1. Representaci on de se nales discretas mediante la clase Signal. Funci on que permite representar, tiene como nombre Display. . . . . . . . . . 89 5.2. Senial x. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 5.3. Senial x. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 5.4. Senial x. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 5.5. Senial x. bienvenida.wav . . . . . . . . . . . . . . . . . . . . . . . . 110 5.6. Senial x. archivo.wav . . . . . . . . . . . . . . . . . . . . . . . . . . 112 6.1. Representaci on de la se nal original x[n] (azul) y la se nal desplazada dos posiciones y[n] (rojo). . . . . . . . . . . . . . . . . . . . . . . . . 115 6.2. Se nal original A[n]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 6.3. Se nal A[n] desplazada cinco posiciones en el tiempo. . . . . . . . . . . 118 6.4. Se nal A[n] desplazada cinco posiciones y comprimida en un factor 3. . 118 6.5. Representaci on de las se nales de entrada x[n] (azul) e y[n] (rojo) y la se nal resultante z[n] (verde). . . . . . . . . . . . . . . . . . . . . . . . 121 6.6. Se nal A[n], con fm=100 (Hz). . . . . . . . . . . . . . . . . . . . . . . 122 64 65 83 61 35 49 50 53 57

ix

6.7. Se nal B[n], con par ametro fm vac o. . . . . . . . . . . . . . . . . . . . 123 6.8. Se nal resultante C[n], con fm=100Hz. . . . . . . . . . . . . . . . . . . 124 6.9. Se nal D[n], resultante de la divisi on con fm=100Hz. . . . . . . . . . . 124 6.10. Representaci on de las se nales de entrada x[n] (azul) y h[n] (verde), y la se nal tras la convoluci on y[n] (rojo). . . . . . . . . . . . . . . . . . 128 6.11. Se nal original S[n], con fm=200Hz y de tipo sonido. . . . . . . . . . . 129 6.12. Se nal original Z[n], con fm=200Hz de tipo sonido. . . . . . . . . . . . 130 6.13. Se nal resultante P[n]. . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 6.14. Se nal U[n]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 6.15. Se nal original A, perteneciente al chero audio.wav. . . . . . . . . . . 133 6.16. Respuesta del ltro paso bajo en el tiempo. . . . . . . . . . . . . . . . 135 6.17. Respuesta del ltro paso bajo normalizado (verde) y respuesta ideal del ltro (azul). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 6.18. Se nal C ltrada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 6.19. Respuesta del ltro paso alto en el tiempo. . . . . . . . . . . . . . . . 137 6.20. Respuesta del ltro paso alto normalizado (verde) y respuesta ideal del ltro (azul). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 6.21. Se nal E ltrada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 6.22. Respuesta del ltro paso banda en el tiempo. . . . . . . . . . . . . . . 140 6.23. Respuesta del ltro paso banda normalizado (verde) y respuesta ideal del ltro (azul). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 6.24. Se nal H ltrada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 6.25. Respuesta del ltro elimina banda en el tiempo. . . . . . . . . . . . . 142 6.26. Respuesta del ltro elimina banda normalizado (verde) y respuesta ideal del ltro (azul). . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 6.27. Se nal L ltrada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 6.28. Proceso de codicaci on de una se nal. . . . . . . . . . . . . . . . . . . 144 6.29. Se nal original A perteneciente archivo entrada.wav. . . . . . . . . . 145 6.30. Se nal digitalizada C . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

Indice de guras

xi

Cap tulo 1 Introducci on


El principal concepto de este proyecto, es el tratamiento de se nales discretas. En los u ltimos a nos el tratamiento de se nales discretas se ha incrementado, lo que produce grandes investigaciones sobre dicho tema. El tratamiento de se nales posee una larga y rica historia. Es una de las tecnolog a que se relaciona con un inmenso conjunto de disciplinas entre las que se encuentra el ocio, las comunicaciones, la exploraci on del espacio, la medicina y la arqueolog a, por nombrar s olo algunas. Existe un amplio conjunto de sistemas donde son de especial importancia algoritmos sosticados en hardware para tratamiento de se nal. Aunque de forma rutinaria vemos como cotidianas prestaciones de sistemas de entretenimiento dom estico, como la televisi on o el equipo de audio de alta delidad, est an fuertemente basados en el estado del arte del tratamiento de se nales. Hoy en d a, esta armaci on es incluso m as cierta con el nacimiento de la televisi on avanzada y de los sistemas de informaci on y entretenimiento multimedia. Es m as, a medida que los sistemas de comunicaci on se van convirtiendo cada vez m as en sistemas sin hilos, m oviles y multifunci on, la importancia de un tratamiento en se nales sosticado en dichos equipos contin ua creciendo. El software utilizado para la implementaci on de se nales discretas, en este proyecto es MATLAB. Es un programa de an alisis num erico creado por The MathWorks en 1984. Permite implementar se nales discretas utilizando una programaci on compleja,que impide en algunos casos poder trabajar libremente con la se nal. Por otra parte MATLAB, plataforma computacional de amplia cobertura, incluye una interfaz gr aca interactiva (SPTool) en la que se puede analizar y manipular se nales digitales, ltros y espectros, sin necesidad de usar programaci on. Ante la revoluci on que est a causando el tratamiento de se nales, se nos plantea un nuevo problema, que aparece casi inevitablemente. Dicho problema, es la forma en que los usuarios enfrentan una nueva herramienta, muchas veces por lo complejo o tedioso que resulta trabajar con un manual ya sea en la programaci on o dise no, 1

los cuales casi siempre dirigidos a gente m as experimentada, resultando frustrante en muchos casos a los estudiantes. Por esta raz on, resulta imperativo el desarrollo de utilidades de ndole eminentemente did acticas que faciliten el manejo y la asimilaci on de los conceptos fundamentales de esta materia y a su vez puedan implementar sin dicultad los esquemas propuestas. Por eso, el principal objetivo de este trabajo est a dirigido, pues, a la creaci on de una herramienta de pr acticas simple de usar e interactiva, que permita al estudiante y/o usuario que pretenda iniciarse en esta materia, la implementaci on de algoritmos b asicos de procesamiento de se nales sobre una clase, SIGNAL, de una manera f acil e intuitiva, sin necesidad de conocer a profundidad el lenguaje de programaci on del que se dispone. La herramienta a implementar es abstracta, es decir, donde el usuario se dedicar aa investigar la materia sin necesidad de saber programar algoritmos complejos. Todo est a referido a la programaci on interna, est a de manera transparente en la herramienta. La nalidad del proyecto, es que el tratamiento de se nales en el Laboratorio de Teor a de la se nal sea m as intuitiva. De esta manera el alumno puede adquirir mayores conocimiento de se nales as como que de manera m as r apida se realicen operaciones con dichas se nales.

1.1.

Objetivos

El proyecto tiene como objetivo crear una herramienta b asica, fundamentada en el tratamiento de se nales discretas. Se intenta conseguir que sea una herramienta intuitiva y transparente, es decir que al usuario le resulte factible su manejo y que no visualice el funcionamiento de la herramienta. Debe de ser una herramienta simple de usar e interactiva m aquina-hombre.De esta manera, se pueden realizar diversas operaciones sin necesidad de tener que programar toda la funci on. Una aplicaci on clara y de la cual vamos a hablar en este proyecto, es de la utilizaci on en el Laboratorio de Teor a de la Se nal. El objetivo principal y que llev o a la realizaci on de la herramienta, fue el uso de se nales a bajo nivel en el Laboratorio de Teor a de la Se nal. Con esta herramienta, se intenta que el alumno pueda adquirir mayores conocimiento sobre se nales. La herramienta va a tratar diferentes problemas que existen en Matlab con se nales discretas e intenta solventar todos ellos. En el Laboratorio de Teor a de la Se nal, como ya se ha iniciado, se trabaja con se nales discretas. La desventaja que se encuentran los estudiante ante este Laboratorio es que para que puedan llegar a realizar operaciones con se nales, previamente tienen que construirlas, incluso hay se nales que no pueden denir debido a la dicultad.

La herramienta intenta solventar este problema y conseguir con una herramienta abstracta que con facilidad de programar que el alumno pueda aprovechar las horas de laboratorio en practicar y aprender sobre el tratamiento de se nales discretas. Se nombra al Laboratorio de Teor a de la Se nal, ya que es un ejemplo de pr actica sobre el que est a basado la herramienta, pero es una herramienta de utilidad para todo aquel que trabaje con el tratamiento de se nales, simplemente hay que aprender a utilizarla y el objetivo de esta memoria es aclarar dicha utilidad. Incluso, se puede utilizar en tipos de laboratorio donde se trabaje con video y audio. Adem as hay que nombrar, que junto con la memoria se incluye un Manual de Usuario. En el Manual de Usuario, se detallan todas las funciones existen y su funcionamiento. De esta manera se permite al usuario, poder trabajar con la clase de una manera r apida e intuitiva. El Manual ofrece al usuario una manera r apida y sencilla de poder aplicar la clase. La Clase Signal, se compone de una funci on inicial, que se encarga de denir el objeto de la clase(se nal discreta) y varias funciones que permiten operar y modicar el objeto. Implementando la clase en Matlab, se consigue una r apida visualizaci on de se nales y modicaci on.

1.2.

Metodolog a

El software utilizado para la implementaci on de la herramienta, es MATLAB. MATLAB es un ambiente de computaci on t ecnica que combina c alculos num ericos, gracaci on avanzada y visualizaci on, y un lenguaje de programaci on de alto nivel. El nombre MATLAB signica MATrix LABoratory y fue originalmente creado para dar un f acil acceso al software de algebra lineal num erica desarrollado por los proyectos LINPACK y EISPACK, los cuales representan el estado del arte del software en el campo de los m etodos num ericos. Las caracter sticas de MATLAB por las que se le considera una herramienta importante para el desarrollo de modelos computacionales en ciencias de la tierra son: 1. Continuidad entre el tipo de datos. Esto signica que no hay conicto entre la combinaci on de datos enteros, reales y complejos. De forma interna todos los datos se manejan como reales en doble precisi on, lo cual hace m as exactos todos los c alculos. umeros de punto otante. Esto signica que el 2. Mayor amplitud del intervalo de n alculos intervalo de n umeros positivos [x min , x max ] que pueden usarse en los c es mayor. En una PC- Pentium III el intervalo es [4.5 e-324 , 9.9 e+307]. atica. MATLAB contiene m as de 500 funciones 3. Amplia biblioteca matem matem aticas cuyos argumentos pueden ser arreglos.

4. Herramientas integradas de gracaci on , visualizaci on de datos y programaci on. 5. Transportabilidad de los programas y vinculaci on con los lenguajes C y FORTRAN. Esto signica que los programas desarrollados son independientes de la plataforma de hardware, adem as de que es posible establecer comunicaci on entre programas desarrollados en MATLAB y rutinas de los lenguajes C o FORTRAN. El concepto principal y sobre el que est a basado la herramienta, es la implementaci on de Clases en Matlab. Para realizar la herramienta lo primero que se ha tenido en cuenta es la estructura y procedimiento de las Clases. La Programaci on Orientada a Objetos es un paradigma de programaci on que dene los programas en t erminos de clases de objetos, objetos que son entidades que combinan estado (es decir, datos), comportamiento (esto es, procedimientos o m etodos) e identidad (propiedad del objeto que lo diferencia del resto). La programaci on orientada a objetos expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas y m odulos m as f aciles de escribir, mantener y reutilizar. Las clases son declaraciones o abstracciones de objetos, lo que signica, que una clase es la denici on de un objeto. Cuando se programa un objeto y se denen sus caracter sticas y funcionalidades, realmente se programa una clase. Una clase es un conjunto se puede decir de varias cosas entre ellas las que est an: las variables o propiedades miembro, las propiedades y las funciones o m etodos. Habitualmente un programa emplea muchos objetos de la misma clase. Los programadores denen clases, ejemplo: class Car ...detalles ... Y luego crean objetos de las clases denidas: Car miCoche= new Car (...) ; Car cocheDeElisa= new Car (...) ; En el proyecto se ha constuido una clase llamada Signal, es decir, class Signal ...detalles.... Dentro de esta clase est an denidos los objetos, que en este caso son se nales discretas, se naldiscreta= signal(variables). La clase adem as, est a constituida de varias y diferentes funciones que permiten operar y modicar el estado del objeto, as como visualizarlo. Las se nales que maneja la clase son se nales anal ogica(gen erica y de audio) y mediante la codicaci on(funci on que se encuentra en la clase), se puede obtener una se nal digital. Una se nal anal ogica es aquella que puede tomar una innidad de valores (frecuencia y amplitud) dentro de un l mite superior e inferior. El t ermino anal ogico proviene de an alogo. Por ejemplo, si se observa en un osciloscopio, la forma de la se nal el ectrica en que convierte un micr ofono el sonido que capta, esta ser a similar a la onda sonora

que la origin o. En cambio, una se nal digital es aquella se nal cuyos valores (frecuencia y amplitud) no son continuos sino discretos, lo que signica que la se nal necesariamente ha de tomar unos determinados valores jos predeterminados. Estos valores jos se toman del sistema binario, lo que signica que la se nal va a quedar convertida en una combinaci on de ceros y unos, que ya no se parece en nada a la se nal original. Precisamente, el t ermino digital tiene su origen en esto, en que la se nal se construye a partir de n umeros (d gitos). Por u ltimo, otro programa utilizado en la metodolog a ya no de la realizaci on del proyecto, sino de la documentaci on del mismo, ha sido el procesador de texto LATEX. Es de gran potencialidad en el manejo de f ormulas matem aticas, cuadros y tablas. Los archivos de LaTeX tienen la terminaci on .tex es decir un documento escrito en Latex debe estar contenido en un archivo cuya extensi on sea .tex, por ejemplo informe.tex. El procesador de texto LaTex funciona como un lenguaje de programaci on, el texto es un programa fuente que se compila, el resultado de la compilaci on es un chero con extensi on .dvi. Tambi en, se puede visualizar en PDF.

1.3.

Memoria

La memoria consta de varias partes. Va a consistir en redactar todo lo que hemos realizado antes de llegar al nal del proyecto. Con ella vamos a intentar explicar y aclarar en que consiste el proyecto y para que sirve. Con la distribuci on que asignada a la memoria se intenta punto a punto conseguir explicar todo el proceso. La memoria consta de varias partes, en la que se cuenta con teor a necesaria para la implementaci on de la herramienta, como con ejemplos pr acticos que le har a al usuario una lectura y una comprensi on m as amena e intuitiva. La memoria se ha dividido en siete cap tulos. Se puede decir que la memoria est a dividida en dos partes bien diferenciadas, una primera parte, intenta aclarar el por qu e se ha realizado el proyecto y que aspectos desarrolla(Cap tulos 2 y 3) y una segunda parte de la memoria se dedica a explicar el proyecto y la realizaci on del mismo(Cap tulos 4,5 y 6). Un primer cap tulo, en el que se plasma la introducci on del proyecto. En la introducci on se tratan temas bien diferenciados como son: al es la nalidad del proyecto y que se intenta El objetivo del proyecto. Cu conseguir. a seguida. Que programas han sido utilizado, como y por La metodolog qu e. La teor a o fundamentos sobre los cuales se basa el proyecto.

Esta parte que se est a leyendo en estos instantes, la memoria, como se ha estructurado el proyecto. En el segundo cap tulo, se comenta de manera explicativa la teor a de las funciones y se nales sobre las que se basa la herramientas, es decir, teor a dedicada al tratamiento de se nales. Para su aplicaci on y el trabajo con se nales, previamente se debe de saber todo lo referido al tema. Consta de varios apartados, referidos a distintas cuestiones sobre el tratamiento de se nales y sus aplicaciones. En el tercer cap tulo, se explica todo lo referente al software utilizado Matlab. Est a dividido en dos apartados, uno primero de teor a de Matlab y sus aplicaciones y librer as. Un segundo cap tulo en el que se muestra como se representan las se nales en Matlab y la soluci on a la que se quiere llevar. Como ya se ha iniciado con anterioridad, estos dos cap tulos muestran un poco la teor a de tratamiento de se nales. El cuarto cap tulo, se basa en la explicaci on te orica de clases y objetos, ya que son conocimientos esenciales para entender la construcci on de la clase Signal. Este capitulo esta divididos en varios apartados en los que se comentan los siguientes puntos: qu e es una clase y un objeto?, su utilizaci on y un ejemplo pr actica que ayuda al usuario a entender la construcci on de la clase a tratar. El quinto cap tulo es esencial, comenta la Clase Signal. En este cap tulo se ha intentado explicar de la mejor manera posible como se constuye y que contenido la forman. Se divide en varios apartados: un apartado de introducci on que explica para que sirve y el por qu e de la clase. Un segundo apartado en el que se detalla todo el procedimiento seguido y se visualizan sus contenidos y un tercer apartado en el que se observa la funci on principal y ejemplos pr acticos sobre la clase. En el sexto cap tulo se muestran varias pr acticas realizadas mediante Matlab y compar andola con su realizaci on en la clase signal. Este cap tulo es bastante aclaratorio para la utilizaci on de la Clase. En el s eptimo y u ltimo cap tulo se comentan todas las conclusiones obtenidas y pr oximas propuesta para mejorar la clase as como su utilizaci on. Todos los cap tulos se han redactado de una forma clara y concisa para que el usuario en todo momento pueda saber de lo que se intenta explicar y del tema que se esta tratando.

Cap tulo 2 Aspectos b asicos sobre se nales discretas


Este Proyecto se centra en las cuestiones relacionadas con la creaci on en MATLAB de un entorno para se nales discretas, pero antes se explicaran algunos conceptos b asicos sobre dichas se nales. En este cap tulo se inicia la descripci on y representaci on matem atica de se nales discretas, y mediante el uso de estas representaciones se desarrollar an alguno de los conceptos m as importantes involucrados en el an alisis de se nales. De este modo se lograr a alg un conocimiento sobre las propiedades de las se nales y acerca de sus representaciones.

2.1.

Introducci on

Se sabe que los sistemas de comunicaci on el ectrica son los que han tenido m as exito debido a que logran la mayor eciencia al transmitir mas informaci on a mayores distancias. La base de estos sistemas son las se nales el ectricas que , aunque generalmente dependen del tiempo, puede ocurrir que la variable independiente sea otra, por ejemplo en una imagen ja existen dos variables independientes. Originalmente la mayor a de las se nales que se deseaban transmitir de un lugar a otro eran de tiempo continuo; las aplicaciones de se nales de tiempo discreto tuvieron sus or genes en el an alisis num erico, la estad stica y el an alisis de series temporales. Sin embargo la 7

aparici on de los ordenadores que ofrecieron mayores velocidades de procesamiento, y el desarrollo de dispositivos de almacenamiento de alta densidad, impulsaron la discretizaci on y digitalizaci on de las se nales. Las principales ventajas del procesamiento digital de se nales radican en que al limitarse el n umero de s mbolos a manejar, el procesamiento se realiza m as r apido y f acil adem as de fortalecerse el proceso frente al ruido.

2.2.
2.2.1.

Denici on y clasicaci on de se nales


Se nales.

Las se nales se representan matem aticamente como funciones de una o m as variables independientes que contienen informaci on acerca de la naturaleza o comportamiento de alg un fen omeno. Como ejemplos de se nales se tienen: La variaci on de la intensidad electromagn etica que llega a una antena receptora, la variaci on de la temperatura m axima tomada diariamente o los colores de una imagen digitalizada (pixels). Designaremos las se nales mediante s mbolos tales como las letras u, x o y; entre otras. Las se nales que aparecen con m as frecuencia son las que tienen al tiempo como variable independiente y se las denomina se nales dependientes del tiempo, tanto continuo como discreto. Dado que una se nal es, simplemente, una funci on ordinaria de una o m as variables, el valor en el instante t de una se nal que depende del tiempo (considerando t como u nica variable independiente) se representa como X (t).

2.2.2.

Clasicaci on de se nales.

Seg un la caracter stica a tratar, las se nales se pueden dividir en varios grupos. Estos se enumeran a continuaci on: De acuerdo a la certidumbre de su descripci on: Se nal determinista: aquella que puede ser representada matem aticamente de forma expl cita, y de esta forma sus valores futuros son perfectamente

Figura 2.1: Representaci on gr aca de se nales continuas(a y c) y discretas (b y d) en el tiempo.

10

predecibles. No hay incertidumbre en cuanto a su valor en cualquier tiempo, debido a que tiene una funci on de tiempo bien denida. Se nal aleatoria: aquella cuyo valor depende, en mayor o menor medida, del instante en el que se encuentra. No pueden ser denidas mediante f ormulas expl citas con cierto grado de precisi on. Este tipo de se nales son de particular utilidad para los procesos de comunicaciones. De acuerdo a las caracter sticas de la variable independiente que,generalmente, es el tiempo: Las se nales de tiempo continuo son aquellas cuya variable independiente es continua y, por tanto, est a denida para un conjunto continuo de valores de dicha variable. Dicho de otro modo, son aquellas cuya variable independiente pertenece al conjunto de los n umeros reales. Las se nales de tiempo discreto poseen solo denici on para una sucesi on discreta de valores, esto es, su variable independiente pertenece al conjunto de los n umeros enteros. Una aclaraci on de inter es es que esta clasicaci on no tiene nada que ver con el concepto de continuidad matem atica. Una se nal de tiempo continuo puede presentar discontinuidades o no. De acuerdo a la naturaleza de la amplitud: Del estudio de los posibles valores que puede tomar la se nal surge otro tipo de clasicaci on independiente de la anterior. Una se nal anal ogica es aquella que adem as de ser continua en tiempo es de amplitud continua. Puede ocupar cualquier nivel de amplitud en un intervalo continuo. La mayor a de las se nales producidas por sistemas puramente f sicos son de este tipo. Si el conjunto de valores que adopta la se nal pertenece a un conjunto discreto de valores, estaremos en el caso de una se nal discreta o muestreada. La amplitud de la se nal puede ser continua o discreta. Una se nal discreta con amplitud discreta se llama se nal digital. Este tipo de se nales es el de uso m as frecuente en los sistemas electr onicos, ya que son las u nicas capaces de ser almacenadas en ordenadores.

11

Figura 2.2: Se nal de tiempo continuo (gr aca superior) y se nal de tiempo discreto (gr aca inferior).

Figura 2.3: Se nal anal ogica.

12

Figura 2.4: Se nal digital. De acuerdo a su periodicidad o no: nales peri odicas: tienen una unidad m nima de repetici on. Satisfacen la Se condici on f (t) = f (t + kT ) para todo valor de k entero, con periodo T . El periodo T en su valor m as peque no es el periodo fundamental. En el caso discreto ocurre lo mismo, pero en lugar de T como periodo existen N periodos discretos. F = 1 (Hz ), T = 2 (rad/s) T (2.2.1)

Se nales aperi odicas: aquellas que no cumplen las condici on de f (t) = f (t + kT ) en el caso continuo, o f (n) = f (n + kN ) en discreta. De acuerdo a su dimensi on: nales unidimensionales: aquellas que dependen de una u nica variable Se t3 independiente como, por ejemplo, X (t) = te , donde t es la variable temporal. Se nales M-dimensionales: aquellas que poseen una dependencia con M dimensiones como, por ejemplo, la iluminaci on de una imagen de televisi on. De acuerdo a la potencia o energ a: De energ a: aquella en que la energ a total de la se nal est a bien denida (es nita), esto es, que satisface la expresi on 2.2.2:

13

Figura 2.5: Se nales peri odicas (inferior) y no peri odicas (superior).

0<E<

(2.2.2)

De potencia: se nal en la que la potencia promedio est a bien denida, esto es, que satisface la expresi on siguiente (2.2.3): 0<P < Seg un la simetr a: Esta clasicaci on se origina a partir de la respuesta de las se nales a una transformaci on de reexi on. nales pares: una se nal es par si verica que la reexi on de ella misma Se es la propia se nal. Matem aticamente, se expresa en la forma x(t) = x(t) para se nales continuas y x[n] = x[n] para se nales discretas. Se nales impares: una se nal es impar si su reexi on produce una se nal invertida de la original. Para funciones continuas, la condici on queda como x(t) = x(t) y para se nales discretas x[n] = x[n]. Una propiedad de particular utilidad referente a esta clasicaci on es que cualquier se nal, sea par, impar o incluso que no pertenezca a ninguno de los dos grupos, puede ser expresada en forma de suma de una se nal par y una impar. Se nales reales y complejas: (2.2.3)

14

Figura 2.6: Ejemplo gr aco de se nales pares e impares. Una se nal es real si el conjunto de valores que puede adoptar (sea continuo o discreto) pertenece exclusivamente al conjunto de los n umeros reales, es decir, su parte imaginaria es cero. Si alguno de los valores que puede adoptar la se nal pertenece al conjunto de los n umeros complejos, se esta hablando de una se nal compleja.

2.3.

Se nales b asicas

Existen una serie de se nales elementales en tiempo discreto, al igual que ocurre en tiempo continuo, empleadas en los sistemas discretos. Algunas de ellas se muestran a continuaci on:

Impulso unitario o delta de Dirac: [n] Es una de las se nales discretas m as simples, tambi en conocida como delta de Dirac, se dene como: [n] = 0, para n = 0 [n] = 1, para n = 0 (2.3.1)

15

Figura 2.7: Impulso unitario. Su representaci on gr aca se muestra en las gura 2.7. Las siguientes ecuaciones muestran posibles aplicaciones del impulso unitario para modicar otras se nales. x(n) (n) = x(0) (n) x(n) (n n0 ) = x(n0 ) (n n0 )

(2.3.2) (2.3.3) (2.3.4)

x(n) =
k=

x(k ) (n k )

Escal on unidad: u[n] Esta funci on se puede denir por partes: u[n] = 0, para n<0 u[n] = 1, para n 0 (2.3.5)

Tambi en se puede denir en funci on del impulso unitario :

u[n] =
k=0

(n k )

(2.3.6)

16

Figura 2.8: Escal on unidad. Adem as se puede establecer una relaci on entre el escal on unitario y el impulso unitario que se representa en la siguiente ecuaci on: [n] = u[n] u[n 1] (2.3.7)

En la gura 2.8 se puede observar esta se nal.

Rampa unitaria: r(n) Esta se nal se dene como: r(n) = n, n 0 r(n) = 0, n < 0 (2.3.8)

Tambi en puede denirse en funci on del escal on unitario como:


n1

r(n) =
k=0

u(n k )

(2.3.9)

La rampa unitaria se puede observar en la gura 2.9.

17

Figura 2.9: Rampa unitaria. Exponenciales discretas La siguiente ecuaci on representa una se nal exponencial discreta: x(n) = n (2.3.10)

Seg un el tipo de valor que tome el par ametro , se distinguen los siguientes casos: Caso I : R Para este caso, se consideran adem as las siguientes posibilidades: || > 1 Exponencial creciente|| < 1 Exponencial decreciente (2.3.11) ||> 0 El signo no cambia||< 1 El signo se alterna muestra a muestra (2.3.12) que pueden ser observadas en la gura 2.10. Caso II : C , = ej0 Empleando el teorema de Euler, estas se nales pueden expresarse mediante la suma de una funci on coseno, para la parte real, y una funci on seno para la parte imaginaria. Su expresi on es la siguiente: x(n) = (rej0 )n = ej0 n = cos(0 n) + j sen(0 n) (2.3.13)

18

Figura 2.10: Exponenciales discretas. Caso III : C, = rej0 Se corresponde con la siguiente expresi on: x(n) = (rej0 )n = rn ej0 n = rn (cos(0 n) + j sen(0 n)) (2.3.14)

Sinusoidales Estas se nales son del tipo siguiente: x(n) = Acos(n + ) = 2m N (2.3.15)

donde m y N son enteros. La se nal sinusoidal es peri odica con per odo fundamental N0 . Tanto estas se nales como las exponenciales complejas peri odicas se usan para describir las caracter sticas de muchos procesos f sicos.

19

Figura 2.11: Se nal sinusoide discreta. La respuesta de un circuito LC es senoidal, as como el movimiento arm onico simple de un sistema mec anico que consiste en una masa conectada por un resorte a un soporte estacionario. Las variaciones de presi on ac ustica correspondientes a una sola nota musical son tambi en senoidales.

2.4.

Operaciones b asicas

En esta secci on se muestran las operaciones m as b asicas que se le pueden aplicar a una se nal discreta. Sabiendo que dichas se nales son secuencias de valores discretos que poseen una o varias variables independientes. Para poder realizar operaciones con secuencias, estas deben tener el mismo n umero de muestras. Esto se puede conseguir siempre mediante la t ecnica de a nadir ceros, utilizada en la clase signal. 1. Sumador.

20

Para realizar la suma de dos se nales que den como resultado otra nueva se nal, es necesario que ambas se nales tengan el mismo n umero de elementos que las componen, como ya se ha dicho anteriormente. Esto es debido a que dicha suma se realiza elemento a elemento. Cada elemento es el valor tomado por la amplitud en un determinado instante de tiempo, en el caso en el que las variables dependiente e independiente sean estas respectivamente. La ecuaci on general es la siguiente: y (n) = z (n) + x(n) (2.4.1)

2. Restador. Al igual que ocurre con la suma, para la realizaci on de la resta de dos se nales es necesario que ambas tengan el mismo n umero de ceros. Esto se consigue completando ambas secuencias con ceros, si fuera necesario. La secuencia resultante es la consecuencia de la resta entre las se nales originales utilizadas. Su expresi on general es la siguiente: y (n) = z (n) x(n) (2.4.2)

3. Producto o modulaci on. Esta operaci on consiste en multiplicar los elementos de secuencias originales en los puntos en los que coincidan ambas. Si la variable independiente es el tiempo, se multiplican los valores de las amplitudes de las se nales en esos instantes de tiempo. La expresi on es la siguiente: y (n) = z (n)x(n) (2.4.3)

Una de las aplicaciones de esta operaci on consiste en obtener una secuencia de longitud nita a partir de una secuencia de innitos t erminos. La secuencia nita por la que se multiplicase se denomina ventana y al proceso enventanado.

4. Producto por un escalar.

21

En este caso, en lugar del producto entre secuencias de valores discretos, se realiza el producto de cada elemento de la se nal por un escalar. Por tanto, si se tiene una se nal que var a de forma discreta con el tiempo, la se nal resultante tras el producto ser a la misma pero con un aumento en amplitud indicado por el escalar (A). y (n) = Ax(n) (2.4.4)

5. Divisi on. Esta operaci on se fundamenta en la divisi on elemento a elemento de dos secuencias discretas iniciales. De forma general ser a: y (n) = x(n)/z (n) (2.4.5)

El problema de esta operaci on es que al dividir dos elementos de se nales distintas puede ocurrir que su resultado no sea exacto, dando lugar al denominado resto. Por tanto, los valores de la se nal obtenida pueden tener un cierto grado de error. Ante esto la soluci on ser a tener como resultado dos se nales, una de ellas con la divisi on de las secuencias originales, y la otra con el resto obtenido de cada operaci on. 6. Inversi on temporal o Reexi on en el eje de tiempos. La respuesta a qu e pasar a si la variable de tiempo fuese multiplicada por un valor negativo, es la inversi on en el tiempo. Esta operaci on invierte el eje del tiempo, en otras palabras, cambia la se nal respecto al eje de las ordenadas (2.12). y (n) = x(n) (2.4.6) De esta forma se obtiene una secuencia reejada respecto de n = 0. 7. Escalonamiento de amplitud. Para realizar un escalado de la amplitud de una se nal, esta se pondera por un par ametro a R como se indica en la siguiente ecuaci on: ax(n) (2.4.7)

En funci on de los valores que tome a se producir an los efectos siguientes:

22

Figura 2.12: Reexi on en el eje de tiempos. |a |> 1 : aumenta la amplitud de la se nal. |a |< 1 : disminuye la amplitud de la se nal. a = 0 : anulaci on total de la se nal. En la gura 2.13 se pueden observar estos casos. 8. Escalonamiento temporal. El escalamiento temporal consiste en realizar una compresi on o expansi on del eje temporal. Esto se realiza seg un la siguiente ecuaci on: x(k n) (2.4.8)

Donde, en funci on de los valores que tome el par ametro k R+ , se distinguen los casos de: k > 1 : compresi on de la se nal. k < 1 : expansi on de la se nal. En la compresi on de la se nal, al estar en el caso discreto, se pierden muestras, y en el caso de expansi on se intercalan ceros entre las muestras de la se nal original. En la gura 2.14 se pueden observar estos dos casos. 9. Desplazamiento en el tiempo.

23

Figura 2.13: Escalonamiento de amplitud.

Figura 2.14: Escalonamiento temporal.

24

Figura 2.15: Desplazamiento en el tiempo. Para realizar un desplazamiento en el tiempo hay que aplicarle a la se nal discreta x(n), la modicaci on siguiente: x(n n0 ) (2.4.9)

El par ametro n0 Z determina el desplazamiento y se distinguen los siguientes casos: n0 > 0 : se produce un desplazamiento de la se nal hacia la derecha, es decir se retarda la se nal original. n0 < 0 : se produce un desplazamiento de la se nal hacia la izquierda, o lo que es lo mismo, se adelanta la se nal. n0 = 0 : la se nal original queda inalterada. En la gura 2.15 se puede observar una representaci on gr aca del desplazamiento en el tiempo de una se nal. 10. Convoluci on.

25

En matem aticas y en particular en An alisis funcional, una convoluci on es un operador matem atico que transforma dos funciones f y g en una tercera funci on que en cierto sentido representa la magnitud en la que se superponen, f y una versi on trasladada e invertida de g . La convoluci on de f y g se denota como f g . Es denida como la integral del producto de dos funciones, donde una de ellas ha sido desplazada e invertida: (f g )(t) = f ( )g (t )d (2.4.10)

Haciendo cambio de variable, reemplazando por (t ), se puede ver escrita de la siguiente forma: (f g )(t) = f (t )g ( )d (2.4.11)

Las propiedades de los diferentes operadores de convoluci on son: Conmutativa. (f g ) = (g f ) Asociativa. f (h g ) = (f h) g Distributiva. f (h + g ) = (f g ) + (f h) Asociativa con multiplicaci on escalar. a(f g ) = (af ) g = f (ag ) para todo n umero real o complejo a. La gran importancia de la operaci on de convoluci on radica en el hecho de que la TF de un producto de convoluci on de dos funciones es igual al producto de las TFs de dichas funciones, es decir F f (x) g (x) = F (u)H (u) (2.4.16) (2.4.15) (2.4.14) (2.4.13) (2.4.12)

26

Este resultado denominado Teorema de Convoluci on implica que podemos calcular un producto de convoluci on de dos funciones multiplicando sus correspondientes TF y al resultado aplicarle la TF inversa. En el caso de se nales discretas las distintas longitudes que pudieran tener las sucesiones de puntos de cada una de las funciones son posibles causas de errores en el c alculo nal de la convoluci on, es por ello que ambas funciones han de denirse en una misma cantidad de puntos por cada eje. 11. Potencia. Las expresiones de tipo ak se denominan potencias, esto signica que a se multiplica tantas veces por ella misma como indica k . Lo mismo ocurre con las se nales discretas elevadas a una potencia, se multiplica cada elemento de la se nal por el mismo tantas veces como indica la potencia a la que esta elevada. Esto ocurre elemento a elemento. y (n) = x(n)k (2.4.17) siendo k R. 12. Deconvoluci on. La deconvoluci on se reere a las operaciones matem aticas empleadas en restauraci on de se nales para recuperar datos que han sido degradados por un proceso f sico que puede describirse mediante la operaci on inversa, una convoluci on. Desarrollada por vez primera en el an alisis de medidas s smicas, encuentra en la actualidad amplia aplicaci on en muchos otros campos, como el de la optica.

2.5.

Relaci on entre se nales continuas y discretas

En muchas aplicaciones se logra una ventaja signicativa en el procesamiento de una se nal de tiempo continuo al convertirla primero en una se nal de tiempo discreto y despu es de procesarla convirti endola de nuevo en una se nal de tiempo continuo. El procesamiento de la se nal de tiempo discreto puede realizarse entonces con un ordenador general o de prop osito especial, con microprocesadores o con cualquiera de los dispositivos dise nados para el procesamiento de se nales de tiempo discreto.

27

Figura 2.16: Sistema de tiempo continuo, conversi on anal ogico-digital y digitalanal ogico. En t erminos generales, este enfoque del procesamiento de las se nales de tiempo continuo puede verse como la conexi on en cascada de tres operaciones como se indica en la gura 2.16 donde xc (t) e yc (t) son se nales de tiempo continuo y x[n] e y [n] son las se nales de tiempo discreto que representan a xc (t) e yc (t). El conjunto total del sistema representado en la gura 2.16 es un sistema de tiempo continuo, ya que su entrada y su salida son se nales de tiempo continuo. El fundamento te orico que explica el proceso de conversi on de una se nal de tiempo continuo a una de tiempo discreto y la reconstrucci on de una se nal de tiempo continuo a partir de su representaci on de tiempo discreto, se conoce como teorema de muestreo [2].

2.5.1.

Muestreo de se nales anal ogicas.

Para muestrear se nales anal ogicas se deber an dar algunas condiciones para que no se produzcan p erdidas de informaci on. Seg un el Departamento de Ingenier a Electr onica de la Universidad de Valencia [1], si se considera s olo un muestreo uniforme de la se nal, que es aqu el en que la cadencia de toma de muestras es constante, se

28

puede denir x(n) = xa (nT ), < n < +, donde x(n) es la se nal en tiempo discreto obtenida tomando muestras de la se nal anal ogica xa (t) cada T segundos. As , per odo (o intervalo) de muestreo es el intervalo de tiempo T entre dos muestras y la frecuencia (o velocidad) de muestreo es la inversa del per odo de muestreo (Fm = 1/T [Hz ]). La relaci on de muestreo se puede denir como: t = nT = n Fm (2.5.1)

A continuaci on se muestra la relaci on entre las frecuencias anal ogicas y digitales (F yf ) en una se nal sinusoidal. Para ello, se muestrea la se nal: xa (nT ) x(n) = Acos(2F nT + ) = Acos( Si se compara con x(n) = Acos(2f n + ) (2.5.3) se obtiene: f = F/Fm , que se dene como la frecuencia normalizada o relativa. Equivalentemente se puede expresar = T . En resumen, los rangos anal ogicos, son < F < + o < < +, mientras que los rangos digitales 1/2 < f < 1/2 o < < . De este modo, la diferencia fundamental entre se nales en tiempo continuo y discreto es el rango de valores de las correspondientes frecuencias y los valores m aximos de muestreo vienen dados por los l mites superiores: Fmax = Fm 1 = 2 2T max = Fm = T (2.5.4) 2nF + ). Fm (2.5.2)

La conclusi on fundamental es, por tanto, que el muestreo uniforme puede introducir ambig uedad en la se nal digital obtenida e impone una restricci on esencial: la m axima frecuencia anal ogica que se puede recuperar tras un muestreo de la se nal a Fm es Fmax = Fm /2.

2.5.2.

Teorema de muestreo.

El teorema de muestreo de Nyquist-Shannon, tambi en conocido como teorema de muestreo de Whittaker-Nyquist-Kotelnikov-Shannon o simplemente criterio de Nyquist, es un teorema fundamental de la teor a de la informaci on, de especial inter es en las telecomunicaciones que relaciona a se nales continuas y discretas. H. Nyquist lo postula de la siguiente manera:

29

No es necesario observar todo el tiempo una se nal anal ogica o continua en el tiempo para poder decir cu al es su valor en cualquier momento, aunque la se nal no haya sido observada en ese instante. Es suciente observar sus valores en instantes sucientemente cercanos entre s , para poder reconstruir la se nal de la misma manera que si no se hubiera dejado de observar la se nal en ning un instante. La restricci on es que el tiempo entre las observaciones (t ecnicamente estas se conocen como las muestrasde la se nal) debe ser lo sucientemente peque no para poder captar aun las variaciones m as r apidas. [3]. Nyquist mostr o que, para que se pueda distinguir sin ambig uedad las componentes frecuenciales de una se nal, es necesario que se lleve a cabo el muestreo al menos al doble de la frecuencia m axima contenida en la misma, para evitar los efectos del aliasing (Fm 2 Fmax ). La m axima frecuencia permitida en una se nal para una frecuencia de muestreo dada se denomina frecuencia de Nyquist, como ya se ha comentado. Realmente el Teorema de Nyquist no es tan riguroso, la frecuencia de Nyquist no es necesario q sea el doble de la frecuencia m axima contenida en la se nal, sino el doble del ancho de banda de la se nal de inter es. Este hecho se conoce como Teorema de Nyquist Pasabanda ya que no considera el caso en que las frecuencias se encuentren desplazadas en el espectro una cierta cantidad. Este principio, si bien no es v alido universalmente, s es lo sucientemente general para ser aplicable a una gran cantidad de se nales (las se nales que de alguna manera son de inter es pr actico). Sus implicaciones son muy profundas: por ejemplo, en lugar de tener que guardar toda la evoluci on de una se nal a lo largo del tiempo, es suciente guardar un conjunto de las muestras de la se nal, sin perder la posibilidad de reconstruir toda la se nal a partir de sus muestras. En resumen, demuestra que la reconstrucci on exacta de una se nal peri odica continua en banda base a partir de sus muestras es matem aticamente posible si la se nal est a limitada en banda y la tasa de muestreo es superior al doble de su ancho de banda. El muestreo no debe ser confundido o asociado con la cuanticaci on, proceso que sigue al de muestreo en la digitalizaci on de una se nal y que no es reversible (se produce una p erdida de informaci on en el proceso de cuanticaci on, incluso en el caso ideal te orico, que se traduce en una distorsi on conocida como error o ruido de cuanticaci on y que establece un l mite te orico superior a la relaci on se nal-ruido). Dicho de otro modo, desde el punto de vista del teorema, las muestras discretas de una se nal son valores exactos que no han sufrido redondeo o truncamiento alguno sobre una precisi on determinada.

30

2.6.

Filtrado

En este punto se va a realizar una breve introducci on a los sistemas de ltrado de se nales, por formar parte del conjunto de funciones que completan la clase desarrollada en el proyecto. Sirvi endose de la transformada de Fourier, se puede trabajar con el espectro de una se nal, y sobre el se pueden aplicar diversos ltros para seleccionar y descartar distintas bandas de frecuencias de la se nal. Un ltro es un sistema que, dependiendo de algunos par ametros, realiza un proceso de discriminaci on de una se nal de entrada obteniendo variaciones en su salida. Los ltros digitales tienen como entrada una se nal anal ogica o digital y a su salida tienen otra se nal anal ogica o digital, pudiendo haber cambiado en amplitud, frecuencia o fase dependiendo de las caracter sticas del ltro. Los ltros ideales pueden tener cuatro tipos de respuesta; pasa-baja, pasa-alta, pasa-banda y elimina-banda. Estos se caracterizan por tener transiciones abruptas en la respuesta en frecuencia que se traducen en respuesta impulsionales innitas y no causales; as pues no pueden obtenerse en la pr actica. El objetivo ser a dise nar ltros que se aproximen a esta respuesta ideal. Mientras tanto, los ltros digitales de respuesta impulsional nita e innita, son respectivamente FIR e IIR. El ltrado digital es parte del procesado de se nal digital. Se le da la denominaci on de digital m as por su funcionamiento interno que por su dependencia del tipo de se nal a ltrar, as podr amos llamar ltro digital tanto a un ltro que realiza el procesado de se nales digitales como a otro que lo haga de se nales anal ogicas. El ltrado digital consiste en la realizaci on interna de un procesado de datos de entrada. El valor de la muestra de la entrada actual y algunas muestras anteriores (que previamente hab an sido almacenadas) son multiplicadas por unos coecientes denidos. Tambi en podr a tomar valores de la salida en instantes pasados y multiplicarlos por otros coecientes. Finalmente todos los resultados de todas estas multiplicaciones son sumados, dando una salida para el instante actual. Esto implica que internamente tanto la salida como la entrada del ltro ser an digitales, por lo que puede ser necesario una conversi on anal ogico-digital o digital-anal ogico para uso de ltros digitales en se nales anal ogicas. Los ltros digitales se usan frecuentemente para tratamiento digital de im agenes o para tratamiento del sonido digital. Hay muchas formas de representar un ltro. Por ejemplo, en funci on de (frecuencia digital), en funci on de z y en funci on de n (n umero de muestra). Todas son equivalentes, pero a la hora de trabajar a veces conviene m as una u otra. Como regla general se suele dejar el t ermino a0 = 0.

31

Figura 2.17: M odulo de la respuesta ideal en frecuencia de un ltro digital: a)paso bajo, b)paso alto, c)paso banda y d)elimina banda. Si se expresa en funci on de n, de forma discreta:
N M

y (n) =
k=0

bk x(n k )
k=1

ak y (n k )

(2.6.1)

Los coecientes a y b son los que denen el ltro, por lo tanto para el dise no es necesario calcularlos. En la gura 2.17 se puede observar los cuatro ltros que se describen a continuaci on.

2.6.1.

Filtro paso bajo.

Un ltro paso bajo corresponde a un ltro caracterizado por permitir el paso de las frecuencias m as bajas y atenuar las frecuencias m as altas. De la teor a se obtiene que los ltros est an caracterizados por sus funciones de transferencia, as cualquier conguraci on de elementos activos o pasivos que consigan cierta funci on de transferencia ser an considerados un ltro de cierto tipo. En particular la funci on de transferencia

32

de un ltro paso bajo de primer orden corresponde a: H (s) = K 1 1 + (s/Wc ) (2.6.2)

donde la constante K es s olo una ponderaci on y la real importancia reside en la forma de la funci on de transferencia 1/(1 + (s/Wc )), la cual determina el comportamiento del ltro. Adem as Wc corresponde a la frecuencia de corte, es decir, la frecuencia a partir de la cual el ltro comienza a atenuar la se nal de entrada. Conociendo ya la funci on de transferencia, se puede decir que un ltro anal ogico elemental compuesto por una inductancia (bobina, o choque) es un ltro pasa bajos. Mientras que la ecuaci on de un ltro paso bajo digital de primer orden ser a del tipo siguiente: x(n) + x(n 1) y (n) = (2.6.3) 2 Tambi en es llamado ltro promediador, debido a que promedia las muestras de la entrada y por lo tanto suprime variaciones r apidas, caracter stica que le otorga el car acter de paso bajo (gura 2.17). En la ecuaci on se ve f acilmente que se est a promediando los valores de la se nal en el instante actual y el anterior.

2.6.2.

Filtro paso banda.

Este ltro, como su nombre parece indicar, se queda con una determinada banda de frecuencias de la se nal original; es decir, las frecuencias menores al extremo inferior de la banda seleccionada (frecuencia de corte inferior ), y las frecuencias mayores al extremo superior de dicha banda (frecuencia de corte superior ), son eliminadas de la se nal original. Un circuito simple de este tipo de ltros es un circuito RLC (resistencia, bobina y condensador) en el que se deja pasar la frecuencia de resonancia, que ser a la frecuencia central (fc) y las componentes frecuenciales pr oximas a esta, en el diagrama hasta f1 y f2. Otra forma de construir un ltro paso banda puede ser usar un ltro paso bajo en serie con un ltro paso alto entre los que hay un rango de frecuencias que ambos dejan pasar. Su representaci on se muestra en la gura 2.17.

33

Un ltro ideal ser a el que tiene unas bandas pasante y de corte totalmente planas y unas zonas de transici on entre ambas nulas, pero en la pr actica esto nunca se consigue, siendo normalmente m as parecido al ideal cuando mayor sea el orden del ltro, para medir cuanto de buenoes un ltro se puede emplear el denominado factor Q. En ltros de ordenes altos suele aparecer un rizado en las zonas de transici on conocido como efecto Gibbs. Un ltro paso banda m as avanzado ser a los de frecuencia m ovil, en los que se pueden variar algunos par ametros frecuenciales. Estos ltros tienen aplicaci on en ecualizadores de audio, haciendo que unas frecuencias se ampliquen m as que otras. Otra aplicaci on es la de eliminar ruidos que aparecen junto a una se nal, siempre que la frecuencia de esta sea ja o conocida.

2.6.3.

Filtro paso alto.

Un ltro paso alto (HPF) es un tipo de ltro electr onico en cuya respuesta en frecuencia se aten uan las componentes de baja frecuencia pero no las de alta frecuencia, estas incluso pueden amplicarse en los ltros activos. La alta o baja frecuencia es un t ermino relativo que depender a del dise no y de la aplicaci on. El ltro paso alto m as simple es un circuito RC en serie en el cual la salida es la ca da de tensi on en la resistencia. Si se estudia este circuito (con componentes ideales) para frecuencias muy bajas, en continua por ejemplo, se tiene que el condensador se comporta como un circuito abierto, por lo que no dejar a pasar la corriente a la resistencia, y su diferencia de tensi on ser a cero. Para una frecuencia muy alta, idealmente innita, el condensador se comportar a como un cortocircuito, es decir, como si no estuviera, por lo que la ca da de tensi on de la resistencia ser a la misma tensi on de entrada, lo que signica que dejar a pasar toda la se nal. Por otra parte, el desfase entre la se nal de entrada y la de salida si que var a. Esto se observa en la gura 2.17. El producto de resistencia por condensador (RC ) es la constante de tiempo, cuyo rec proco es la frecuencia de corte, es decir, donde el m odulo de la respuesta en frecuencia baja 3dB respecto a la zona pasante: fc = 1 2RC (2.6.4)

donde f c es la frecuencia de corte en hercios (Hz), R es la resistencia en ohmios () y C es la capacidad en faradios (F).

34

El desfase depende de la frecuencia f de la se nal y ser a: = tan1 fc f (2.6.5)

Una posible aplicaci on de este tipo de ltro ser a la de hacer que las altas frecuencias de una se nal de audio fuesen a un altavoz para sonidos agudos mientras que un ltro paso bajo har a lo propio con los graves. Otra aplicaci on ser a la de eliminar los ruidos que provienen de la red el ectrica (50 o 60Hz) en un circuito cuyas se nales fueran m as altas.

2.6.4.

Filtro elimina banda.

El ltro suprime banda o ltro elimina banda es un Filtro electr onico que no permiten el paso, cuyas frecuencias se encuentran comprendidas entre las frecuencias de corte superior e inferior. Pueden implementarse de diversas formas. Una de ellas consistir a en dos ltros, uno paso bajo cuya frecuencia de corte sea la inferior del ltro elimina banda y otro paso alto cuya frecuencia de corte sea la superior del ltro elimina banda. Como ambos son sistemas lineales e invariantes, la respuesta en frecuencia de un ltro banda eliminada se puede obtener como la suma de la respuesta paso bajo y la respuesta paso alto (hay que tener en cuenta que ambas respuestas no deben estar solapadas para que el ltro elimine la banda que interese suprimir), ello se implementar a mediante un sumador anal ogico, hecho habitualmente con un amplicador operacional. Su representaci on se observa en la gura 2.17.

2.7.

Codicaci on

Se va a realizar una breve introducci on sobre el proceso de codicaci on general de informaci on. La codicaci on es el u ltimo de los procesos que tiene lugar durante la conversi on anal ogica-digital (Figura 2.18). Dicha digitalizaci on (conversi on A/D) consiste b asicamente en realizar de forma peri odica medidas de la amplitud de la se nal y traducirlas a un lenguaje num erico. La conversi on A/D tambi en es conocida por el acr onimo ingl es ADC (analogic to digital conversion ). En esta denici on est an patentes los

35

Figura 2.18: Proceso de conversi on anal ogico-digital, donde la codicaci on es su u ltima etapa. cuatro procesos que intervienen en la conversi on anal ogica-digital: muestreo, retenci on, cuanticaci on y codicaci on. Durante el muestreo y la retenci on, la se nal aun es anal ogica puesto que a un puede tomar cualquier valor. No obstante, a partir de la cuanticaci on, cuando la se nal ya toma valores nitos, la se nal ya es digital. La codicaci on consiste en la traducci on de los valores de tensi on el ectrica anal ogicos que ya han sido cuanticados (ponderados) al sistema binario, mediante c odigos preestablecidos. La se nal anal ogica va a quedar transformada en un tren de impulsos digital (sucesi on de ceros y unos). La codicaci on que se realiza mediante el sistema binario est a basada en el algebra de Boole.

Cap tulo 3 Funcionalidades de Matlab para se nales discretas


El cap tulo consta de una introducci on de Matlab y de su aplicaci on en tratamiento de se nales discretas. Se explica como crear una se nal en Matlab con las funciones propias del programa.

3.1.

Introducci on

El programa con el que hemos trabajado, como ya hemos citado anteriormente, es el Matlab. Hemos utilizado adem as los conceptos Clases y Objetos, que m as adelante explicaremos. Otros conceptos a tratar son los de teor a de la se nal.

3.1.1.

Matlab.

MATLAB nace como una soluci on a la necesidad de mejores y m as poderosas herramientas de c alculo para resolver problemas complejos en los que es necesario aprovechar las amplias capacidades de proceso de datos de grandes computadores. El nombre MATLAB viene de matrix laboratory(laboratorio matricial). MATLAB fue originalmente escrito para proveer acceso f acil al software matricial desarrollado por los proyectos LINPACK y EISPACK, que juntos representan el estado del arte e software para computaci on matricial. Hoy MATLAB es usado en una variedad 36

37

de areas de aplicaci on incluyendo procesamiento de se nales e im agenes, dise no de sistemas de control, ingenier a nanciera e investigaci on m edica. La arquitectura abierta facilita usar MATLAB y los productos que lo acompa nan para explorar datos y crear herramientas personalizadas que proveen visiones profundas tempranas y ventajas competitivas. El Lenguaje de Computaci on T ecnica MATLAB es un ambiente de computaci on integrada que combina computaci on num erica, gr acos y visualizaci on avanzada y un lenguaje de programaci on de alto nivel. El lenguaje exible e interactivo de MATLAB permite a ingenieros y cient cos expresar sus ideas t ecnicas con simplicidad. Los poderosos y amplios m etodos de c omputo num erico y gracaci on, permiten la prueba y exploraci on de ideas alternativas con facilidad. MATLAB es la fundaci on num erica y gr aca para todos los productos de The MathWorks. MATLAB combina computaci on num erica, gr acos 2D y 3D y capacidades de lenguaje en un u nico ambiente f acil de usar. Con su amplio rango de herramientas para modelar sistemas de control, an alisis, simulaci on y procesamiento de prototipos, MATLAB es ideal para desarrollar sistemas avanzados de control. Se puede modelar sistema de control usando las cajas de herramientas para el dise no de controles avanzados de MATLAB - Control System, Robust Control, -Analysis and Synthesis, Model Predictive Control, QTF Control Design y LMI control. Posteriores an alisis y renamientos pueden ser efectuados estableciendo una simulaci on interactiva en Simulink, y luego sintonizar autom aticamente los par ametros usando el Nonlinear Control Design Blockset. Finalmente, se puede generar c odigo C para correr en controladores incrustados con Real Time Workshop. Combinando MATLAB con Signal Processing Toolbox, Wavelet Toolbox y un conjunto de herramientas complementarias, tales como Image Processing, Neural Network, Fuzzy Logic, Statistics y otras, se puede crear un ambiente de an alisis personalizado de se nales.

3.1.2.

Caracter sticas del Entorno.

Caracter sticas de MATLAB: C alculos intensivos desde un punto de vista num erico. Gr acos y visualizaci on avanzada. Lenguaje de alto nivel basado en vectores, arrays y matrices.

38

Colecci on muy u til de funciones de aplicaci on. Toolbox especiales: Se incluyen el Toolbox de se nales y Sistemas ( un conjunto de herramientas para el procesamiento de se nal y para el an alisis de sistemas de cuadro ) y el Toolbox Symbolyc Math ( herramienta de c alculo simb olico basada en Maple V ). Sptool

3.1.3.

Salidas y Representaciones

MATLAB provee acceso inmediato a las caracter sticas gr acas especializadas requeridas en ingenier a y ciencias. Potente gracaci on orientada a objetos gr acos le permite gracar los resultados de su an alisis, incorporar gr acos en sus modelos de sistemas, presentar complejos 3-D objetos, y crear resultados de presentaci on, entre lo cual se destaca: Representaciones 2-D y 3-D, incluyendo datos triangulados y reticulados. Representaciones 3-D quiver, ribbon, y stem. mbolos, sub ndices y super ndices. Control de fuentes, letras Griegas, s Selecci on expandida de s mbolos marcadores de curvas. Gr acos de torta, de barras 3-D y gr acos de barras horizontales. Gr acos 3-D y s olido modelado. Representaci on de im agenes y archivos I/O. Gr acos comentados. Leer/Escribir archivos de datos Hierarchical Data Format (HDF). Presentaci on de OpenGL software y hardware. Animaci on. Display de buer x r apido y exacto.

39

Soporte de colores verdaderos (24-bit RGB). Fuentes m ultiples de luz para supercies coloreadas. Vista basada en c amara y control de perspectiva. Iluminaci on Plana, Gouraud y Phong. Soporte eciente de imagen de datos de 8-bit. Control de eje y c amara. Propiedades de supercie y patch. Modelos de iluminaci on. Control gr aco de objetos. Impresi on y representaci on de copias. Formatos gr acos exportables. Soporte de publicaci on de escritorio.

3.1.4.

Funciones de Matlab

Manipulaci on y Reducci on de Datos. MATLAB tiene un rango completo de funciones para preprocesar datos para an alisis, incluyendo: Secciones de datos. Promediando. Procesando umbrales. Filtrando.

40

Descriptivos Gr acos para explorar y presentar sus datos. Gr acos de prop ositos generales y de aplicaci on espec ca le permiten visualizar al instante se nales, supercies param etricas, im agenes y m as. Todos los atributos de los gr acos de MATLAB son personalizables, desde los r otulos de ejes al angulo de la fuente de luz en las supercies 3-D . Los gr acos est an integrados con las capacidades de an alisis, de modo que se puede mostrar gr acamente cualquier conjunto de datos sin editar, ecuaci on o resultado funcional. I/O Directo de Datos. Se puede ingresar y extraer datos de f MATLAB r apidamente. Las funciones est an disponibles para leer y escribir archivos de datos formateados en MATLAB, llamados archivos MAT. Funciones adicionales ejecutan programas ASCII e I/O binario de bajo nivel desde los archivos de programas M, C, y Fortran, permiti endole trabajar con todos los formatos de datos. MATLAB tambi en incluye soporte incorporado para formatos populares de archivos est andar. Computaci on Simb olica Integrada. Integrando el motor simb olico Maple V con MATLAB, los Symbolic Math Toolboxes le permiten mezclar libremente computaci on simb olica y num erica una sintaxis simple e intuitiva. An alisis de Datos Conable, R apido y Exacto. Los m etodos usados com unmente para an alisis de datos multidimensional generalizados 1-D, 2-D est an incorporados en MATLAB. Interfaces gr acas f aciles de usar, espec cas para aplicaciones, l nea de comando interactiva y herramientas de programaci on estructuradas, que permiten elegir el mejor camino para sus tareas de an alisis. An alisis de Datos para DSP. MATLAB ofrece muchas herramientas para realizar funciones en procesamiento de se nales, tales como Transformadas R apidas Fourier y Transformadas R apidas Inversas de Fourier. La visualizaci on de datos de procesamiento de se nales est a soportada por funciones tales como gr acos stem y periodogramas. El lenguaje de MATLAB, inherentemente orientado a matrices hace que la expresi on de coecientes de ltros y demoras de buers sean muy simples de expresar y comprender. An alisis de Datos en Aplicaciones de Im agenes. MATLAB y la Image Processing Toolbox ofrece un amplio conjunto de herramientas que le permite f acilmente manipular, procesar y analizar datos de im agenes, interactivamente mostrar pantallas de im agenes 2-D o 3-D, visualizar datos temporarios cuando es necesario, y comentar sus resultados para publicaciones t ecnicas. La orientaci on basada en matrices del lenguaje de MATLAB le permite expresar en forma compacta operaciones matem aticas de forma similar a c omo las expresar a sobre

41

papel. Como resultado, es f acil e intuitivo efectuar procesamiento de im agenes y operaciones de an alisis tales como FFTs, ltrado 2-D, morfolog a binaria, manipulaci on geom etrica, conversi on de espacios de colores, compresi on, an alisis de componentes conectados y m as. Algorithm Development(Desarrollo de Algoritmos). A diferencia de C y C++, MATLAB le permite desarrollar algoritmos desde cero o trabajar con interfaces complicadas a bibliotecas externas. Las poderosa fundaci on de computaci on, el lenguaje t ecnico, y cientos de funciones en cajas de herramientas (toolboxes) convierten a MATLAB en lo m as adecuado para aplicaciones matem aticamente intensivas que requieran an alisis de datos, procesamiento de se nales e im agenes, modelado de sistemas o t ecnicas num ericas avanzadas.

3.1.5.

Librer as.

MATLAB cuenta con paquetes de funciones especializadas llamadas toolboxes. Toolbox de Matlab Control system Toolbox, Robust Control Toolbox. Frequency Domain System Identication Toolbox. Fuzzy Logic Toolbox. Higher Order Spectral Analisys Toolbox. Image Processing Toolbox. Model Predective Control Toolbox. Mu Analisis and Synthesis Toolbox. NAG Foundation Toolbox Neural Network Toolbox. Nonlinear Control Design Toolbox. Optimization Toolbox. Quantitative Feedback Theory Toolbox.

42

Signal Processing Toolbox. SIMULINK, SIMULINK Real Time Workshop. Spline Toolbox. Statistics Toolbox. Symbolic Math Toolbox. System Identication Toolbox. Librer as de aplicaciones en MATLAB. Signal Processing Toolbox. MATLAB tiene una gran colecci on de funciones para el procesamiento de se nal en el Signal Processing Toolbox. Este incluye funciones para: An alisis de ltros digitales incluyendo respuesta en frecuencia, retardo de grupo, retardo de fase. Implementaci on de ltros, tanto directo como usando t ecnicas en el dominio de la frecuencia basadas en la FFT. Dise no de ltros IIR, incluyendo Butterworth, Chebyschev tipo I, Chebyshebv tipo II y el ptico. no de ltros FIR mediante el algor tmo optimo de Parks-McClellan. Dise Procesamiento de la transformada r apida de Fourier FFT, incluyendo la transformaci on para potencias de dos y su inversa, y transformada para no potencias de dos. The MATLAB C Math Library La librer a MATLAB C Math Library proporciona al usuario la capacidad computacional de MATLAB. El objetivo principal de la C Math Library es soportar el desarrollo de aplicaciones stand alone utilizando MATLAB y su compilador. Puede ser utilizada independientemente de MATLAB por programadores avanzados en lenguaje C que necesiten prestaciones computacionales robustas y de alto rendimiento.

43

Junto con el compilador de MATLAB, la C Math Library permitir a a los programadores de aplicaciones utilizar MATLAB para la creaci on de aplicaciones stand alone. Para los usuarios cl asicos de MATLAB, se elimina as cualquier necesidad de volver a reescribir algoritmos en lenguaje C para ser utilizada por programas externos. Para aquellos usuarios que sean nuevos en la tecnolog a MATLAB, esta tecnolog a ofrece una nueva v a para la reducci on del tiempo de desarrollo y puesta a punto de aplicaciones. MATLAB C Math Library proporciona una amplia gama de funciones cl asicas del programa MATLAB, como librer as objeto, incluyendo b asicamente las siguientes categor as de funciones presentes en MATLAB y archivos M compilados:

Algebra lineal. Funciones matem aticas elementales y especializadas. ogicos y aritm eticos. Operadores l Matrices elementales y manipulaci on de vectores. Matrices especiales. Estad stica b asica y an alisis de datos. Polinomios e interpolaci on. Gesti on de cadenas de caracteres. Entradas y Salidas. Gesti on de memoria y errores. SYMBOLIC MATH TOOLBOX El Toolbox de Matem atica Simb olica, a nade a MATLAB la capacidad de realizar c alculos simb olicos basados en MAPLE V c soportando adem as (The Extended Symbolic Math Toolbox) las librer as especializadas, y los programas realizados para este u ltimo. Entre otros, los principales tipos de operaciones soportados son los siguientes: olica: Derivaci on, integraci on y simplicaci on de expresiones Algebra simb matem aticas. Algebra lineal exacta: Inversas, determinantes, autovalores y formas can onicas de matrices simb olicas.

44

Aritm etica de precisi on variable: Evaluaci on de expresiones matem aticas con diversos grados de precisi on. Resoluci on de ecuaciones: Resoluci on num erica y simb olica de ecuaciones algebraicas y diferenciales. aticas especiales: Evaluaci on de la mayor a de las fun Funciones matem ciones utilizadas en matem aticas aplicadas. Existen dos versiones del mismo Toolbox. The Basic Symbolic Math Toolbox es una colecci on de m as de 50 funciones MATLAB las cuales permiten acceder al kernel de MAPLE utilizando la sintaxis y el estilo del lenguaje MATLAB. The Extended Symbolic Math Toolbox aumenta esta funcionalidad incluyendo todas las caracter sticas de programaci on de MAPLE, y el acceso a los paquetes de funciones de m as de veinte campos de las matem aticas especiales aplicadas. Es posible utilizar este Toolbox sin conocimiento previos de MAPLE, ya que los archivos contenidos en el son totalmente aut onomos. Sin embargo, si lo que se intenta es obtener toda la potencia de c alculo del entorno, ser a necesario un amplio conocimiento del manejo y la programaci on de MAPLE. Optimization Toolbox El toolbox de optimizaci on consta de un conjunto de funciones que resuelven problemas de extremos, con o sin condiciones, de funciones reales las cuales son generalmente multivariables y no lineales. Asimismo, posee funciones para la resoluci on de algunos tipos de problemas matriciales en extremos. Algunas de las areas b asicas que cubre este toolbox para MATLAB son las siguientes: C alculo de un extremo local (m aximo o m nimo) de una funci on real f(x), en general multivariable y no lineal, sin imponer ninguna restricci on o condici on a la soluci on. Como caso particular, se incluye una rutina especial para problemas de m nimos cuadrados no lineales. C alculo de un extremo local (m aximo o m nimo) de una funci on real f(x), en general multivariable y no lineal, condicionado a que la soluci on satisfaga ciertas condiciones de desigualdad (g(x)=0) y/o igualdad (g(x)=0). Problemas de aproximaci on a un conjunto de objetivos. C alculo de soluciones de un sistema de ecuaciones continuas y, en general, no lineales.

45

Soluci on de problemas minimax. Programaci on lineal. Programaci on cuadr atica. Problemas de m nimos cuadrados no negativos. Image Processing Toolbox Este Toolbox proporciona a MATLAB de un conjunto de funciones que amplia las capacidades del producto para realizar desarrollo de aplicaciones y de nuevos algoritmos en el campo del proceso y an alisis de im agenes. El entorno matem atico y de creaci on de MATLAB es ideal para el procesado de im agenes, ya que estas im agenes son, al n y al cabo, matrices. Este toolbox incorpora funciones para: Dise no de ltros. Mejora y retocado de im agenes. An alisis y estad stica de im agenes. ogicas, geom etricas y de color. Operaciones morfol Transformaciones 2D. El proceso de im agenes es un campo de trabajo absolutamente crucial para aquellos colectivos e industrias que esten trabajando en areas como diagn ostico m edico, astronom a, geof sica, ciencias medioambientales, an alisis de datos en laboratorios, inspecci on industrial, etc. Los programas actuales de procesado y an alisis de im agenes se clasican actualmente en dos categor as: librer as de bajo nivel para programadores profesionales y paquetes de aplicaci on con capacidades limitadas de personalizaci on. Ambos tipos de aplicaciones est an, generalmente, pensados para tareas b asicas de visualizaci on de datos y rendering. El Image Processing Toolbox entra dentro de la categor a de familias de funciones que, desde el entorno de trabajo de MATLAB , permitir a al profesional efectuar una exploraci on exhaustiva y desde un punto de vista matem atico de las im agenes y gr acos que se deseen tratar o analizar. Algunas de las funciones m as importantes incluidas dentro de este toolbox son las siguientes:

46

An alisis de im agenes y estad stica. no de ltros y recuperaci on de im agenes. Dise Mejora de im agenes. Operaciones morfol ogicas. Denici on de mapas de colores y modicaci on gr aca. Operaciones geom etricas. Transformaci on de im agenes. Proceso de bloques. Neural Network Toolbox Este toolbox proporciona funciones para el dise no, inicializaci on, simulaci on y entrenamiento de los modelos neuronales de uso m as extendido en la actualidad: Perceptr on, redes lineales, redes de retropropagaci on, redes de base radial, aprendizaje asociativo y competitivo, aplicaciones autoorganizativas, aprendizaje de cuantizaci on vectorial, redes de Elman y redes de Hopeld. Mediante la inclusi on de un amplio abanico de funciones y procedimientos escritos para MATLAB, el usuario puede utilizar el Neural Network Toolbox para efectuar el dise no de arquitecturas complejas, combinando los modelos que ya est an proporcionados por defecto en el toolbox. Asimismo, el usuario puede denir sus propias funciones de transferencia e inicializaci on, reglas de aprendizaje, funciones de entrenamiento y estimaci on de error para usarlas posteriormente con las funciones b asicas. El toolbox, aporta las facilidades y prestaciones gr acas de MATLAB para el estudio del comportamiento de las redes: visualizaci on gr aca de la matriz de pesos y vector de desplazamiento mediante diagramas de Hinton, representaci on de errores a lo largo del entrenamiento, mapas de supercie de error en funci on de pesos y vector de desplazamiento, etc. Estos gr acos resultan muy u tiles en el estudio de la convergencia y estabilidad de los algoritmos de aprendizaje. Este toolbox incluye un manual de introducci on al campo de las redes neuronales junto con una colecci on de demostraciones y aplicaciones muy did acticas, u tiles para el estudio y la profundizaci on en las cuestiones fundamentales de los paradigmas de redes neuronales b asicos. Dentro de las aplicaciones b asicas de este toolbox, cabe destacar aquellas que est an orientadas al campo de la industria aeroespacial y automoci on (simulaci on, sistemas de control, autopilotaje), banca, defensa (reconocimiento de patrones, procesamiento de se nales, identicaci on de im agenes, extracci on de

47

caracter sticas, compresi on de datos), electr onica (control de procesos, an alisis de errores, modelado no lineal, s ntesis de voz, visi on por ordenador), econom a (an alisis nanciero, an alisis predictivo), industria (control de procesos, identicaci on en tiempo real, sistemas de inspecci on), medicina, rob otica (control de trayectorias, sistemas de visi on), reconocimiento y s ntesis del habla, telecomunicaciones (control de datos e im agenes, servicios de informaci on automatizada, traducci on del lenguaje hablado en tiempo real, diagnosis, sistemas de enrutamiento), etc. El toolbox contiene muchos ejemplos de algunas de estas aplicaciones. NON LINEAR CONTROL DESIGN TOOLBOX Se trata del primer producto comercialmente disponible en la actualidad para el dise no de controladores autom aticos en entornos de sistemas no lineales. El toolbox NCD permite por primera vez a los ingenieros de control dise nar directamente sus controladores en un ambiente no lineal, obviando la aproximaci on lineal y otros procedimientos auxiliares que antes se necesitaban de modo imperativo. Los resultados ahora son de elevada calidad, controladores m as robustos y un ciclo de dise no mucho m as r apido. El usuario puede incluir uno o m as bloques NCD en el sistema y describir posteriormente de modo totalmente gr aco las restricciones, tolerancias y l mites de permisividad de cada uno de estos bloques. Los m etodos avanzados de optimizaci on y la simulaci on del proceso son posteriormente analizados y ajustados mediante la inclusi on de unas ciertas variables de contorno para poder obtener los tiempos de respuesta deseados. Este toolbox puede ser utilizado para ajustar una amplia variedad de controladores que se utilizen en un sistema, destacando los controladores PID, LQR, LQG y estructuras H innito. El toolbox NCD es un componente avanzado del entorno integrado de desarrollo que ofrecen a los especialistas los programas MATLAB y SIMULINK. Por ello, los dise nadores podr an beneciarse de muchos de los toolboxes desarrollados para este entorno en materia de dise no de sistemas lineales. NAG FOUNDATION TOOLBOX Este toolbox proporciona un acceso interactivo, desde dentro de MATLAB, a un amplio conjunto de funciones matem aticas y estad sticas contenidas en las cl asicas NAG Fortran Libraries de la empresa The Numerical Algorithms Group Incorpora m as de 200 archivos M, los cuales cubren un amplio espectro de areas de inter es, entre las que cabe destacar optimizaci on, ecuaciones diferenciales ordinarias y en derivadas parciales, cuadratura, estad stica, etc. La NAG Foundation Toolbox a nade tambi en rutinas concretas para campos espec cos tales

48

como la resoluci on de problemas con condiciones de contorno, problemas de cuadratura adaptativa multidimensional, ajuste de curvas y supercies y el acceso a los algoritmos LAPACK para la resoluci on de ecuaciones lineales. Los nombre de las funciones han sido directamente tomados de las especicaciones de funci on cl asica que a nade The Numerical Algorithms Group para sus librer as. Como resultado de esto, aquellos usuarios de las librer as Fortran de NAG que a la vez sean usuarios de MATLAB, encontraran bastante c omodo acceder a las rutinas NAG utilizando la nomenclatura original. Algunas de las areas de cobertura de la NAG Foundation Toolbox son las siguientes: Ceros de polinomios Ra ces de una o m as ecuaciones de tipo trascendental. Suma de series. Cuadraturas. Ecuaciones diferenciales ordinarias. Ecuaciones diferenciales en derivadas parciales. Estad stica no param etrica. alisis de series temporales. An Rutinas de clasicaci on. on de funciones especiales. Aproximaci Aproximaci on de curvas y supercies. on y minimizaci on de funciones. Maximizaci Factorizaci on de matrices. Valores y vectores propios. Resoluci on de ecuaciones lineales simult aneas. Ecuaciones lineales (LAPACK). Estad stica b asica. An alisis de correlaci on y regresiones. M etodos multivariantes. Generaci on de n umeros aleatorios

49

Figura 3.1: Funciones B asicas Sptool

3.1.6.

Sptool.

En MATLAB el Toolbox de Procesamiento Digital de Se nales incluye una interfaz gr aca interactiva, llamada SPTool, Signal Processing Environment, en la Figura 3.1, se muestran las funciones b asicas de esta. Usando el mouse y los mandos presentes en la pantalla, se puede importar, ver, medir e imprimir se nales digitales; dise nar, ver e implementar ltros digitales; y analizar el contenido espectral de se nales. La asimilaci on de los conceptos se apoya en la modularidad de las aplicaciones, ya que se acent ua la importancia del dise no frente a la dicultad inherente de un lenguaje de programaci on. Presenta cuatro ambientes para el procesado interactivo de se nales: 1. Signal Browser. El cual proporciona una vista gr aca de las se nales dise nadas y seleccionadas con el SPTool, permitiendo su despliegue, medidas, an alisis y la impresi on de estas se nales interactivamente. 2. Filter Designer. Permite crear y editar ltros digitales pasa-bajos, pasa-altos, pasa-banda y rechaza-banda del tipo FIR e IIR, con el algoritmo y longitud

50

Figura 3.2: Ventana visualizadora para el Dise no de Filtros deseada usando las funciones de dise no de ltros del Toolbox de Procesamiento de Se nales. 3. Filter Viewer. Permite ver varias caracter sticas de un ltro que s e a importado o dise nado, incluyendo las respuestas de magnitud y fase, retardo de grupo, plano de polos y ceros, respuesta al impulso y al escal on. 4. Spectrum Viewer. Permite crear, ver modicar e imprimir espectros interactivamente, y realizar an alisis gr aco de datos en el dominio de la frecuencia usando una variedad de m etodos comunes de estimaci on espectral. La herramienta SPtool, permite el ltrado de se nales. Para el dise no e implementaci on de ltros se invoca a la pantalla que aparece en la Figura ??se elige la opci on lt1 y se selecciona Edit Design donde aparece la ventana de la Figura 3.2. En ella se puede elegir: Algoritmo (FIR,...); Tipo (Pasabajo,...); Especicaciones (Banda de Paso, Banda de Rechazo, Ripple, Orden del Filtro,...); Frecuencia de Muestreo, etc. nalmente Aplicar.

51

3.2.

Metodolog a para el tratamiento de se nales discretas en Matlab

Matlab es un programa que procesa se nales. En este cap tulo, mediante ejemplos aplicados en pr acticas de Teor a de la se nal, se ver a los recursos utilizados por Matlab para la resoluci on de problemas con se nales discretas.

3.2.1.

Iniciaci on al tratamiento de se nales discretas.

MATLAB es fundamentalmente un programa para c alculo matricial. Inicialmente se utilizar a MATLAB como programa interactivo, en el que se ir an deniendo las matrices, los vectores y las expresiones que los combinan. Si estos resultados son asignados a otras variables podr an ser utilizados posteriormente en otras expresiones. Para denir una matriz no es necesario establecer su tama no. MATLAB determina el n umero de las y de columnas en funci on del n umero de elementos que se proporcionan. Las matrices se denen por las; los elementos de una misma la est an separados por blancos o comas, mientras que las las est an separadas por pulsaciones intro o por caracteres punto y coma (;). Trabajar en el ambiente de MATLAB es sencillo debido a que la mayor a de los comandos son escritos por el usuario. Las variables se generan al asignarles cierta expresi on: variable = expresi on donde la igualdad puede ser una operaci on, una funci on o bien otra variable. Todas las variables generadas permanecen en la memoria dentro del espacio de trabajo hasta nalizar la ejecuci on de MATLAB. Si u nicamente se le proporciona a MATLAB la expresi on a evaluar, autom aticamente se asigna el resultado a una variable denominada ans. Toda la expresi on se eval ua despu es de teclear return. Representaci on de se nales discretas. En Matlab se barajan distintas posibilidades de obtener una se nal, cre andola por vectores o matrices. Cada posibilidad de obtener una se nal tiene su dicultad puesto que no se puede trabajar libremente con la se nal. Tambi en, est a el inconveniente de la memoria que ocupa. Uno de los objetivos requerido, es obtener un tipo de representaci on con el menor consumo posible. La propuesta elegida es la siguiente debido a la facilidad de trabajo y a la legibilidad del c odigo. El problema de trabajar con se nales en Matlab, es que se tarda bastante tiempo en crearla, y eso diculta que el alumno aprenda sobre el tratamiento de se nales. En este proyecto se intenta solventar este problema. Seguidamente, se ve una clasicaci on de las distintas posibilidades que se dan en teor a de la se nal para la representaci on de se nales. Tambi en se podr a observar un ejemplo de una de las pr acticas de teor a de la se nal con cada uno de los casos. Cada m etodo que se observa intenta mejorar algo del anterior. Los diferentes m etodos son los siguientes:

52

M etodo 1. Para denir la se nal, en este m etodo se utilizan variables. Una variable es un nombre que se da a una entidad num erica, que puede ser una matriz, un vector o un escalar. El valor de esa variable, e incluso el tipo de entidad num erica que representa, puede cambiar a lo largo de una sesi on de MATLAB o a lo largo de la ejecuci on de un programa. La forma m as normal de cambiar el valor de una variable es coloc andola a la izquierda del operador de asignaci on (=). Se usa una variable para denir el vector de tiempo y otra variable para denir el vector de amplitudes de la se nal. Por ejemplo: t=vector de tiempo. a=vector de amplitudes. V ease la aplicaci on en la pr actica. ENUNCIADO. Realizar una funci on que realice el desplazamiento de una se nal de la forma: y[n]=x [n-n0 ] . La funci on debe de tener como entrada una se nal y un desplazamiento y como salida una se nal. 1. Se crea una funci on desplazamiento. function [tsal,a]=desplazamiento(a,ten,no) %valores de entrada son los dos vectores y %el desplazamiento(no). tsal=ten+no; %salida tenemos el vector de tiempo desplaza%do. \item 2. Implementaci on en Matlab. >> t=[6 7 8] t =

>> a=[4 3 2]

53

4 3.5 3 2.5 2 1.5 1 0.5 0

6.5

7.5

Figura 3.3: Se nal obtenida con los vectores a y t. a =

%se aplica la funcion desplazamiento.

>>[t1,a]=desplazamiento(a,t,3)

%si se quiere observar la senial %se aplica la funcion stem, para poder ver %los vectores juntos. Observamos la gr\{a}fica %en la figura 3.3. M etodo 2. En este m etodo se ha utilizado dos vectores que denen dos vectores

54

que pertenecen a una misma variable. De esta manera tendremos un vector de tiempo y otro de amplitud, y podremos observarlo con una variable id entica. Por ejemplo: x.n=vector de tiempo x.a=vector de amplitudes x= n:vector de tiempos. a:vector de amplitudes. V ease la aplicaci on en la pr actica. ENUNCIADO. Realizar una funci on que realice el desplazamiento de una se nal de la forma: y[n]=x [n-n0 ] . La funci on debe de tener como entrada una se nal y un desplazamiento y como salida una se nal. 1. Se crea una funci on desplazamiento. function [x]=desplazamiento(X,n_0) %de valores de entrada se le pasa %toda la variable x. >> y.a=x.a;%las amplitudes se dejan %como est\{a}n. >> y.n=x.n+n_0;%el tiempo se desplaza. on en Matlab. 2. Implementaci >> x.n=[6 7 8];%vector de tiempos. >> x.a=[4 3 2];%vector de amplitudes. >> x= x =

n: [6 7 8] a: [4 3 2]

55

%se aplica la funcion desplazamiento.

>> y=desplazamiento(y,3); >> stem(x.n,x.a)

%En la Figura 3.3

se puede observar la senial.

Este m etodo es mejor que el anterior pero sigue teniendo el inconveniente de tener que crear los dos vectores. etodo 3 . En este m etodo se ha tenido que en las pr acticas de teor a de M la se nal, se desea que la representaci on de las se nales discretas sea general. La se nal puede comenzar en cualquier instante de tiempo. Para realizar esta representaci on se utiliza una soluci on que se indicar a en el siguiente p arrafo. Una se nal x [n] ser a representada mediante dos listas con el mismo n umero de elementos. La primera de ellas corresponde a los valores de amplitudes de la se nal. La segunda de ellas contiene los tiempos asociados a cada valor de amplitud. Por ejemplo: x[n]: Tiempos. x[n]: Amplitudes. Lo que se crea nalmente con estas dos l neas es una matriz, en la que su primera la contiene los tiempos y la segunda la contiene las amplitudes. V ease la aplicaci on en la pr actica. ENUNCIADO. Realizar una funci on que realice el desplazamiento de una se nal de la forma: y[n]=x [n-n0 ] . La funci on debe de tener como entrada una se nal y un desplazamiento y como salida una se nal. 1. Se crea una funci on desplazamiento. function [Y]=desplazamiento(X,n_0) %de valores de entrada se le pasa %toda la matriz X. >> y.a=X(2,:);%las amplitudes se dejan

56

%como est\{a}n. Por lo tanto se iguala a %la segunda fila que es la que %contiene las amplitudes. >> y.n=X(1,:); >> y.no=y.n+n_0;%se desplaza el tiempo. >> Y=[y.no ; y.a]; on en Matlab. 2. Implementaci >> X=[2 1 0 1 2 3 ; 3 4 2 1 2 3]

X =

2 3

1 4

0 2

1 1

2 2

3 3

%se crea la matriz de tiempo y amplitudes. %se llama a la funci\{o}n desplazamientos y %obtenemos los tiempos desplazados.

>> Y=desplazamiento(X,3)

Y =

5 3

4 4

3 2

4 1

5 2

6 3

57

4 3.5 3 2.5 2 1.5 1 0.5 0

3.5

4.5

5.5

Figura 3.4: Se nal obtenida con los vectores a y t. %realizamos la funcion stem, en este caso %a la funci\{o}n desplazada % y podemos observar %la representacion de la senial en la figura 3.4. En este caso, se observa que se ha partido de la creaci on de una matriz, y combinando las las y las columnas podemos operar con la senial. Al igual que en el caso anterior, no se ha ahorrado memoria. M etodo 4 . Para la representaci on de se nales discretas con este m etodo, se utiliza una primera posici on de un vector de celdas para los tiempos x1 y una segunda posici on para las amplitudes x2, es decir, se utiliza un array de celdas. En un array de celdas, el primer elemento puede ser un n umero; el segundo una matriz; el tercero una cadena de caracteres; el cuarto una estructura, etc. Mediante la funci on plot que crea un gr aco a partir de vectores y/o columnas de matrices, con escalas lineales sobre ambos ejes, se realiza la representaci on. Por ejemplo: x1= tiempos

58

x2= amplitudes x= x1 x2 V ease la aplicaci on en la pr actica. ENUNCIADO. Realizar una funci on que realice el desplazamiento de una se nal de la forma: y[n]=x [n-n0 ] . La funci on debe de tener como entrada una se nal y un desplazamiento y como salida una se nal. 1. Se crea una funci on desplazamiento. function [y]=desplazamiento(x,n_0) %de valores de entrada se le pasa %toda la variable x. >> y{2}=x{2};%las amplitudes se dejan %como est\{a}n. >> y{1}=x{1}+n_0;%el tiempo se desplaza. on en Matlab. 2. Implementaci >> x{1}=[1 2 3];%vector de tiempos. >> x{2}=[4 3 2];%vector de amplitudes. >> x= x =

[1x3 double]

[1x3 double]

%se aplica la funcion desplazamiento.

>> y=desplazamiento(x,3); >> stem(x{1},x{2})

59

%En la Figura 3.5 se puede observar la senial. \begin{figure} \begin{center} \includegraphics[height=8cm, width=12cm]{metodo4} \end{center} \caption{Se\~{n}al obtenida con los vectores a y t.} \label{metodo1} \end{figure} En este m etodo se puede decir que se ahorra memoria ya que es un vector de dos posiciones. Se observa que la funci on stem de Matlab no es del todo exacta, por ello hay puntos que no se ven. M etodo 5. Este es un m etodo que a un no ha sido aplicado en la asignatura, ya que la manera para aplicarlo es usar la clase signal. En esta clase se basa el proyecto y mediante ella, se intenta disminuir memoria as como trabajar con m as facilidad. Hay dos maneras que se piensan para la utilizaci on de la clase en pr acticas de teor a de la se nal: 1. Una primera aplicaci on, es crear una se nal con la clase signal, que simplemente es llamar a una funci on en el cuadro de comando y poner las variables que se desee, para que la se nal sea la que se quiere. Y luego trabajar con esa se nal como hasta ahora. En este caso, se ganar a memoria y r apidez, pero a un se adelanta m as aplicando el siguiente. 2. En esta aplicaci on, es usar directamente la clase signal. Es decir, se crear a una se nal con la funci on signal y posteriormente se podr a trabajar con ella aplicando las funciones de la clase. En los pr oximos cap tulos se habla sobre la Clase Signal, su aplicaci on y algunos ejemplo.

Cap tulo 4 Clases y Objetos en Matlab


En este cap tulo se pretende aclarar los conceptos b asicos sobre programaci on oriO entada a objeto, que dene los programas en t erminos de C lases y . bjetos, siendo estos u ltimos entidades que combinan estado (datos), comportamiento (procedimiento o m etodo) e identidad (propiedades de los objetos que lo diferencian del resto). La programaci on orientada a objetos expresa un programa como conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas y m odulos m as f aciles de escribir, mantener y leer.

4.1.

Objetos

Un objeto es una entidad provista de un conjunto de propiedades y atributos (datos) y de comportamiento y funcionalidad (m etodos). Es una representaci on detallada, concreta y particular de un .algo. Tal representaci on determina su identidad, su estado y su comportamiento particular en un momento dado. En la gura 4.1 se puede observar un objeto descompuesto en un conjunto de objetos funcionales. La descomposici on depende de la profundidad y detalles del dise no. La estructura y el comportamiento de objetos similares se denen en sus clases comunes. Es decir, una clase representa a una familia de objetos concretos. Se puede decir adem as, que una instancia de una clase es siempre un objeto en particular.

4.1.1.

Propiedades de los objetos.


60

61

Figura 4.1: Descomposici on del objeto padre en objetos hijos, que pueden ser a su vez objetos base de otros.

62

Identidad de un objeto. La identidad de un objeto le permite ser distinguido de entre otros, y esto se da gracias al nombre que cada objeto posee.

Estado de un objeto. El estado de un objeto abarca todas las propiedades del objeto, y los valores actuales de cada una de esas propiedades. Las propiedades de los objetos suelen ser est aticas, mientras los valores que toman estas propiedades cambian con el tiempo. El hecho de que los objetos tengan estado implica que ocupan un espacio, ya sea en el mundo f sico o en la memoria del ordenador. El estado de un objeto est a inuido por la historia del objeto. Adem as, no deben confundirse los objetos, que existen en el tiempo, son mutables, tienen estado, pueden ser creados, destruidos y compartidos...; con los valores (los asignados a una variable, por ejemplo) que son cantidades con las propiedades de ser atemporales e inmutables. El estado de un objeto representa el efecto acumulado de su comportamiento.

Comportamiento de un objeto. Dene la actuaci on y reacci on de un objeto, en t erminos de sus cambios de estado y de los mensajes que intercambia. El comportamiento de un objeto representa su actividad externamente visible y testable. Son las operaciones que una clase realiza (llamadas tambi en mensajes), las que dan cuenta de c omo se comporta la clase. Por operaci on se denota el servicio que una clase ofrece a sus clientes. Un objeto puede realizar cinco tipos de operaciones sobre otro, con el prop osito de provocar una reacci on: Modicador: altera el estado de un objeto. Selector: accede al estado de un objeto, sin alterarlo. Iterador: permite a todas las partes de un objeto ser accedidas en un orden. Constructor: crea un objeto y/o inicializa su estado. Destructor: libera el estado de un objeto y/o destruye el objeto.

63

4.1.2.

Relaciones entre objetos.

Las relaciones entre objetos abarcan las operaciones, resultados y suposiciones que unos hacen sobre los otros. Links : Son conexiones f sicas o conceptuales entre objetos. Denota la asociaci on espec ca por la que un objeto (cliente) usa o solicita el servicio de otro objeto (servidor). El paso de mensajes entre objetos los sincroniza. Agregaciones : Denota relaciones todo/parte, con capacidad para gobernar desde el todo las partes. Es equivalente a la relaci on tener un. El todo puede contener a la parte. Agregaci on es conveniente en las ocasiones en que el encapsulamiento de las partes es prioritario. Si se requiere que las relaciones entre objetos est en vagamente acopladas, se utilizan links.

4.2.

Clases

Una clase es un conjunto de objetos que comparten una estructura y comportamiento comunes. Representa la abstracci on de objetos, lo que signica, que una clase es la denici on de un objeto. Cuando se programa un objeto y se denen sus caracter sticas y funcionalidades, realmente se programa una clase. Un ejemplo de ello se observa en la gura 4.2. Se podr a decir que una clase es un conjunto de varias cosas, entre ellas est an: las variables o propiedades miembro, las propiedades y las funciones o m etodos. Las propiedades miembro o atributos son caracter sticas de los objetos. Cuando se dene una propiedad normalmente se especica su nombre y su tipo. Se puede decir que las variables son algo as como el almac en de los datos de estado relacionados con los objetos. Habitualmente, las variables miembro son privadas al objeto y se acceden a trav es de m etodos. Sin embargo, las propiedades son un tipo especial de m etodos, siendo estos los encargados de implementar la funcionalidad asociada al objeto. Los m etodos son el equivalente a las funciones en los lenguajes estructurados. Se diferencian de ellos en que es posible acceder a las variables de la clase de forma impl cita. Cuando se desea realizar una acci on sobre un objeto, se dice que se le manda un mensaje invocando a un m etodo que realizar a la acci on.

64

Figura 4.2: Concepto de herencia en la clase Guitarra, con las caracter sticas generales y su evoluci on.

65

Figura 4.3: Ejemplo de clase.

4.2.1.

Relaciones entre clases.

Representan tipos de relaciones sem anticas. 1. Asociaci on. Indica relaciones de mandato en dos direcciones (Punteros ocultos en C++). Conlleva dependencia sem antica y no establece una direcci on de dependencia. Tienen cardinalidad. 2. Herencia. Por esta relaci on una clase (subclase) comparte la estructura y/o comportamiento denidos en una (herencia simple) o m as (herencia m ultiple) clases, llamadas superclases. La herencia es una metodolog a de clases, para que una clase hija pueda heredar las caracter sticas (propiedades y m etodos) de su clase padre. Se aprecia en la gura 4.2. 3. Agregaci on. Representa una relaci on del tipo tener unentre clases. Cuando la clase contenida no existe independientemente de la clase que la contiene se denomina agregaci on por valor y adem as implica contenido f sico, mientras que si existe independientemente y se accede a ella indirectamente, es agregaci on por referencia. on donde se especica cual es el cliente 4. Uso. Es un renamiento de la asociaci y cual el servidor de ciertos servicios, permitiendo a los clientes acceder s olo a

66

las interfaces p ublicas de los servidores, ofreciendo mayor encapsulamiento de la informaci on. 5. Ejemplicaci on. Representa las relaciones entre las clases parametrizadas, que admiten par ametros formales, y las clases obtenidas cuando se concretan estos par ametros formales, ejemplicados o inicializados con un ejemplo. 6. Metaclases. Son clases cuyos ejemplos son a su vez clases. No se admiten en C++.

4.3.

Relaci on entre clases y objetos

Todo objeto es el ejemplo de una clase, y toda clase tiene 0 o m as objetos. Mientras las clases son est aticas, con sem antica, relaciones y existencia jas previamente a la ejecuci on de un programa, los objetos se crean y destruyen r apidamente durante la actividad de una aplicaci on. El dise no de clases y objetos es un proceso incremental e iterativo. Debe asegurar la optimizaci on en los par ametros: Acoplamiento : Grado de acoplamiento entre m odulos. Cohesi on : Mide el grado de conectividad entre elementos de un m odulo, y entre objetos de una clase. Suciencia : Indica que las clases capturan sucientes caracter sticas de la abstracci on para conseguir un comportamiento e interacci on eciente y con sentido. Completitud : Indica que la interface de la clase captura todo el signicado caracter stico de una abstracci on, escrito en el m nimo espacio. Operaciones primitivas : Las operaciones deben implementarse si dan acceso a una representaci on fundamental de la abstracci on. Cu ales son operaciones primitivas y cu ales no (se pueden realizar a partir de otras) es un asunto subjetivo y afecta a la eciencia en la implementaci on.

67

4.4.

Caracter sticas de la programaci on orientada a objetos

Hay un cierto desacuerdo sobre exactamente qu e caracter sticas de un m etodo de o programaci on o lenguaje le denen como . rientado a objetos, pero hay un consenso general en que las caracter sticas siguientes son las mas importantes (algunas ya han sido explicadas con anterioridad): Abstracci on : cada objeto en el sistema sirve como modelo de un .agente.abstracto que puede realizar trabajo, informar y cambiar su estado, y comunicarse con otros objetos en el sistema sin revelar c omo se implementan estas caracter sticas. Los procesos, las funciones o los m etodos pueden tambi en ser abstra dos y cuando lo est an, una variedad de t ecnicas son requeridas para ampliar una abstracci on. Encapsulamiento : tambi en llamado .ocultaci on de la informaci on. Cada objeto esta aislado del exterior, es un m odulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especica c omo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modicaci on por quien no tenga derecho a acceder a ellas, solamente los propios m etodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracci on. La aplicaci on entera se reduce a un agregado o rompecabezas de objetos. Polimorsmo : comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizara el comportamiento correspondiente al objeto que se este usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocaci on de un comportamiento en una referencia producir a el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en tiempo de ejecuci on, esta u ltima caracter stica se llama asignaci on tard a o asignaci on din amica. Algunos lenguajes proporcionan medios m as est aticos (en tiempo de compilaci on) de polimorsmo. Herencia : como ya se ha comentado en l neas anteriores, las clases no est an aisladas, sino que se relacionan entre s , formando una jerarqu a de clasicaci on. Los objetos heredan las propiedades y el comportamiento de todas las clases

68

a las que pertenecen. La herencia organiza y facilita el polimorsmo y el encapsulamiento permitiendo a los objetos ser denidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que reimplementar su comportamiento. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en arboles o enrejados que reejan un comportamiento com un. Cuando un objeto pertenece a m as de una clase se dice que hay herencia m ultiple ; esta caracter stica no est a soportada por algunos lenguajes (como Java).

4.5.

Procedimiento para la creaci on de clases en Matlab

MATLAB dispone de herramientas necesarias para realizar una Programaci on Orientada a Objetos (POO) con muchas de las caracter sticas disponibles en otros lenguajes como C++ y Java. Las variables miembro de una clase son los miembros de una estructura. Las funciones miembro de la clase se denen en un directorio con el mismo nombre de la clase precedido por el car acter @. Dichas funciones pueden ser p ublicas y privadas. A diferencia de C++ y Java, las funciones miembro deben recibir el objeto al que se aplican como uno de los argumentos expl citos, y no mediante el operador punto (.). Existen tambi en los conceptos de herencia y polimorsmo, explicados anteriormente. Todas las funciones que no est an incluidas en el directorio @nombre clase no pueden tener como argumento de entrada los objetos de la clase, pero s pueden hacer que sus argumentos de salida sean variables miembro pertenecientes a dicha clase. Dentro del directorio @nombre clase existe una funci on que convierte una entidad cualquiera en un objeto propio de la clase y que posee el mismo nombre que el directorio pero sin el signo @ ( nombre clase ), es decir, es la propia clase, como ya se ha explicado. Adem as, el resto de las funciones (funciones miembro) en su c odigo llaman al constructor ( nombre clase.m ) para que el nuevo objeto generado pertenezca a dicha clase. Lo mismo ocurre con las funciones que se encuentran fuera de @nombre clase . Para que se puedan visualizar en el cuadro de comandos de MATLAB todos los resultados de las operaciones y los objetos pertenecientes a la clase, dentro de on display. @nombre clase debe existir la funci

69

4.6.

Ejemplos

En este apartado se va a intentar a aclarar algunos de los conceptos explicados en este cap tulo mediante ejemplos de clases propios de MATLAB.

4.6.1.

Estructura de datos Polynom.

Este ejemplo explica una clase en MATLAB llamada polynom. La clase polynom representa un polinomio con un vector la que contiene los coecientes de potencia de la variable, por orden decreciente. Por lo tanto, un objeto p de la clase polynom es una estructura con un solo campo, p.c, que contiene los coecientes. Este campo es accesible solamente dentro de los m etodos en el directorio @polynom.

4.6.2.

Funci on Polynom

Para crear una clase que sea aceptada dentro del entorno de MATLAB y proporcione la funcionalidad u til para un tipo de datos polin omico, la clase polynom lleva a cabo los siguientes m etodos o funciones: Una funci on constructora polynom.m : crea un objeto perteneciente a la clase polynom e inicializa su estado. Un conversor a double para la clase polynom. Un conversor a char para la clase polynom. Una funci on display para poder visualizar los objetos y operaciones de la clase. Una funci on subsref. Operadores +, -, y * aplicados a la nueva clase. Aplicaci on de funciones root, polyval, plot y di a la clase polynom.

4.6.3.

M etodo constructor Polynom

A continuaci on se muestra el constructor de la clase polynom, @polynom/polynom.m.

70

function p = polynom(a) %Construye objetos pertenecientes a la clase polynom. %p = POLYNOM(v) crea un polinomio a partir del vector v,

%que contiene los coeficientes de potencias descendientes de X. if nargin == 0 p.c = []; p = class(p,polynom); elseif isa(a,polynom) p = a; else p.c = a(:).; p = class(p,polynom); end

Sintaxis para las llamada al constructor (polynom.m) Se puede llamar a la funci on del constructor polynom con una de estas tres formas distintas: Sin argumentos de entrada: si se llama a la funci on del constructor sin argumento, esta devuelve un objeto tipo polynom con los campos vac os. El argumento de entrada es un objeto: si se llama a la funci on constructora con un argumento de entrada que sea ya un objeto tipo polynom, MATLAB devuelve el argumento de entrada. La funci on isa comprueba esta situaci on. El argumento de entrada es un vector de coecientes: si el argumento de entrada es una variable que no es un objeto de la clase polynom, sino un vector, se asigna un polinomio cuyos coecientes sean los mismos coecientes de ese vector. La funci on de la clase crea el objeto de tipo polynom, que entonces es devuelto por el constructor.

71

Un ejemplo del uso de la funci on polynom es la declaraci on >> p = polynom([1 0 -2 -5]) Esto crea un polinomio con los coecientes espec cos.

4.6.4.

M etodos de conversi on para la clase de Polynom

Un m etodo del conversor transforma un objeto de una clase en otro de una clase distinta. Dos de los m etodos m as importantes del conversor contenidos en clases de MATLAB son double y char. La conversi on a double produce la matriz tradicional de MATLAB, aunque esto puede no ser apropiada para algunas clases. La conversi on a char es u til para producir salida impresa.

Conversor double para la clase Polynom El m etodo double para la clase polynom es un M-le muy simple, @polynom/double.m, que recupera el vector del coecientes. function c = double(p) % POLYNOM/DOUBLE: Convierte un objeto polynom % en un vector de coeficientes. % c = el DOBLE (p) convierte un objeto polin\{o}mico % en un vector c, que contienen los coeficientes % de potencias descendentes de X. c = p.c; En el objeto p, >> p = polynom([1 0 -2 -5]) la expresion >> double(p)

72

retorna ans = 1 0 -2 -5

La funci on double se puede utilizar en objetos tipo polynom para m etodos de MATLAB que requieran valores doubles como entradas. Por ejemplo, >> size(double(p)) ans = 1 4

Conversor char para la clase Polynom El conversor char es un m etodo dominante porque produce una cadena de caracteres implicando las potencias de una variable independiente, X. Por lo tanto, una vez especicado X, la secuencia retornada es una expresi on correcta de MATLAB desde el punto de vista sint actico, pudi endose entonces evaluar. Esta es @polynom/char.m. function s = char(p) % POLYNOM/CHAR % CHAR(p) es una cadena representada mediante p.c

if all(p.c == 0) s = 0; else d = length(p.c) - 1; s = []; for a = p.c; if a ~= 0;

73

if ~isempty(s) if a > 0 s = [s + ]; else s = [s - ]; a = -a; end end if a ~= 1 | d == 0 s = [s num2str(a)]; if d > 0 s = [s *]; end end if d >= 2 s = [s x^ int2str(d)]; elseif d == 1 s = [s x]; end end d = d - 1; end end

74

Evaluaci on de la salida Si se crea el objeto p perteneciente a polynom >> p = polynom([1 0 -2 -5]); y entonces se realiza una llamada a la funci on char en p >> char(p); MATLAB produce el resultado siguiente ans = x^3 - 2*x - 5 El valor retornado de la funci on char es una secuencia que puede pasar a eval, funci on que obtiene el resultado del polinomio si antes el usuario a determinado el valor escalar de la inc ognita X. Por ejemplo: >> X=3; >> eval(char(p)) ans = 16 Con la funci on subsref de la clase Polynom se puede conseguir un m etodo mejor para la resoluci on de un polinomio.

4.6.5.

Funci on display para la clase Polynom

75

Esta es la funci on @polynom/display.m. Este m etodo conf a en el m etodo char para producir una representaci on de la secuencia del polinomio, que entonces se muestra en la pantalla. Este m etodo produce la salida que es igual que la salida est andar de MATLAB. Es decir, el nombre de la variable se visualiza seguido por un igual, despu es una l nea en blanco y, a continuaci on, una nueva l nea con el valor. function display(p) % POLYNOM/DISPLAY muestra un objeto polynom en

% la ventana de comandos disp( ); disp([inputname(1), = ]) disp( );

disp([ char(p)]) disp( );

La expresi on siguiente crea un objeto de la clase polynom. Al no acabar la declaraci on con un punto y coma (;) se puede visualizar el polinomio como parte de la clase polynom. >> p = polynom([1 0 -2 -5]) p = x^3 - 2*x - 5

4.6.6.

La funci on subsref para la clase Polynom

76

Cuando se accede a un polinomio mediante sub ndices (operador () en Matlab), se evaluar a el polinomio en cada uno de los sub ndices. Suponiendo un polinomio p: >> p = polynom([1 0 -2 -5]); la expresi on siguiente retorna los valores del polinomio para x = 3 y x = 4. >> p([3 4]) ans = 16 51

Implementaci on detallada de subsref Esta implementaci on tiene la ventaja de que la funci on char ya est a denida en la clase polynom produciendo una expresi on que puede ser evaluada. function b = subsref(a,s) % SUBSREF

switch s.type case () ind = s.subs{:}; for k = 1:length(ind) b(k) = eval(strrep(char(a), x, ... [( num2str(ind(k)) )])); end otherwise error(Specify value for x as p(x)) end Una vez m as, la expresi on del polinomio ha sido generada por el m etodo char, la funci on strrep es usada para cambiar el valor por el car acter X. La funci on eval eval ua luego la expresi on y retorna los valores como argumento de salida.

77

Hay que mencionar que si se hace referencia desde otra funci on de la clase, MATLAB incorpora una llamada a subsref o subsassign.

4.6.7.

Operadores aritm eticos adaptados para la clase Polynom

Varias operaciones aritm eticas son signicativas en el entorno de los polinomios y se deben implementar para la clase polynom. Al utilizar operadores aritm eticos, se debe tener presente qu e tipos de datos se desea manejar. En esta secci on, las funciones plus (+), minus (-), y mtimes (*) se denen para que la clase polynom maneje una combinanic on de operandos de la adici on, la substracci on, y la multiplicaci on en polynom/polynom y en polynom/double.

Funci on plus (+) Si cualquiera de las dos, p o q , son polinomios, la expresi on >> p+q genera una llamada a la funci on @polynom/plus.m, si existe. El siguiente archivo.m vuelve a denir al operador + para la clase polynom. function r = plus(p,q) % POLYNOM/PLUS Implementa p+q para

% la clase polynoms. p = polynom(p); q = polynom(q); k = length(q.c) - length(p.c); r= polynom([zeros(1,k) p.c] + [zeros(1,-k) q.c]);

La primera funci on asegura que ambos argumentos de entrada sean polinomios. Esto certica que expresiones tales como p + l implican tanto a polynom como a double,

78

trabajar correctamente. Entonces la funci on tiene acceso a los dos vectores de coecientes y, en caso de necesidad, se rellena con ceros para conseguir la misma longitud. La suma real es simplemente la suma de los dos vectores de coeciente. Finalmente, se realiza la llamada a la funci on constructora de objetos tipo polynom para crear el resultado correctamente mecanograado.

Funci on minus () Se puede implementar el operador minus (-) usando propiedades similares a las de la suma. MATLAB llama a @polynom/minus.m para computar p q . function r = minus(p,q) % POLYNOM/MINUS Implementa p-q para

% la clase polynoms. p = polynom(p); q = polynom(q); k = length(q.c) - length(p.c); r= polynom([zeros(1,k) p.c] - [zeros(1,-k) q.c]);

Funci on mtimes (*) MATLAB llama a la funci on @polynom/mtimes.m para computar el producto pq . La letra m al principio del nombre de la funci on viene del hecho de que est a dise nada para la multiplicaci on de matrices de MATLAB. La multiplicaci on de dos polinomios es simplemente la convoluci on de sus vectores de coeciente. function r = mtimes(p,q) % POLYNOM/MTIMES Implementa p*q para

% la clase polynoms. p = polynom(p);

79

q = polynom(q); r = polynom(conv(p.c,q.c));

Uso de los operadores en la clase Dado el siguiente objeto de la clase polynom >> p = polynom([1 0 -2 -5]) MATLAB llama a las dos funciones @polynom/plus.m y @polynom/mtimes.m cuando se usan las estructuras: >> q = p+1 q = x^3 - 2*x - 4

>> r = p*q r = x^6 - 4*x^4 - 9*x^3 + 4*x^2 + 18*x + 20

4.6.8.

Preparaci on de funciones para su uso en la clase Polynom

MATLAB tiene ya varias funciones para trabajar con los polinomios representados por vectores de coeciente. Deben ser adaptadas tambi en para trabajar con los nuevos objetos de la clase polynom. En muchos casos, las funciones pueden simplemente aplicarse al vector de coecientes de la se nal original.

80

Funci on root para la clase Polynom El m etodo @polynom/roots.m encuentra las ra ces de los objetos de tipo polynom. function r = roots(p) % POLYNOM/ROOTS. ROOTS(p) es un vector

% que contiene las ra\{\i}ces de p. r = roots(p.c);

En el cuadro de comandos, la llamada a la funci on root para el polinomio p da el resultado siguiente: >> roots(p) ans = 2.0946 -1.0473 + 1.1359i -1.0473 - 1.1359i

Funci on polyval para la clase Polynom La funci on polyval eval ua un polinomio en un sistema dado de puntos. @polynom/polyval.m utiliza la multiplicaci on jerarquizada, o el m etodo de Horner para reducir el n umero de las operaciones de la multiplicaci on usadas para computar las diversas potencias del X. function y = polyval(p,x) % POLYNOM/POLYVAL y = 0; for a = p.c y = y.*x + a; POLYVAL(p,x) calcula p en los puntos x.

81

end

Funci on plot para la clase Polynom La nueva funci on plot dibuja una gr aca en cartesianas del polinomio. Para evaluar el rango de valores a representar se usa la informaci on proporcionada por las ra ces del polinomio. function plot(p) % POLYNOM/PLOT PLOT(p) plot del polinomio p.

r = max(abs(roots(p))); x = (-1.1:0.01:1.1)*r; y = polyval(p,x); plot(x,y); title(char(p)) grid on

Funci on di en la clase Polynom La funci on @polynom/di.m diferencia un polinomio por reducir el grado por 1 y multiplicar cada coeciente por el grado original. function q = diff(p) % POLYNOM/DIFF c = p.c; d = length(c) - 1; % degree q = polynom(p.c(1:d).*(d:-1:1)); DIFF(p) es la derivada del objeto p.

82

4.6.9.

Lista de los M etodos de la Clase

La funci on llamada methods(classname) o colocada de la forma methods classname muestra todos los m etodos disponibles para una clase particular. Para el ejemplo de la clase polynom, la salida es: polynom Methods Funciones para la clase polynom:

char diff

display double

minus mtimes

plot plus

polynom polyval

roots subsref

Trazado de dos objetos de la clase polynom, x y p, llamados por la mayor a de estos m etodos. Se observa su representaci on en la gura 4.4. >> x = polynom([1 0]); >> p =polynom([1 0 -2 -5]); >> plot(diff(p*p + 10*p + 20*x) - 20)

83

Figura 4.4: Representaci on de un polinomio de la clase polynom.

Cap tulo 5 Clase Signal


En este cap tulo se va a denir la clase Signal. Se intenta explicar de la mejor manera posible al usuario, la utilizaci on y el n de la clase, as como la creaci on de dicha. Tiene diferentes apartado, a medida que se vaya ascendiendo en dicho, se ir a adentrando m as en la clase hasta nalmente llegar al apartado de Ejemplos donde con ejercicios pr acticos se intenta explicar el uso de la funci on constructora de la clase Signal.

5.1.

Introducci on

La clase Signal ha sido creada para el tratamiento de se nales discretas en Matlab. La motivaci on que ha llevado a la realizaci on de la clase es la necesidad de manejar se nales discretas de una manera f acil e intuitiva. Para trabajar con se nales en Matlab, se debe de seguir diferentes pasos puesto que el Matlab como se ha dicho repetidamente es un programa que trabaja con matrices y no trabaja con se nales. Por lo tanto, hay que pensar como aplicar las matrices para conseguir una se nal y despu es como poder trabajar con ellas. Se trabajan con se nales pero como si fueran matrices, es una situaci on que complica bastante la utilizaci on se nales complejas. Si que es verdad, que el Matlab ya posee numerosas funciones como seno, coseno, convoluci on, multiplicaci on etc... pero son funciones primarias aplicables a matrices y que solo pueden aplicarse a se nales una vez que la se nal est a denida mediante una matriz. En el Cap tulo 3, se dieron diferentes maneras de representar una se nal en Matlab, as como el ahorro de memoria y la simplicaci on del c odigo en el cuadro de comando. La clase Signal tiene presente los u ltimo aspecto nombrado. Posee una interesante simplicaci on del c odigo frente a trabajar con se nales en Matlab mediante matrices. Las funciones de Matlab se han aprovechado para crear las diferentes funciones de 84

85

la clase. Este es un tema que se explica m as adelante.Hay que tener presente que el usuario no ve las diferentes funciones, s olo tiene que llamarlas y para ello est a a su disposici on un Manual de Usuario de dicha clase. El Manual de Usuario dene cada una de las funciones que se proponen dentro de la clase, su estructura y la manera de utilizarla. Es un manual que le ofrece al usuario una manera r apida y sencilla de aplicar la clase, y en un tiempo m nimo resolver operaciones complejas con se nales, sin la necesidad de escribir todo el c odigo en Matlab. No es necesario realizar la funci on puesto que est a en la clase, simplemente hay que saber llamarla y trabajar con ella. Con muy pocas l neas de c odigo, se puede implementar se nales discretas. Se necesita saber los valores de entrada a las funciones y la salida para de esta manera se pueda implementar bien la operaci on. La clase signal constituye un amplio abanico de operaciones para tratar con se nales discretas. Se proporciona unas tablas en las que se pueden ver todas las funciones de la clase, adem as del Manual de Usuario ya nombrado. Siguiendo los pasos indicado en el cap tulo anterior, se ha obtenido dicha clase. En el pr oximo apartado, se explica la creaci on de la clase as como su contenido.

5.2.
5.2.1.

Procedimiento
Obtenci on de la clase.

En el cap tulo anterior se ha hablado de qu e es una clase. La clase en la que se basa el proyecto se llama Signal, y se basa en la utilizaci on de se nales en tiempo discreto. En la clase se denen determinadas propiedades y funciones, para trabajar y modicar los objetos que en este caso se reere a se nales discretas. La clase se compone por una instancia, llamada @signal que tiene ciertas propiedades espec cas y funciones de dicha clase. Fuera de @signal, pero dentro de la clase signal, se encuentran las funciones generales que afectan a la clase pero que no tienen valores de entrada referidos a la instancia. Las funciones que se encuentran dentro de @signal pueden modicar el estado de la se nal respetando ciertas limitaciones. A esta caracter stica se le conoce como encapsulamiento (denida en el apartado 4.4 de la memoria). Las funciones fuera de @signal no modican el objeto, sino que las propias funciones construyen objetos que pertenece a la clase y cada uno de ellos con estados diferentes.

86

Para que la clase sea aceptada dentro del ambiente de MATLAB, esta lleva a cabo los siguientes m etodos o funciones: Una funci on constructora signal.m : crea un objeto perteneciente a la clase se nal discreta e inicializa su estado. Una funci on display.m para poder visualizar los objetos y operaciones de la clase. Funciones de activaci on y desactivaci on de estados de los objetos, hold screen y hold audio. Una funci on subsref.m y subsasgn.m, que dene los ndices aplicables a los objeto, ejemplo: (), []... Operadores +, -,*,.*,,.,/,./, aplicados a la nueva clase. Aplicaci on de funciones abs.m, codicaci on.m, cos.m,t.m,ones.m, zeros.m, get.m, set.m, size.m es decir, funciones que nos indican y nos modican el estado de la clase. Funciones que nos crean objetos propios de la clase, como son szeros.m,sones.m,ltros.m, signal wread.m, signal wavwrite.m, delta.m, s cos.m, s sin.m, s pulse.m. Adem as, en la clase Signal se puede barajar varios tipos de se nales: Se nal gen erica. Es una se nal discreta, con unas amplitudes, un tiempo de inicio y la frecuencia que normalmente si no se dene se la asigna Matlab. Cuando se observe la frecuencia, Matlab indicar a que la frecuencia es NaN, es decir una frecuencia no denida. Se nal audio. Se nal con sonido incluido. Se pueden dar dos tipos de se nales, una se nal de audio de un solo canal o una se nal de audio de dos canales. La terminolog a que ha sido utilizada para la realizaci on de los c odigos es la que se muestra en la tabla 5.1. Se ha intentado que sea lo m as clara posible para que el usuario pueda entender el manejo de las funciones.

87

Cuadro 5.1: Terminolog a de la Clase Signal. TERMINO A, B, C, D... SIGNIFICADO Las letras may usculas, est an referidas a se nales. Normalmente, en la realizaci on del c odigo de la clase signal C = se nal de salida y A,B = se nales de entrada. Las letras min usculas van asociadas a vectores num ericos o un valor num erico. En la clase signal, x,y = valores de salida y n,m = valores de entrada. La letra f seguida de una letra min uscula signica frecuencia de... Frecuencia de corte. frecuencia de muestreo.

x, y, n, m...

fletraminuscula fc fs

5.2.2.

Funciones de la clase Signal.

Display.m, hold screen.m y hold audio.m . En el directorio @signal existe la funci on (Display) que se encarga de que en el cuadro de comando se pueda visualizar el objeto que crea la clase Signal (Se nal discreta) as como los resultados de las operaciones que se est en realizando con la se nal. El display es una funci on obligatoria y compleja de la clase, en la que adem as de visualizar la se nal en el cuadro de comando indicando el tiempo y las amplitudes de la se nal, tambi en permite visualizarla de manera gr aca, incluso si consta de bastantes amplitudes se visualiza con una forma de onda. Este u ltimo caso se da cuando la se nal re une m as de cuarenta componente. Esta funci on es la que nos permite entre otras, poder escuchar una se nal de audio, as como visualizarla al mismo tiempo. Si la se nal de audio es de dos canales, se visualizan y se escuchan los dos canales de audio. Para el control del tipo de visualizaci on de las se nales, existe dentro de la clase on, permite activar o desactivar el tipo de otra funci on llamada hold screen. Esta funci visualizaci on de la se nal. Puede ser en pantalla con n umeros o que sea una gr aca, o bien como se explic o antes si excede las dimensiones que sea una gr aca con la forma de onda de la se nal incluida. En el c odigo de la funci on, tenemos dos casos on o o, cada caso corresponde a una situaci on. La funci on hace la llamada a Display, y le pasa

88

la variable hold scr (display(signal([]),hold scr), en la que debe de ir almacenado un 1 o un 0 dependiendo de la opci on que se halla elegido. En el c odigo de la funci on display la varible hold scr, se va a encarga de controlar la visualizaci on de las se nales dentro de esta funci on, es decir: CODIGO DE LA FUNCION HOLD_SCREEN funtion hold_screen{varargin} switch varargin{1} case on hold_scr=1; %pasa un 1 a la funcion Display. case off hold_scr=0; %pasa un 0 a la funcion Display. end

CODIGO DE LA FUNCION DISPLAY funtion display {x,varargin} switch nargin case 1 if hold_scr==0 " case 2 hold_scr=varargin{1} "

89

10

0.06 0.05

8 0.04 6 0.03 0.02 0.01 2 0 0.01 0.02 2 0.03 4 2 1 0 1 2 3 4 5 0.04 0 0.5 1 1.5 2 2.5 3 3.5 x 10
5

Representaci on de una se nal.

Se nal con m as de 40 componentes.

Figura 5.1: Representaci on de se nales discretas mediante la clase Signal. Funci on que permite representar, tiene como nombre Display.

Como se puede observar en una de las partes del c odigo de la funci on hold screen, existen dos casos: 1. En el primer caso, que se da cuando a la funci on le entra on, se observa que la variable va a tener el valor de uno. Por lo tanto cuando se llame en la funci on display esa variable tendr a el valor de 1 y se realizar a la visualizaci on de la se nal de forma gr aca. Se puede observar un ejemplo en la Figura 5.1. La visualizaci on de la primera gr aca en la Figura 5.1, es una se nal representando cada punto de amplitud ya que tiene menos de cuarenta componente. En este caso en el c odigo display ha sido utilizado la funci on de Matlab stem,como se observa en el siguiente c odigo: if t<=40 %limita a que la se\~{n}al tenga menos de %cuarenta componentes. figure() stem(x.t_ini:(length(x.a)+x.t_ini-1),x.a) %dibuja la grafica. axis([x.t_ini-1,(length(x.a)+x.t_ini),min([x.a,0]),

90

max([x.a,0])]) else %la se\~{n}al tiene que tener mas de cuarenta componentes. figure() plot(x.t_ini:(length(x.a)+x.t_ini-1),x.a,m) end Sin embargo, la segunda gr aca de la gura 5.1, representa la se nal con una determinada forma. Para este caso en el c odigo de la funci on display se ha utilizado la funci on de Matlab plot, como se observa en fragmento de c odigo del anterior. 2. En el segundo caso, sin embargo, se observa que la variable va a recibir el valor de cero, por lo tanto cuando sea llamada en la funci on display con el valor cero, se realizar a la visualizaci on por pantalla con n umeros tanto para el tiempo como para las amplitudes, como se observa a continuaci on: >> A=signal([3 4 2 -1 -2 -3],-2) (c) Alicia & Esther: Signal Tool

-1

-2

-3

-2

-1

%se observa en el cuadro de comandos. Para el caso de una se nal de audio, tambi en interviene la funci on display, pero con otra variable llamada hold audio. Esta variable permite que se escuche o no el sonido, el usuario es libre de activarla. Lo primero que hay que tener en cuenta en esta funci on es si la se nal es de audio, sino no se podr a escuchar y se obtendr a un error. Para obtener el error previamente a su reproducci on, en la funci on display se odigo conrma si la se nal es del tipo sound. La funci on hold audio se compone de un c on display del mismo modo que dispone similar a la funci on de hold screen. En el funci de c odigo para representar las se nales, tambi en se encuentra el c odigo para escuchar

91

las se nales de audio y depende de la entrada que tenga la variable hold aud, que es la que proviene de la funci on hold audio. La aplicaci on dentro del c odigo es la misma que la anterior. Se puede observar fragmentos de ambos c odigos: CODIGO DE LA FUNCION HOLD_AUDIO function hold_audio(varargin) if nargin==1; switch varargin{1} case on hold_aud=1; case off

hold_aud=0; end end display(signal([]),[],hold_aud) CODIGO DE LA FUNCION DISPLAY if hold_scr==0 if hold_aud==0%en este caso la funcion %no esta activada. disp( )%la se\~{n}al se imprime en pantalla %la funcion hold_screen no esta activada. disp((c) Alicia & Esther: Signal Tool); disp( ); disp(x.a) t=x.t_ini:(length(x.a)+x.t_ini-1); disp(t) else %se activa la funcion hold_audio

92

if strcmp(x.type,sound) % se comprueba si la senial es de audio. sound(x.a,x.fs); %se reproduce. else disp(sprintf(La se\~{n}al "%s" no se puede reproducir., inputname(1))); %senial que no es de audio.

end subsref.m y subsasgn.m Estas dos funciones se encuentran dentro del directorio @signal, puesto que muestran o modican el estado del objeto. Son funciones bastante complejas, que se encargan de denir la utilizaci on de los distintos ndices que existen. Las funciones tratan ndices diferentes: subsref. Corresponde con la funci on C = SUBSREF(A,S), que es llamada por la sintaxis A(I), AI y A.I. cuando A es un objeto. S es una estructura que se compone de los siguiente campos: type- especica s.type, que puede ser ., () o . subs- especica s.subs que es un vector de celdas. Por ejemplo, la sintaxi A(5:7) recurre a SUBSREF(A,S) donde S es una estructura con S.type=() y S.subs=5:7. Similar, la sintaxi A5:7 recurre a SUBREF(A,S) donde S.type= y la sintaxi A.palabra recurre tambi en a SUBSREF(A,S) donde s.type=. y S.subs=palabra. Por lo tanto para la realizaci on del c odigo, lo primero que se tiene en cuenta es los diferentes casos que se pueden dar con la funci on subsref. Dentro de cada caso, hay diferentes signicados si se introduce un vector u otro. No es recomendable llamar a la funci on por el nombre de subsref, sino mejor reri endose a los diferentes ndices. Los diferentes casos que se pueden dar dentro de la funci on se observan en la tabla 5.2.

93

DE Cuadro 5.2: UTILIZACION INDICES EN LA CLASE SIGNAL.


INDICE Cd,e OPERACION realiza el desplazamiento d y el escalar e de la se nal. Si d es positivo, la se nal se desplaza hacia la derecha y si es negativo hacia la izquierda. Si -1e1 se realiza la compresi on y si e-1 o e1 se realiza la expansi on. Siempre primero se desplaza la se nal y luego se comprime. Devuelve una se nal perteneciente a signal. si solo se introduce un valor, siempre se va a realizar el desplazamiento de la se nal. Si es positivo hacia la derecha y si es negativo hacia la izquierda. Devuelve una se nal que pertenece a signal. Devuelve la se nal en el rango de [n:m]. Tanto n como m tienen que ser valores num erico. n y m indican tiempo de la se nal C. Si n o m no pertenecen al rango de la se nal a tratar, entonces se obtendr a un error. Siempre mn Devuelve el rango de se nal entre [n:m]. mn en este caso por eso debes de poner -1, porque sino Matlab te devuelve un error. Devuelve un vector con los valores de amplitudes de la se nal en cada uno de los valores de tiempo [n,m,p,q...]. Si se introducen tiempos descolocados, hay que tener presente que los valores de amplitudes que se devuelven van a ser colocados. Si un valor de tiempo no se encuentra en el rango de la se nal, el valor que nos devuelva de amplitud es 0. Devuelve el valor de la amplitud de la se nal en el instante de tiempo n. Muestra el vector de amplitudes de la se nal. Indica el tiempo inicial de la se nal. Indica la frecuencia de muestreo de la se nal. Indica el tiempo nal de la se nal. Muestra el vector de tiempo de la se nal.

Cd

C([n:m])

C(m:-1:n) C([n,m,p,q...])

C(n) C.a C.t ini C.fs C.t nal C.tiempo

94

subsasgn. C = SUBSASGN(A,S,B) es llamada por la sintaxis A(I)=B, AI=B, o A.I=B, cuando A es un objeto. S es una estructura con los siguientes campos: type- especica s.type, que puede ser ., () o . subs- especica s.subs que es un vector de celdas. Por ejemplo, la sintaxi A(2:4)=B llama A=SUBSASGN(A,S,B) donde S es una estructura con S.type=() y S.subs=2:4. Similar, la sintaxi A2:4=B recurre a A=SUBSASGN(A,S,B) donde S.type= y la sintaxis A.palabra=B tambi en recurre a SUBSASGN(A,S,B) donde S.type=. y S.subs=palabra. En la tabla 5.3 se observan los diferentes casos que se dan en la clase Signal. Hay casos que han sido omitidos.

Funciones Generales La clase signal se compone de diferentes funciones que permiten operar con las se nales incluso modicarlas. Tambi en, en la clase hay diferentes funciones que construyen se nales. Esto pretende facilitar el manejo y evitar tener que crearlas,como son las se nales todos unos, ceros ect. Adem as de las funciones de fuera de @signal, dentro este directorio nos encontramos con diferentes funciones de la clase que permiten operaciones el tipo de se nal a la que se reere la clase. En las tablas 5.4, 5.5, 5.6 se especican las funciones y la operaciones que se pueden realizar con las se nales dentro de la clase. De manera r apida con estas tablas, el usuario podr a comprobar las funciones que existen en la clase as como el manejo de estas.

95

DE Cuadro 5.3: UTILIZACION INDICES EN LA CLASE SIGNAL. INDICE C([n,m,p,q...])=[a,b,c,d...] OPERACION B es igual a un vector([a,b,c,d...]). La funci on asigna los valores del vector B, a las amplitudes correspondientes a los tiempos [n,m,p,q...] de la se nal. El vector de tiempo tiene que ser del mismo tama no que el vector de amplitudes (B). Devuelve una se nal. B es igual al vector([a,b,c,d...]). La funci on asigna los valores del vector B, a las amplitudes correspondientes al rango de tiempos ([n:m]) de la se nal. El vector de tiempo y el vector B, tienen que tener el mismo tama no. B tiene valor a. La funci on asigna el valor a, a todas las amplitudes correspondientes al rango de tiempos ([n:m]) de la se nal. Devuelve una se nal. B tiene valor a. La funci on asigna el valor a, a todas las amplitudes correspondientes al rango de tiempo ([n,m,p,q...]) de la se nal. Devuelve una se nal con los valores correspondientes. Devuelve el valor de las amplitudes de la se nal en cada uno de los valores de tiempo [n,m,p,q...]. Si se introducen tiempos descolocados, hay que tener presente que los valores de amplitudes que se devuelven van a ser colocados. Si un valor de tiempo no se encuentra en el rango de la se nal, el valor que nos devuelva de amplitud es 0.

C([n:m])=[a,b,c,d,...]

C([n:m])=a

C([n,m,p,q...])=a

C([n,m,p,q...])

96

Cuadro 5.4: LISTA DE FUNCIONES DE LA CLASE SIGNAL. A Es el valor absoluto de las amplitudes de la se nal x. C Devuelve la se nal A codicada. Es la codicaci on de una se nal anal ogica, que responde a las especicaciones de una se nal de Cplus, o que tenga su misma frecuencia de muestreo(12800). Es el coseno de los elementos de la se nal x. Devuelve una se nal. Devuelve la se nal reejada de la se nal x. D Crea una delta en el tiempo varargin. F Es la Transformada Discreta de Fourier de la se nal x. Devuelve la se nal transformada en frecuencia. El n umero de puntos que usa la funci on es 1024 puntos. Devuelve la se nal correspondiente con el ltro paso alto que tiene una frecuencia central(fc) y una frecuencia de muestreo (fs). Devuelve una se nal que representa un ltro paso alto y otra se nal con el espectro del ltro que adem as muestra el ltro ideal, con una frecuencia de corte (fc) y una frecuencia de muestreo (fs). Devuelve la se nal correspondiente con un ltro paso bajo que tiene una frecuencia central(fc) y una frecuencia de muestreo (fs). Devuelve una se nal que representa un ltro paso bajo y otra se nal con el espectro del ltro que adem as muestra el ltro ideal, con una frecuencia de corte (fc) y una frecuencia de muestreo (fs). Devuelve la se nal correspondiente de un ltro paso banda con una frecuencia de corte inferior y superior, fc1 y fc2, y con una frecuencia de muestreo fs. Devuelve la se nal correspondiente de un ltro paso banda con una frecuencia de corte inferior y superior, fc1 y fc2, y con una frecuencia de muestreo fs. Y adem as devuelve el espectro del ltro que tambi en incluye el espectro ideal del ltro.

abs(x)

codicacion(A) codicacion Cplus(A)

cos(x) ctranspose(x) delta(varargin) t(x)

lter PA(fc,fs)

lter PAplot(fc,fs)

lter PB(fc,fs)

lter PBplot(fc,fs)

lter PBanda(fc1,fc2,fs)

lter PBandaplot(fc1,fc2,fs)

97

Cuadro 5.5: LISTA DE FUNCIONES DE LA CLASE SIGNAL (Continuaci on). F lter PElimina Banda(fc1,fc2,fs) Devuelve un ltro paso banda eliminada con una frecuencia de corte inferior fc1 y superior fc2 y con una frecuencia de muestreo fs. lter PElimina Bandaplot(fc1,fc2,fs) Devuelve la se nal correspondiente de un ltro paso banda eliminada con una frecuencia de corte inferior y superior, fc1 y fc2, y con una frecuencia de muestreo fs. Y adem as devuelve el espectro del ltro que tambi en incluye el espectro ideal del ltro. G get amplitud(x) Muestra las amplitudes de la se nal x. Devuelve un vector de amplitud. get fs(x) Muestra la frecuencia de la se nal x. get t(x) Muestra el tiempo de inicio de la se nal x. M minus(x,y) Realiza la resta de dos se nales x e y. Deben tener la misma frecuencia de muestreo o la frecuencias de una de ellas debe ser indeterminada. Si x o y es un n umero, se restar a ese n umero a cada amplitud de la se nal.Una de las dos variables deben ser se nales. mpower(x,y) Realiza la potencia y elemento a elemento del vector de las amplitudes de la se nal x. Por lo tanto, y debe de ser un n umero y x una se nal.Id entica a power. M mrdivide(x,y) Es la divisi on del vector de amplitudes de x por el vector de amplitudes de y, elemento a elemento. x e y tienen que tener la misma frecuencia o una de las frecuencias tiene que ser NaN (indeterminada). Si una de las dos variables es un n umero, la operaci on est a permitida y se dividir a cada elemento del vector de amplitudes de la se nal por el n umero introducido. Siempre la funci on devuelve una se nal, con el vector de tiempo correspondiente, teniendo en cuenta las coincidencias de ambas se nales.

98

Cuadro 5.6: LISTA DE FUNCIONES DE LA CLASE SIGNAL (Continuaci on). M Es la multiplicaci on de los vectores de amplitud de x e y, elemento a elemento, en los tiempos coincidentes. x e y tienen que tener la misma frecuencia o una de las frecuencias tiene que ser NaN (indeterminada). Si una de las dos variables es un n umero, la operaci on est a permitida y ese n umero multiplica a cada elemento del vector de amplitud de la se nal.Una de las dos variables tiene que ser una se nal. Siempre la funci on devuelve una se nal, con el vector de tiempo correspondiente. O Devuelve una se nal de todos unos con el vector de tiempo de la se nal x. Le asigna un uno a cada amplitud de la se nal x. P Es la suma de las dos se nales x e y. Se suma cada elemento de los vectores de amplitud correspondiente a cada se nal. Las dos se nales tienen que tener la misma frecuencia o una de las frecuencia tiene que ser NaN(Indeterminada). Si una de las variables es un n umero, se suma ese n umero a cada elemento del vector de amplitudes de la se nal. Al menos una de las variables debe ser una se nal, sino la operaci on no es v alida. Devuelve una se nal. Ve ase mpower. R Realiza la deconvoluci on de la se nal x con la se nal y. La frecuencia de x debe ser la misma que la frecuencia de y o una de las dos frecuencias debe ser NaN(Indeterminada). x siempre debe de ser una se nal, sin embargo y puede ser un n umero y en este caso no se realiza la deconvoluci on sino que se realiza la divisi on de cada elementos del vector de amplitud de x por el n umero y. Devuelve una se nal.V ease tambi en times. Devuelve una se nal donde se representa el resto de la deconvoluci on de dos se nales(A y B).

mtimes(x,y)

ones(x)

plus(x,y)

power(x,y) rdivide(x,y)

rem(A,B)

99

Cuadro 5.7: LISTA DE FUNCIONES DE LA CLASE SIGNAL (Continuaci on). S Construye una se nal coseno con unas ciertas caracter sticas que el usuario indica. t es la duraci on de la se nal, se debe indicar hasta que tiempo se quiere obtener la se nal. construye una se nal de pulsos a partir de los argumentos de entrada. T es el periodo fundamental de la se nal y t indica la duraci on de la se nal (valor nal de la constante de tiempo). Construye una se nal de tipo seno a partir de los argumentos de entrada.t indica la duraci on de la se nal (valor nal de la constante de tiempo). Sustituye el vector de amplitudes de la se nal x, por el vector que se introduce y. x debe ser una se nal e y un vector. Devuelve una se nal. Sustituye la frecuencia de la se nal x por la frecuencia fm. Devuelve una se nal. Asigna tipo sound a la se nal x, es decir, x se convierte en una se nal de audio. Sustituye el tiempo de inicio de la se nal x, por tiempo. Devuelve una se nal Espectro de la se nal x desde 0 hasta la frecuencia fs. Escribe los datos de A en un archivo.wav especicado por el nombre del archivo que se introduce entre comillas simples (). No posee argumento de salida. Lee un archivo WAVE especicado por el nombre del archivo entre comillas simples (), retornando los datos en C1 o en C1 y C2, que representan se nales de audio. Depender a la salida de si es dual, est ereo o mono. Es el seno de los elementos de la se nal x. Devuelve una se nal. Devuelve el tama no de la se nal x, en las y columnas. Primera variable de salida indica las las y la segunda variable indica las columnas. Construye una se nal con todas sus amplitudes iguales a 1. n y m son dos constantes de tiempo que indican el inicio y el n de la se nal con amplitud todos unos.

s cos(t,fc,fs)

s pulse(t,T,fs)

s sin(t,fc,fs)

set amplitud(x,y)

set fs(x,fm) set sound(x,sound) set t(x,tiempo) signal spectrum(x,fs) signal wavwrite(A,archivo)

signal wread(archivo)

sin(x) size(x)

sones(n,m)

100

Cuadro 5.8: LISTA DE FUNCIONES DE LA CLASE SIGNAL (Continuaci on). S Construye una se nal con todas sus amplitudes iguales a 0.n y m son dos constantes de tiempo que indican el inicio y el n de la se nal con amplitud todos ceros. T Es la convoluci on de dos se nales x e y. Las dos se nales deben tener id entica frecuencia de muestreo o una de las frecuencia debe de ser NaN(Indenida). Si una de las dos variables de entrada es un n umero se realiza la multiplicaci on del n umero por la se nal. En los diferentes casos devuelve una se nal. Ve ase tambi en rdivide U Cambia de signo a las amplitudes de la se nal x. Devuelve la se nal x. Z Devuelve una se nal de todos ceros con el vector de tiempo de la se nal x. Le asigna un cero a cada amplitud de la se nal x.

szeros(n,m)

times(x,y)

uminus(x) uplus(x) zeros(x)

101

5.3.
5.3.1.

Signal.m
Introducci on.

En la clase existe la funci on signal que es la encargada de convertir una entidad cualquiera en un objeto propio de la clase, es decir, en una se nal. La funci on Signal es la principal y todas las dem as funciones en su c odigo llaman a la funci on Signal, para que de esta manera todas las operaciones realizadas con estas funciones, pertenezcan a dicha clase, y el procedimiento de las funciones dependen de la funci on Signal. Por lo tanto, s olo podr an ser utilizadas las funciones nombradas en el apartado anterior, si trabajamos con objeto de la clase. La funci on Signal ha sido creada en base a los argumentos de entradas que se necesitaban para las distintas se nales a las que da cabida la clase. Depende de la funci on que se desee, se necesitan unos argumentos de entrada u otros, que son explicados en el pr oximo apartado. Para la creaci on de la funci on se han tenido presente las necesidades del usuario. La prioridad de la clase, era construir una funci on que permitiera crear una se nal introduciendo solo una l nea en el cuadro de comando, y olvidar pensar en una se nal como una matriz. De esta manera se ahorra memoria, tiempo y se evita que el usuario tenga limitaciones para trabajar con se nales. Incluso, en la utilizaci on para las pr acticas de Teor a de la se nal se consigue que el alumno pueda centrarse en el tratamiento de se nales directamente como se ha comprobado en el Cap tulo 2. Signal permite crear una se nal en Matlab, incluso visualizarla con s olo escribir una l nea de c odigo. Y con las dem as funciones de la clase se puede trabajar con esa se nal tecleando un n umero m nimo de l nea. Antes en Matlab para crear una se nal se necesitaban bastante l nea incluso a la hora de operar con la se nal se encontraban limitaciones.

5.3.2.

Variables de la funci on Signal.

Para la realizaci on del c odigo se ha utilizado una primera variable que especica las amplitudes de entrada a la se nal, y una segunda variable que es varargin que es un vector de celdas que contiene tantos elementos como sean necesarios para poder recoger en dichos elementos todos los argumentos que se hayan pasado en la llamada a la funci on. Para el control de esta variable se ha introducido en el c odigo diferentes casos, mediante un switch. Las diferentes variables que admiten la funci on son las siguientes:

102

1. x.a. Amplitudes de la se nal x. Se pueden introducir tantas amplitudes como se desee, no hay limitaciones para este caso. Esta variable est a situada en la primera posici on antes que el varargin. 2. x.t ini. Tiempo inicial de la se nal x. Igual que el anterior no tiene ning un tipo de limitaci on. Si no se introduce esta variable, el tiempo de inicio de la se nal es cero. No es obligatorio introducirla por lo explicado anteriormente de varargin. Ocupa la primera posici on del vector de celdas de la variable varargin. Por lo tanto ocupa la segunda posici on de las variables de entrada de la funci on. 3. x.fs. Frecuencia de muestreo de la se nal x. Si no se introduce esta variable la frecuencia de muestreo que se le asigna a la se nal es NaN, es decir, frecuencia indeterminada. Esta variable est a situada en la segunda posici on del vector de celdas de la variable varargin, es decir, ocupa la tercera posici on de entrada a la funci on. 4. x.type. Indica el tipo de se nal x. En un principio, en la clase se barajan dos tipos de se nales, que fueron explicada al inicio del cap tulo: Se nal gen erica (gen erica). Se nal audio (sound). Si no se introduce el tipo de se nal, se le asigna tipo gen erico ya que es el m as com un. Adem as por las funciones set, se puede modicar las se nales en cualquier momento del trabajo con dichas, sin la necesidad de tener que volver a repetirla. Como se observa existen cuatro casos dentro del switch. Todos los casos al nal se convierten a clase signal, llamando a la clase e introduci endolos, class(x,signal). Por lo tanto, la salida va a ser de clase signal. De esta forma se ha creado al objeto de la clase, a partir de este momento solo se podr a trabajar dentro de la clase con este objeto. Esta funci on es la llamada por las dem as funciones dentro de @Signal. Finalmente, se hace una muestra general de la utilizaci on de la funci on signal en el cuadro de comando: >>x=signal[x.a,x.t_ini,x.fs,x.type] % Se observa la colocaci on de las variable, y la manera de llamar a la funci on signal.

5.3.3.

Ejemplos

En este apartado se muestran varios ejemplos de utilizaci on de la funci on Signal, para poder ver sus aplicaciones de la forma m as correcta y la manera de utilizar el c odigo en el cuadro de comando de Matlab. Se exponen los siguientes casos:

103

>>x=signal([4,5,6,7],2,300,generica)" (c) Alicia & Esther: Signal Tool

% x, pertenece a la clase signal, x=signal... % Primera variable: amplitudes. Hay cuatro amplitudes. % Segunda variable: el tiempo de inicio. Inicia en 2. % Tercera variable: frecuencia de muestreo, 300. % Cuarta variable: tipo de senial, generica % Si se introduce el siguiente codigo, observamos la %figura 5.10, como ya se explico en anteriores %apartados.

>>hold_screen on >>x=signal([4,5,6,7],2,300,generica)

% Si se activa la variable de audio, se observa un error %puesto que la senial es de tipo generico y no de audio, %como se demuestra.

>> hold_audio on

104

1.5

0.5

0.5

50

100

150

200

Figura 5.2: Senial x. >> x=signal([4,5,6,7],2,300,generica) La senial "x" no se puede reproducir.

% Esto sucede porque en el la funcion display se hace %una comparacion de x.type %correspondiente en ese %momento, para que de esta manera, se le pueda avisar %al usuario de que lo que %esta utilizando es una senial generica y no una %senial de audio. En este ejemplo han sido usadas todas las variables de la funci on Signal. Se ha demostrado como se debe tratar el c odigo de la clase Signal y adem as las distintas formas de expresar las se nales. con la variable

105

>>x=signal([4,5,6,7],2,300) c) Alicia & Esther: Signal Tool

%Tenemos una senial de la clase signal. %Como se explico, representa la misma senial que en %ejemplo anterior, ya que la unica variable de la %que se ha prescindido es del tipo y ahora vamos a %comprobar en la figura 5.11 que la senal

%que nos representa no es de audio %sino generica, ya que por defecto se le asigna.

>>hold_screen on >>hold_audio on >>x=signal([4,5,6,7],2,300) La se\~{n}al "x" no se puede reproducir.

%En el cuadro de comando ha aparecido el texto %La senial "x" no se puede reproducir %lo cual indica que es una senial generica.

106

1.5

0.5

0.5

50

100

150

200

Figura 5.3: Senial x. >>x=signal([4,5,6,7,8],2) (c) Alicia & Esther: Signal Tool

%Observamos que se obtiene la misma senial que la %anterior pero la diferencia es la frecuencia de muestreo. %En esta senial hemos prescindido de la frecuencia %y del tipo por lo tanto, se debe de obtener una senial %generica y la frecuencia de la senial tiene que ser NaN.

107

%la representacion es la misma que la de la figura 5.10 y 5.11. %Mediante la funcion get se ve la frecuencia de la senial.

>>get_fs(x)

ans =

NaN

>>x=signal([4,5,6,7,8]) (c) Alicia & Esther: Signal Tool

%Senial que empieza en cero puesto que no se ha %introducido el valor de tiempo de inicio. %La frecuencia sigue siendo NaN y el tipo generico. %La representacion corresponde con la de la %figura 5.11 y 5.10. >>x=signal([4:200],2,300,generica)

%Se puede tambien indicar las amplitudes

108

% (:) o como se estaba haciendo hasta ahora %( , , ) %No es probable poder mostrar las senial por numero %puesto que ocuparia un gran espacio.

>>hold_screen on >>x=signal([4:200],2,300,generica)

%En la figura 5.12, se puede obervar la senial obtenida. %Esta senial ya no se representa mediante puntos, %puesto que tiene mas de 40 elementos.

>>x=signal([4:200],2,300,sound]

%Senial de audio. Se puede comprobar que activando %la variable hold_audio esta vez no hay problema y %no da error.

>>hold_screen on >>hold_audio on >>x=signal([4:200],2,300,sound)

%La representacion es la misma que la de la figura 5.12. %Y ademas la se\~{n}al tiene sonido.

109

200 180 160 140 120 100 80 60 40 20 0 0 50 100 150 200

Figura 5.4: Senial x. Otra aplicaci on para conseguir se nales de la clase signal, es pasar un archivo.wav que es un archivo de audio a la clase. Y tambi en se puede pasar una se nal de la clase signal a un archivo.wav. Para ello tenemos las funciones signal wread y signal wavwrite. Se muestran dos ejemplos sobre estas funciones: >>x=signal_wread(bienvenida)

%bienvenida.wav es una se\~{n}al de audio. No se puede mostrar %la senial imprimida en pantalla pero veremos su %representacion en la figura 5.13 para observar que es una %senial de audio.

>>hold_screen on >>x=signal_wread(bienvenida)

110

0.06 0.05 0.04 0.03 0.02 0.01 0 0.01 0.02 0.03 0.04 0 0.5 1 1.5 2 2.5 3 3.5 x 10
5

Figura 5.5: Senial x. bienvenida.wav

%para poder implementar el archivo anteriormente se debe de %anadir en current directory de Matlab. %se puede comprobar la frecuencia de la senial

>>get_fs(x)

ans =

44100 >>x=signal([4:200],2,300,sound)

111

%esta senial se puede pasar a .wav de la siguiente manera. %la representacion de la senial corresponde con la figura 5.12 \item >>signal_wavwrite(x,archivo)

%ya se ha creado el fichero. Esta almacenado como archivo.wav %Para comprobar que el fichero existe, ahora se le llama %por la fucion signal_wread que lee fichero.wav y obtenemos la %figura 5.14.

>>x=signal_wread(archivo) >>get_fs(x)

ans =

300

%Para verificar que estamos hablando de la misma %senial que la anterior se ha comprobado la frecuencia y es igual. %Por lo tanto en una linea se llamam y se crea seniales. %y con unas pocas mas se puede modificar las mismas.

112

1.5

0.5

0.5

50

100

150

200

Figura 5.6: Senial x. archivo.wav

Cap tulo 6 Ejemplos de pr acticas


Este cap tulo va a tratar de mostrar las ventajas que posee la utilizaci on de una clase para el manejo de se nales discretas, consiguiendo agilizar el procesado y la comprensi on de la teor a mediante la pr actica. Se pretende simplicar el c odigo al usuario para que pueda visualizar de forma r apida los resultados y obtenga un primer contacto con un lenguaje de programaci on nuevo. El procedimiento a seguir en todos los ejemplos ser a: planteamiento de la pr actica, resoluci on mediante las t ecnicas utilizadas hasta ahora para la elaboraci on del c odigo y la posterior aclaraci on utilizando la clase signal.

6.1.

Ejemplo pr actico 1

Ejercicio. Desarrollar una funci on en MATLAB que proporcione una se nal desplazada y [n] = x[n n0]. Las t ecnicas aplicadas hasta el momento utilizan muchas l neas de c odigo para lograr, como en este caso, el desplazamiento de una se nal. Antes de realizar la funci on para el desplazamiento de una secuencia, hay que tener en cuenta las siguientes pautas: La entrada a la funci on, deber a ser tanto la se nal de entrada x[n] como el desplazamiento n0. La salida a la funci on deber a ser y[n]. 113

114

Posee gran importancia la representaci on de se nales discretas en MATLAB con ayuda de la funci on stem. A continuaci on se muestra la realizaci on del programa en el editor de MATLAB, para ello se ha tenido en cuenta las consideraciones nombradas anteriormente: function [y]=desplazamiento(x,n0) y.a=x.a; y.n=x.n+n0;

Como se puede observar en la instrucci on, se iguala la variable de salida y a las variables de entrada [x, n0], asign andoles el nombre del programa que ser a desplazamiento para, en el cuadro de comandos, poder llamar a la funci on con dicho nombre. Para realizar el desplazamiento, las amplitudes no var an mientras que se produce desplazamiento en el eje de tiempos. Para comprobar la efectividad del programa, en el cuadro de comandos se puede realizar el siguiente ejemplo. >> x.n=-1:2; >> x.a=[1,0,-1,2]; >> x n:[-1 0 1 2] a:[1 0 -1 2]

>> y=desplazamiento(x,2) y= a:[1 0 -1 2] n:[1 2 3 4]

>> hold on >> stem(x.n,x.a)

115

Figura 6.1: Representaci on de la se nal original x[n] (azul) y la se nal desplazada dos posiciones y[n] (rojo). >> stem(y.n,y.a,r)

El resultado gr aco del desplazamiento obtenido tras llamar a la funci on stem se observa en la gura 6.1. En ella se aprecia el ejemplo con la se nal x[n] en la cual se ha denido la amplitud (x.a) y el eje de tiempo (x.n). El desplazamiento asignado ha sido de n0=2. El resultado es la se nal y [n] que proporciona la entrada pero desplazada dos posiciones en el eje de tiempos. Se ha utilizado para su representaci on la funci on stem por ser la m as apropiada para realizar gr acas de se nales discretas y mediante la instrucci on hold on se han podido superponer las dos gr acas. A continuaci on se va realizar el ejercicio propuesto aplicando la clase signal . Para llevar acabo este ejercicio hay que conocer la funci on perteneciente a la clase que permite realizar el desplazamiento, esta se conoce con el nombre de subsref . Con esta funci on miembro, adem as de realizar el desplazamiento en el tiempo, se puede realizar el escalamiento temporal, representar un rango de la se nal, crear una

116

nueva secuencia o dar el valor de algunos de los par ametros que la caracteriza; entre otros. A continuaci on se va a mostrar el c odigo en el cuadro de comandos de MATLAB para la obtenci on del desplazamiento, teniendo en cuenta: Es necesario conocer las amplitudes de la se nal de entrada y el instante de tiempo en el que comienza la secuencia. Saber el desplazamiento que se va a aplicar a la se nal. El c odigo, que consiste en las llamadas a funciones de la clase signal, es el siguiente: >> A=[1:30] >> % rango de amplitudes que va desde 1 a 30. >> hold_screen on >> % se emplea para poder visualizar graficamente la senial. >> A=signal(A,2,100,sound) >> % se ha realizado una llamada a la clase signal, cuyos argumentos % de entrada son las amplitudes (A), el instante inicial de tiempo % (2) y dos parametros mas que ahora no tiene tanta importancia pero % que para otras aplicaciones si. Estos son la frecuencia de % muestreo (en este caso de 100Hz) y el tipo (en este caso de % tipo sonido). Tras ejecutarlo se ver a la imagen todav a sin desplazar que se muestra en la gura 6.2. Para realizar el desplazamiento s olo es necesario escribir una l nea m as de c odigo donde se indique el valor. >> A{5} >> % En este caso la senial se desplazara cinco posiciones hacia % la derecha, y si se pusiera A{-5} lo hace en sentido % contrario.

117

30

25

20

15

10

10

15

20

25

30

35

Figura 6.2: Se nal original A[n]. En este caso se obtendr a la misma se nal que antes pero desplazada cinco posiciones, como se muestra en la gura 6.3. Si adem as de realizar el desplazamiento temporal, el ejercicio requiere la creaci on de una funci on para el escalonamiento en el tiempo, en lugar de dar el u ltimo paso explicado anteriormente, se dar a el siguiente: >> A{5,3} >> % En este caso la senial se desplazara cinco posiciones hacia % la derecha y se comprimira en un factor 3 (A[3n]). En este proceso inuye el orden de realizaci on de las transformaciones temporales de la se nal, debido a que en la compresi on se produce p erdida de informaci on. El resultado se puede observar en la gura 6.4. Si se quiere realizar una combinaci on de todas las transformaciones posibles que son aplicables a una se nal, el orden ser a el siguiente: 1. Desplazamiento temporal. 2. Reexi on en el tiempo.

118

30

25

20

15

10

10

15

20

25

30

35

40

Figura 6.3: Se nal A[n] desplazada cinco posiciones en el tiempo.

30

25

20

15

10

10

11

12

Figura 6.4: Se nal A[n] desplazada cinco posiciones y comprimida en un factor 3.

119

3. Expansi on. 4. Compresi on. Esto es debido a que con la compresi on se pierde informaci on de la se nal y con el resto no se produce p erdida alguna, en el caso discreto.

6.2.

Ejemplo pr actico 2

Ejercicio. Desarrollar una funci on en MATLAB que obtenga como resultado el producto de dos se nales y [n] = x[n]z [n]. Este ser a el enunciado que tendr a una pr actica de laboratorio, en la que habr a que tener en cuenta los problemas que supone el producto entre dos se nales. Con la clase signal estos inconvenientes ya se han superado, el usuario s olo tiene que crearse las se nales y llamar a la funci on de multiplicaci on. Antes de desarrollar el ejercicio con la clase signal, se va a utilizar los m etodos empleados en los a nos anteriores en el laboratorio de Teor a de la Se nal. Para realizar el producto de dos se nales se han seguido los siguientes pasos: Se ha considerado la Teor a de Conjuntos. Se ha utilizado la funci on intersect de MATLAB. Por u ltimo, se ha comprobado con una se nal de entrada x[0] que la salida es y=0. A continuaci on se muestra la realizaci on del programa que proporciona el producto de dos se nales, en el editor: function [z]=product(x,y) [z.n,ix,iy]=intersect(x.n,y.n); z.a=x.a(ix).*y.a(iy);

Como se puede observar con la funci on intersect se han denido las variables de tiempo (x.n e y.n) de las se nales de entrada. Posteriormente se ha efectuado el producto de las amplitudes de ambas secuencias.

120

Para observarlo mejor, a continuaci on se va a realizar un ejemplo donde se efect ua una llamada a la funci on product creada en el editor de MATLAB. >> x.n=-1:2; >> x.a=[1,0,-1,2]; >> y.n=-1:1; >> y.a=[2,-1,1]; >> z=product(x,y); %llamada a la funci\{o}n creada en el editor z= n:[-1 0 1] a:[2 0 -1] >> hold on %permite representar dos se\~{n}ales en una misma gr\{a}fica >> stem(x.n,x.a) >> stem(y.n,y.a,r) >> stem(z.n,z.a,g--) >> %se van a representar las tres se\~{n}ales en un mismo gr\{a}fico con %distintos colores. El resultado de esta operaci on se observa en la gura 6.5. En las l neas siguientes se va a realizar la misma operaci on, pero empleando en este caso la clase signal . De esta manera se reduce notablemente el c odigo. >> A=[1:7] >> % rango de amplitudes que va desde 1 a 7. >> B=[-2:13] >> % El vector de amplitudes va desde (-2) a 13. >> hold_screen on >> % se emplea para poder visualizar graficamente la senial.

121

Figura 6.5: Representaci on de las se nales de entrada x[n] (azul) e y[n] (rojo) y la se nal resultante z[n] (verde).

122

Figura 6.6: Se nal A[n], con fm=100 (Hz). >> A=signal(A,2,100,sound) >> % se ha realizado una llamada a la clase signal, cuyos argumentos % de entrada son las amplitudes (A), el instante inicial de tiempo % (2), la frecuencia de muestreo (100Hz) y el tipo (en este caso de % tipo sonido). >> B=signal(B,0) En esta pr actica hay que tener muy en cuenta la frecuencia de muestreo si se quiere utilizar la clase signal, debido a que si las dos se nales tienen fm distintas la operaci on no se puede realizar. Si alguna de ellas no posee fm , como ocurre en este caso, la se nal resultante conservar a la de la otra secuencia. Sin embargo, en el caso de no tener ninguna de las dos se nales frecuencia de muestreo, la secuencia producto tampoco adquirir a f m. Las se nales originales est an representadas en las guras 6.6 y 6.7. Para poder realizar el producto entre las dos se nales anteriores, basta con poner: >> C=A*B

123

14 12 10 8 6 4 2 0 2

10

15

Figura 6.7: Se nal B[n], con par ametro fm vac o. >> % tambien se puede escribir de la forma: C=mtimes(A,B) Ahora la nueva se nal C , con amplitudes obtenidas como resultado del producto entre A y B , posee la frecuencia de muestreo de 100Hz y es de tipo sonido. Por tanto, si se activa la opci on de audio (hold_audio on) se puede escuchar la se nal Cconfm de100Hz . La secuencia se observa en la gura 6.8. Se puede plantear otro ejercicio para ampliar la pr actica, esto es, implementar la divisi on de dos se nales. Para realizar la divisi on con la clase signal no es necesario tener en cuenta los problemas que ocasiona este tipo de operaciones, debido a que el c odigo interno de dicha clase ya los considera. En el caso en el que se cometa una equivocaci on, saldr a un mensaje de error que explica el motivo por el que no se puede realizar la operaci on. La llamada a la funci on de divisi on se efect ua de la siguiente manera, siendo su representaci on gr aca la que se muestra en la gura 6.9: >> D=A/B >> % Tambien se puede escribir: D=mrdivide(A,B)

124

45 40 35 30 25 20 15 10 5 0

Figura 6.8: Se nal resultante C[n], con fm=100Hz.

2 1.8 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2 0 2 3 4 5 6 7 8

Figura 6.9: Se nal D[n], resultante de la divisi on con fm=100Hz.

125

Tambi en se podr a hacer el producto de una se nal por un escalar y la divisi on entre una se nal y un escalar, que se basa en el aumento y la disminuci on del vector de amplitudes en un determinado factor indicado por el escalar.

6.3.

Ejemplo pr actico 3

Ejercicio. Implementar una funci on en MATLAB que realice la convoluci on de dos se nales (y [n] = x[n] z [n]). Hallar sus propiedades. Para realizar la convoluci on en MATLAB, se puede utilizar el procedimiento te orico, o la clase signal que la efect ua directamente en una l nea. La convoluci on gr aca se basa en la reexi on, desplazamiento, multiplicaci on de se nales y suma de las componentes. Esto se puede llevar a cabo realizando llamadas a funciones ya implementadas o realizarlas en el mismo editor utilizado para la creaci on de la funci on de convoluci on. Antes de construir la funci on de convoluci on, se va a proceder a la ejecuci on de dos funciones necesarias para ella, como son la reexi on y la suma de las componentes de una se nal. Estas se expresan a continuaci on: %Funcion suma de componentes function s=suma(x) s=sum(x.a);

%Funcion de reflexion de se\~{n}ales function[y]=reflejada(x) y.a=fliplr(x.a); y.n=-fliplr(x.n);

126

Ahora s , se va a implementar la funci on de convoluci on siguiendo los pasos te oricos: function[y]=convolucion(x,h) h2=reflejada(h); inicio=x.n(1)+h.n(1); fin=x.n(end)+h.n(end); t=1;

for n0=(inicio:fin) h3=desplazamiento(h2,n0); r=product(x,h3); s=suma(r); y.a(t)=s; t=t+1 end y.n=inicio:fin;

En el programa se observa en primer lugar, la reexi on de la segunda se nal es decir, h[n]; despu es se ha considerado un principio y un n temporales. Una vez realizada la reexi on, se ha desplazado la se nal h[n], para ello han sido creados los l mites de tiempo que anuncian las posiciones de desplazamiento de la se nal. Por u ltimo, se efect ua el producto de se nales (x[n].h[n]) y la suma de los componentes, como se indica en la convoluci on de se nales discretas. y [n] = x[n] h[n] = x[k ] h[n k ] (6.3.1)

En el cuadro de comandos de MATLAB se ha elaborado el siguiente ejemplo para demostrar la correcta realizaci on del programa, cuya representaci on gr aca se ve en la gura 6.10.

127

>> x.n=-1:1; >> x.a=[1,0,-1]; >> h.n=1:2; >> h.a=[2,-1]; >> y=convolucion(x,h) t= 2 t= 3 t= 4 t= 5 y= a:[2 -1 -2 1] n:[0 1 2 3] Se va a realizar el ejercicio ahora mediante la clase signal para comprobar que se simplica en gran medida el n umero de l neas de c odigo, adem as de conseguir una visualizaci on de los resultados de manera m as r apida. >> S=[3,1,5,4,6,7,6,0,2,2,2]; >> hold_screen on >> S=signal(S,0,200,sound); >> % la senial posee una frecuencia de muestreo de 200Hz, % para que se pueda realizar la operacion, la senial Z % debe tener la misma frecuencia de muestreo o ninguna,

128

Figura 6.10: Representaci on de las se nales de entrada x[n] (azul) y h[n] (verde), y la se nal tras la convoluci on y[n] (rojo).

129

10

Figura 6.11: Se nal original S[n], con fm=200Hz y de tipo sonido. % en caso contrario saldra un mensaje de error. >> Z=[2,3,1,1,5]; >> Z=signal(Z,2,200,sound); >> % En este caso la se\~{n}al Z tiene la misma frecuencia de % muestreo que la se\~{n}al S. El instante de tiempo de Z % esta desplazado dos posiciones respecto a S. La representaci on gr aca de las dos se nales originales se muestra en las guras 6.11 y 6.12. Para obtener la convoluci on de las dos se nales anteriores s olo es necesario escribir una l nea m as de c odigo: >> P=S.*Z >> % Otra forma de escribirlo seria: P=times(S,Z)

130

5 4.5 4 3.5 3 2.5 2 1.5 1 0.5 0 2 2.5 3 3.5 4 4.5 5 5.5 6

Figura 6.12: Se nal original Z[n], con fm=200Hz de tipo sonido. El resultado se puede observar en la gura 6.13. Si en lugar de tener dos se nales se tiene una se nal y un escalar, se realizar a el producto de las amplitudes de la secuencia por dicho escalar. Se van a demostrar las distintas propiedades de convoluci on. Para ello es imprescindible la creaci on de una nueva se nal, se va a denominar U. >> U=[1,2,3,4,5,6]; >> U=signal(U,1); La secuencia U[n] se puede observar en la gura 6.14. Con ella y las se nales S[n] y Z[n], se van a realizar las distintas propiedades relacionadas con la operaci on de convoluci on. Propiedad conmutativa: S Z = Z S >> S.*Z >> Z.*S

131

70

60

50

40

30

20

10

10

12

14

16

Figura 6.13: Se nal resultante P[n].

Figura 6.14: Se nal U[n].

132

Propiedad asociativa: S (Z U ) = (S Z ) U >> S.*(Z.*U) >> (S.*Z).*U

Propiedad distributiva: S (Z + U ) = (S Z ) + (S U ) >> S.*(Z+U) >> (S.*Z)+(S.*U)

Propiedad asociativa con multiplicaci on escalar: a(S Z ) = (aS ) Z = S (aZ ), considerando a como un escalar. >> a(S.*Z) >> (aS).*Z >> S.*(aZ)

6.4.

Ejemplo pr actico 4

Ejercicio. Aplicar distintos ltros a un chero.WAV que contiene una se nal de a audio, comprobando los resultados obtenidos. El chero se llama . udio.wav. El objetivo de esta pr actica es familiarizar al usuario con el manejo de ltros creados en la clase signal, mostrando las facilidades que presenta esta clase frente a la construcci on de funciones para el dise no de ltros por el propio usuario. Este ejercicio se va a realizar ntegramente con la clase signal. Se van a emplear ltros paso bajo, paso alto, paso banda y elimina banda.

133

0.06 0.05 0.04 0.03 0.02 0.01 0 0.01 0.02 0.03 0.04 0 0.5 1 1.5 2 2.5 3 3.5 x 10
5

Figura 6.15: Se nal original A, perteneciente al chero audio.wav. En primer lugar, desde el cuadro de comandos de MATLAB se carga un chero con la se nal de audio original mediante una funci on propia de la clase, nal se observa en la gura 6.15. signal wread . La se (.audio.wav) >> hold_screen on >> %Permite visualizar graficamente >> hold_audio on >> %Permite al usuario escuchar la senial original >> A=signal_wread(audio); Para poder ejecutar el ltro paso bajo es necesario conocer sus frecuencias de muestreo (fs) y de corte (fc), ya que son los argumentos de entrada de dicha funci on. La elecci on de ambas frecuencias depende del teorema de Nyquist para que no se produzca aliasing al pasar la se nal por el ltro. En este caso se va a considerar 44,1KHz de fs y 3KHz de fc. la senial original

134

Si se pretende conocer la respuesta en frecuencia normalizada adem as de la respuesta en el tiempo, se debe realizar una llamada a la funci on @signal/lter PBplot. Sin embargo, si se pretende s olo obtener una representaci on gr aca, se utiliza el m etodo @signal/lter PB. Adem as de la llamada al ltro, se va a realizar directamente el ltrado paso bajo de la se nal A. Se implementa con s olo dos l neas: >> B=filter_PBplot(3000,44100); >> %fc=3000Hz y fs=44100Hz >> C=A.*B; >> %De esta forma se realiza el filtrado de la senial A. En las guras 6.16 y 6.17 se puede observar la respuesta del ltro paso bajo, sabiendo que la transformada de Fourier de un pulso es una sinc y viceversa (Propiedad de dualidad). La representaci on de la se nal ltrada (C) se puede observar en la gura 6.18. Se aprecia la eliminaci on de las frecuencias elevadas de la se nal, manteniendo las bajas. Se va a emplear el mismo proceso para el resto de ltros. De esta manera se podr a apreciar como var a la se nal de audio resultante tras los procesos. Considerando la misma se nal original A, se va a realizar un ltrado paso alto siguiendo pautas semejantes al ejemplo anterior. Para ello, se puede realizar una llamada a la funci on @signal/lter PAplot si se quiere obtener una la representaci on en frecuencia normalizada del ltro, o al m etodo @signal/lter PA en caso contrario. Hay que elegir las frecuencias de corte y de muestreo m as apropiadas para realizar el proceso, teniendo en cuenta que para realizar la convoluci on de la se nal original y el ltro deben tener ambos la misma frecuencia de muestreo. >> D=filter_PAplot(3000,44100); >> %fc=3000Hz y fs=44100Hz >> E=A.*D; >> %De esta forma se realiza el filtrado de la senial A.

135

0.14 0.12 0.1 0.08 0.06 0.04 0.02 0 0.02 0.04

200

400

600

800

1000

1200

Figura 6.16: Respuesta del ltro paso bajo en el tiempo. En la gura 6.21 se puede observar la se nal obtenida tras el ltrado paso alto en la que se aprecia una desaparici on importante de las bajas frecuencia, manteniendo las altas. A continuaci on se va a repetir el proceso llevado a cabo en los dos casos anteriores, pero ahora con un ltro paso banda. Este es una conexi on en cascada de un ltro paso bajo y un ltro paso alto. La se nal original sigue siendo A. Este caso tiene la peculiaridad de poseer dos frecuencias de corte como argumento de entrada, fc1 y fc2, ya que se trata de una respuesta de tipo paso banda. El orden de colocaci on de las frecuencias de corte como argumentos de entrada a lter PBandaplot no es importante, ya que la funci on internamente las ordena. Lo mismo ocurre con el ltro elimina banda. Teniendo en cuenta que las frecuencias de corte deben respetar la condici on de Nyquist y que la fs debe ser igual a la frecuencia de la se nal original, se implementa de la siguiente manera: >> G=filter_PBandaplot(3000,15000,44100); >> %fc1=3000Hz, fc2=15000 y fs=44100Hz >> H=A.*G;

136

1.4 Ideal Filtro real 1.2

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

Figura 6.17: Respuesta del ltro paso bajo normalizado (verde) y respuesta ideal del ltro (azul).

137

0.06 0.05 0.04 0.03 0.02 0.01 0 0.01 0.02 0.03 0.04 0 0.5 1 1.5 2 2.5 3 3.5 x 10
5

Figura 6.18: Se nal C ltrada.

1.2

0.8

0.6

0.4

0.2

0.2

200

400

600

800

1000

1200

Figura 6.19: Respuesta del ltro paso alto en el tiempo.

138

1.4 Ideal Filtro real 1.2

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

Figura 6.20: Respuesta del ltro paso alto normalizado (verde) y respuesta ideal del ltro (azul).

139

0.025 0.02 0.015 0.01 0.005 0 0.005 0.01 0.015 0.02 0.025 0 0.5 1 1.5 2 2.5 3 3.5 x 10
5

Figura 6.21: Se nal E ltrada. >> %De esta forma se realiza el filtrado de la senial A. En la gura 6.24 se observa la banda de frecuencias de la se nal original resultante tras pasar por el ltro paso banda. Por u ltimo, se va a ejecutar el ltrado elimina banda. Este ltro posee dos frecuencias de corte, superior e inferior (fc1 y fc2), y una frecuencia de muestreo que debe cumplir la condici on de la funci on de convoluci on. Para poder visualizar la respuesta en frecuencia es necesario utilizar el m etodo @signal/lter PElimina Bandaplot, sino se llama a @signal/lter PElimina Banda. >> K=filter_PElimina_Bandaplot(4000,15000,44100); >> %fc1=4000Hz, fc2=15000 y fs=44100Hz >> L=A.*K; >> %De esta forma se realiza el filtrado de la senial A. En la gura 6.27 se aprecia la se nal resultante de la eliminaci on de una banda de frecuencias, entre 3KHz y 15KHz.

140

0.6 0.5 0.4 0.3 0.2 0.1 0 0.1 0.2 0.3 0 500 1000 1500 2000 2500

Figura 6.22: Respuesta del ltro paso banda en el tiempo.

6.5.

Ejemplo pr actico 5

Ejercicio. Aplicar la codicaci on a un archivo.WAV que contiene una se nal de audio. Ejecutar adem as la codicaci on de CANAL PLUS. El chero se llama a . udio.wav. La metodolog a utilizada en esta pr actica consiste en convertir al alumno en usuario de una herramienta software ya implementada, como ocurre en la pr actica anterior. Esta herramienta tiene como tema principal la codicaci on de se nales. El objetivo fundamental de este ejemplo es ayudar al usuario a asimilar algunos conceptos generales de procesado de se nal. La gura 6.28 representa el proceso llevado a cabo por la clase signal para construir la codicaci on de se nales. Este proceso se basa en el ltrado y la multiplicaci on por una se nal sinusoidal. En MATLAB, el usuario no necesita realizar los pasos que se explican en la gura 6.28, sino ejecutar la funci on @signal/codicacion.

141

1.4 1.2 1 0.8 0.6 0.4 0.2 0 Ideal Filtro real

0.2

0.4

0.6

0.8

Figura 6.23: Respuesta del ltro paso banda normalizado (verde) y respuesta ideal del ltro (azul).

142

0.025 0.02 0.015 0.01 0.005 0 0.005 0.01 0.015 0.02 0.025 0 0.5 1 1.5 2 2.5 3 3.5 x 10 4
5

Figura 6.24: Se nal H ltrada.

0.6

0.5

0.4

0.3

0.2

0.1

0.1

200

400

600

800

1000

1200

Figura 6.25: Respuesta del ltro elimina banda en el tiempo.

143

1.4 Ideal Real 1.2

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

Figura 6.26: Respuesta del ltro elimina banda normalizado (verde) y respuesta ideal del ltro (azul).

144

0.06 0.05 0.04 0.03 0.02 0.01 0 0.01 0.02 0.03 0.04 0 0.5 1 1.5 2 2.5 3 3.5 x 10
5

Figura 6.27: Se nal L ltrada.

Figura 6.28: Proceso de codicaci on de una se nal.

145

0.04

0.03

0.02

0.01

0.01

0.02

0.03

6 x 10

7
4

Figura 6.29: Se nal original A perteneciente archivo entrada.wav. Antes de aplicar la codicaci on, es fundamental efectuar la llamada a la se nal de entrada que se encuentra almacenada en un chero. El nombre del archivo es entrada.wavy se puede observar en la gura 6.29. En MATLAB se realiza de la siguiente manera: >> hold_screen on >> % permite visualizar la se\~{n}al de entrada >> hold_audio on >> % permite escuchar la se\~{n}al de audio >> A=signal_wread(entrada) El proceso de codicaci on se ha simplicado gracias a la clase signal, en una sola l nea. En la se nal de salida gr acamente no se aprecia una variaci on notable, sin embargo, el sonido muestra que se alcanza la digitalizaci on. >> C=codificacion(A) >> % ejecuta la funcion de codificacion.

146

0.04 0.03 0.02 0.01 0 0.01 0.02 0.03 0.04

6 x 10

7
4

Figura 6.30: Se nal digitalizada C . Si se desea recuperar la se nal original a partir de la codicada, se puede conseguir realizando tres codicaciones m as en cascada. Esto signica que la salida de un proceso ser a el argumento de entrada para el siguiente, y as sucesivamente. La se nal nal tras toda la cadena no es id entica a la original por la falta de precisi on de los ltros. >> D=codificacion(C); >> E=codificacion(D); >> F=codificacion(E); Para efectuar la codicaci on de CANAL PLUS, la clase signal dispone de una funci on espec ca para realizarla. Se va a tomar como argumento de entrada una se nal aut entica de canal plus almacenada en un archivo llamado Canal+.wav. Esta se nal tiene dos canales, por ser est ereo. A continuaci on se va a cargar en MATLAB la el argumento de entrada y a ejecutar la codicaci on de canal plus. >> hold_screen on >> % permite visualizar la se\~{n}al de entrada

147

>> hold_audio on >> % permite escuchar la se\~{n}al de audio >> [canal1,canal2]=signal_wread(Canal+) >> P=codificacion_Cplus(canal1) >> Q=codificacion_Cplus(canal2)

Bibliograf a
[1] Emilio Soria Olivas. Marcelino Mart nez Sober. Jos e Vicente Franc es Villora. Gustavo Camps Valls. Tratamiento Digital de Se nales. Problemas y ejercicios resueltos. Pearson Educaci on, 2003. [2] Alan V. Oppenheim, Alan S. Willsky; con la colaboraci on de Ian T. Young. Se nales y Sistemas. Prentice-Hall Hispanoamericana, 1983. [3] H. Nyquist. Certain topics in telegraph trasmission theory.1928. [4] C. Sidney Burrus; James H. McClellan; Alan V. Oppenheim; Thomas W. Parks; Ronald W. Schafer; Hans W. Schuessler. Ejercicios de Tratamiento de la Se nal utilizando MATLAB v.4. Prentice-Hall, 1998. [5] Javier Garc a de Jal on, Jose Ignacio Rodr guez, Jes us Vidal. Aprenda Matlab 7.0 como si estuviera en primero. Universidad Polit ecnica de Madrid, 2005. [6] Hector Jos e P erez Iglesias. Se nales y sistemas discretos. 2 de diciembre de 2005.

148

You might also like