Universidad Central “Marta Abreu” de Las Villas Facultad de Ingeniería Eléctrica Departamento de Automática y Sistemas Computacionales TRABAJO DE DIPLOMA Programa de Generación de Datos Aperiódicos No Repetitivos para Desarrollo de Algoritmos de Identificación Autor: Nelson Figueredo Sánchez Tutor: Dr. Francisco Beraldo Herrera Fernández Santa Clara 2014 "Año 56 de la Revolución" Universidad Central “Marta Abreu” de Las Villas Facultad de Ingeniería Eléctrica Departamento de Automática y Sistemas Computacionales TRABAJO DE DIPLOMA Programa de Generación de Datos Aperiódicos No Repetitivos para Desarrollo de Algoritmos de Identificación Autor: Nelson Figueredo Sánchez E-mail: [email protected] Tutor: Dr. Francisco Beraldo Herrera Fernández Dpto. de Automática, Facultad de Ing. Eléctrica, UCLV E-mails: [email protected] Santa Clara 2014 "Año 56 de la Revolución" Hago constar que el presente trabajo de diploma fue realizado en la Universidad Central “Marta Abreu” de Las Villas como parte de la culminación de estudios de la especialidad de Ingeniería en Automática, autorizando a que el mismo sea utilizado por la Institución, para los fines que estime conveniente, tanto de forma parcial como total y que además no podrá ser presentado en eventos, ni publicados sin autorización de la Universidad. Nelson Figueredo Sánchez Autor Los abajo firmantes certificamos que el presente trabajo ha sido realizado según acuerdo de la dirección de nuestro centro y el mismo cumple con los requisitos que debe tener un trabajo de esta envergadura referido a la temática señalada. Francisco B. Herrera Fernández Boris Luis Martínez Jiménez Dr.C. Tutor Dr.C. Jefe de Departamento Firma del Responsable de Información Científico-Técnica i "Más vale encender una vela, que maldecir la oscuridad” Proverbio popular chino ii DEDICATORIA A mis padres, por su perseverancia. A mis abuelos, por su amor. A mis amigos. A mi familia. A los Turcos. iii AGRADECIMIENTOS Esta tesis refleja la culminación del estudio llevado a cabo durante los últimos años; sin embargo, la consecución de este objetivo no se debe únicamente a la investigación, sino a las maravillosas relaciones establecidas con personas extraordinarias. En primer lugar me gustaría agradecer a la Facultad de Ingeniería Eléctrica y al departamento de Automática el haberme formado como profesional. En segundo lugar me gustaría mostrar mi gratitud a: Dr. Francisco Herrera, mi tutor, por inspirarme toda la confianza y calma necesaria para culminar esta memoria. Mi más sincero agradecimiento al profesor Orlando Urquijo, por ofrecer, en todo momento, su tiempo y sus consejos en la realización de este trabajo. A la familia Armiñana, por su apoyo incondicional, esta también es su tesis. A mis hermanos: Víctor (Viky), La, Víctor, Frenk, Robaina, Andrés; por permitirme vivir junto a ellos los mejores momentos de mi juventud. A mis amigos: Suazo, Osvaldo, Leosdany, Sergio, Reynaldo; por acompañarme en las buenas y las malas. Gracias, asimismo, a todas aquellas personas que de alguna forma hayan prestado su ayuda y que involuntariamente haya omitido. iv A mis padres, sin cuya ayuda y paciencia no habría podido escribir estas líneas. v RESUMEN Actualmente el desarrollo de nuestro país establece la necesidad de aplicar nuevos métodos matemáticos y numéricos de optimización. El mejoramiento de los métodos de solución de problemas no lineales, de análisis estadísticos, así como los aspectos teóricos y prácticos relacionados con el desarrollo y aplicación de la inteligencia artificial como temas obligados para la producción de nuevos conocimientos. La presente tesis plantea como objetivo fundamental la síntesis de irregularidades características de los sistemas dinámicos, en forma de Datos Aperiódicos No Repetitivos (DANR), con las cuales se hace engorrosa la predicción y estimación de modelos. Para ello se implementó un programa de generación de DANR. Esto permitirá desarrollar nuevas técnicas de identificación de sistemas a partir de la experimentación y simulación con estas singularidades. El resultado más relevante es la implementación de funciones generadoras de DANR con ayuda de las herramientas del MatLab®, con las cuales la síntesis se simplificó considerablemente. vi TABLA DE CONTENIDOS DEDICATORIA .................................................................................................................... ii AGRADECIMIENTOS ........................................................................................................ iii RESUMEN ............................................................................................................................. v INTRODUCCIÓN .................................................................................................................. 1 Organización del informe ................................................................................................... 3 CAPÍTULO 1. DATOS APERIÓDICOS NO REPETITIVOS ......................................... 5 1.1 Datos. Definiciones .................................................................................................. 5 1.2 Definición del tema de investigación.Datos Aperiódicos No Repetitivos ............... 7 1.3 Datos muestreados a intervalos irregulares de tiempo ............................................. 8 1.4 El análisis estadístico de datos ............................................................................... 12 1.4.1 1.5 Problemáticas en el análisis de datos .............................................................. 13 Análisis espectral en las series temporales............................................................. 17 1.5.1 Análisis espectral vía el Periodograma Lomb-Scargle (PLS) ........................ 18 1.5.2 Metodología .................................................................................................... 19 1.6 El periodograma clásico vs el PLS......................................................................... 21 1.7 Identificación de sistemas ...................................................................................... 23 1.7.1 Pasos básicos para la identificación de sistemas ............................................ 23 1.7.2 De la obtención de datos ................................................................................. 24 vii 1.7.3 Elección de las señales a medir....................................................................... 25 1.7.4 Elección del tipo de entrada/salidas ................................................................ 25 1.7.5 Elección del periodo de muestreo ................................................................... 26 1.7.6 Elección del número de muestras ................................................................... 26 1.7.7 Procesamiento de los datos escogidos para la identificación ......................... 27 1.8 Síntesis de datos. MatLab® como herramienta de síntesis .................................... 27 1.9 Observaciones del capítulo .................................................................................... 28 CAPÍTULO 2. ROGRAMA DE GENERACIÓN DE DANR ......................................... 29 2.1 Estrategia de trabajo ............................................................................................... 29 2.2 Ajuste del diseño .................................................................................................... 30 2.2.1 2.3 Elección de los periodos de muestreo ............................................................. 31 Diseño de los periodos de muestreo. Secuencia aleatoria ...................................... 32 2.3.1 Secuencia triangular ........................................................................................ 36 2.3.2 Secuencia oscilatoria....................................................................................... 39 2.4 Generación de DANR básicos ............................................................................... 42 2.5 Generación de DANR ............................................................................................ 46 2.5.1 2.6 Algoritmo de generación de DANR ............................................................... 47 Observaciones de los resultados obtenidos ............................................................ 48 2.6.1 Limitaciones.................................................................................................... 51 CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN.................................... 53 3.1 Creación de archivos-M de función ....................................................................... 53 3.2 Función generadora de periodos de muestreo ........................................................ 54 3.2.1 Función para secuencia aleatoria. Ts_random............................................. 55 3.2.2 Función para secuencia aleatoria. Ts_triangular ................................... 56 viii 3.2.3 Función para secuencia aleatoria. Ts_oscilatoria................................. 57 3.3 Funciones generadoras de DANR básicos ............................................................. 58 3.4 Funciones generadoras de DANR .......................................................................... 59 3.4.1 Aspectos básicos de identificación ................................................................. 59 3.4.2 Parámetros de diseño ...................................................................................... 60 3.5 Evaluación de las funciones ................................................................................... 61 3.5.1 Evaluación de errores...................................................................................... 66 3.6 Help de usuario ...................................................................................................... 68 3.7 Observaciones del capítulo .................................................................................... 71 3.8 Análisis económico ................................................................................................ 71 3.9 Conclusiones del capítulo ...................................................................................... 73 CONCLUSIONES Y RECOMENDACIONES ................................................................... 75 Conclusiones ..................................................................................................................... 75 Conclusiones generales ..................................................................................................... 75 Recomendaciones ............................................................................................................. 76 REFERENCIAS BIBLIOGRÁFICAS ................................................................................. 77 ANEXOS .............................................................................................................................. 79 Anexo I Programación complementaria ......................................................................... 79 Anexo II Programación de experimentos ........................................................................ 97 Anexo III Funciones de apoyo .......................................................................................... 98 Anexo IV Diagramas de flujo ......................................................................................... 101 INTRODUCCIÓN 1 INTRODUCCIÓN La vida real raramente es determinística. Muchas de las influencias externas a un sistema bajo estudio y el comportamiento de los componentes internos del sistema siguen un patrón no determinístico o aleatorio. Hoy en día, diversas instituciones requieren conocer el comportamiento futuro de ciertos fenómenos con el fin de planificar, prever o prevenir. El término Identificación de Sistemas (IS)(Ljung 2010) es asociado a las técnicas numéricas para extraer información acerca de la estructura de estos sistemas directamente de datos experimentales del comportamiento de los mismos. El desarrollo de la teoría de identificación surgió alrededor de 1960; mucho del trabajo desarrollado en identificación fue llevado a cabo por comunidades estadistas y de series de tiempo. No obstante, la teoría estadística para la estimación de parámetros tiene sus raíces en los trabajos de Gauss (1809) y Fisher (1912). Mucha de la teoría de procesos estocásticos estacionarios fue desarrollada durante el periodo comprendido entre 1920 y 1970.(Montero 2007) El término Identificación de sistemas fue acuñado por Lofti Zadeh en 1962 (Zadeh 1962), como: “Identificación es la determinación, en base a la entrada y la salida, de un sistema, dentro de una clase de sistemas especificada, al cual el sistema probado es equivalente”. Puede decirse que la identificación de sistemas quedó establecida como un campo de investigación reconocido dentro del área de control automático a mediados de los sesenta: en el tercer congreso de la IFAC en Londres, 1966 en el que fue presentado un artículo de visión general sobre identificación de sistemas. Un año después fue organizado el primer Simposio IFAC sobre identificación de sistemas en Praga. En la actualidad es el Simposio con una serie más larga de la IFAC. La teoría sobre identificación de sistemas está reunida, por ejemplo, en INTRODUCCIÓN 2 los libros de Ljung(Ljung 1999) y de Söderstrom y Stoica(T.Söderstrom 1989), donde también se pueden encontrar numerosas referencias. Es precisamente la identificación de sistemas una herramienta con la cual se pueden estimar modelos, con base en datos (entrada-salida) recolectados de dichos sistemas. Esta herramienta brinda una buena relación entre esfuerzo de obtención de un modelo y calidad del mismo. El constante estudio en esta área del saber ha permitido la creación de variadas técnicas de identificación (Ljung 2010) con el fin de mejorar la eficiencia del algoritmo, acercándose cada vez más a una aproximación del sistema real. Sin embargo, son variadas las causas que normalmente atentan contra una correcta aplicación de las técnicas de identificación. Entre ellas las incertidumbres, dinámicas impredecibles y otros fenómenos desconocidos que no pueden ser modelados por vía directa. Los modelos a obtener usualmente dependen de un número de parámetros cuyos valores no son conocidos o solo parcialmente conocidos. En ocasiones, incluso, es posible medir solo una parte de la dinámica del sistema a identificar. Actualmente, existen problemas en la estimación de parámetros en la identificación del modelo de un sistema de datos en el tiempo con las siguientes características: Datos muestreados en intervalos irregulares de tiempo (un periodo de muestreo variable) Ciclos de datos en el tiempo de frecuencia y periodos variables. Estas características dominan estos Datos Aperiódicos No Repetitivos (DANR) y a su vez complejizan la tarea de extracción de conocimientos de un proceso o sistema, o sea, la identificación de las propiedades estáticas y dinámicas. Si bien el continuo análisis estadístico de los datos que conforman determinadas características de los sistemas en cuestión ha sido la herramienta más eficiente para la identificación en la búsqueda de una aproximación del sistema real, la experimentación a través de la síntesis permite la simulación de dichas características; de hecho, tener una amplia y potente capacidad de procesamiento de datos obtenidos experimentalmente posibilita mejorar los procedimientos de cálculo y/o estimación de las dinámicas de comportamiento de sistemas de cualquier naturaleza del cual se hayan obtenido los datos. Esta situación implica la necesidad de emplear las herramientas de la inteligencia artificial para viabilizar la solución INTRODUCCIÓN 3 del problema de identificación. Convencidos de esto, la presente tesis pretende realizar un estudio de las propiedades de los Datos Aperiódicos No Repetitivos (DANR) e implementar programas para la simulación de estos, e intenta que la solución propuesta cumpla con las características citadas con anterioridad. Esto marca la siguiente interrogante: ¿Cómo desarrollar programas que permitan generar y simular DANR de uso experimental en el desarrollo de la identificación de sistemas? Para darle respuesta se planteó como objetivo general: Implementar programas de generación de DANR para el desarrollo de nuevas técnicas de identificación de sistemas. Los objetivos específicos son: Analizar los diferentes tipos de DANR reportados en la literatura científica. Implementar programas eficientes que permitan la generación de DANR. Evaluar mediante simulación los programas de generación de DANR. Formar un ejecutable/función que defina el uso del programa en dependencia de los tipos de DANR. La hipótesis formulada es: La implementación de programas de generación de DANR, contribuirá al mejoramiento de los sistemas existentes para el procesamiento e interpretación de datos experimentales en el desarrollo de nuevos algoritmos de identificación. Organización del informe Introducción: Se deja definida la importancia, actualidad y necesidad del tema que se aborda y los elementos del diseño teórico de la tesis. Capitulario: El informe de la investigación se estructura en introducción, capitulario, conclusiones, referencias bibliográficas, bibliografía y anexos. Los temas que se abordan en cada capítulo quedan estructurados de la forma siguiente: INTRODUCCIÓN 4 En el CAPÍTULO 1 se hace un estudio a la teoría correspondiente a los DANR y al análisis estadístico de estos. Se evalúa la viabilidad del trabajo en base a los medios y materiales escogidos para la implementación del programa a diseñar. En el CAPÍTULO 2 se especifican los diferentes tipos de DANR a diseñar y la programación correspondiente. Análisis pertinentes se irán realizando conforme se explique el ajuste. Se programan los DANR previamente diseñados apoyados en las herramientas del MatLab®, y se ajusta un algoritmo que defina la generación de DANR. En el CAPÍTULO 3 se ajusta la programación de los DANR diseñados a través de funciones lógicas. Las herramientas del MatLab® permiten la creación de estas funciones, conjunto con un manual de uso que define su implementación en la identificación de sistemas. CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 5 CAPÍTULO 1. DATOS APERIÓDICOS NO REPETITIVOS En este primer capítulo: Datos Aperiódicos No Repetitivos, se define y acota el tema de la investigación. Se procede la definición del tema comenzando por una revisión conceptual y definitoria primero, y, seguidamente por la exposición del recorrido bibliográfico que condujo a esa finalidad. 1.1 Datos. Definiciones En la investigación empírica es muy común encontrar series de datos aperiódicos, es decir, aquéllas cuyos valores irregularmente espaciados en el tiempo condicionan el uso de las técnicas convencionales de análisis estadístico. Esto ha inducido la necesidad de utilizar técnicas que subsanen los problemas derivados de la aperiodicidad de datos y, así, estar en condiciones de proseguir el análisis de una manera eficiente. La preocupación por el problema de las series de datos ha dado lugar a una amplia literatura debido a que para la realización de análisis estadísticos la presencia de valores no equispaciados temporalmente conlleva a la ineficiencia estadística a la hora de predecir o planificar. Abordar las definiciones referentes a los datos permite definir el tema de investigación. Consultemos que dicen los diccionarios acerca de los datos: Según el Diccionario Manual De La Lengua Española (vol. 2007) y (Toro 1968) dato es: Del latín datum (“lo que se da”), un dato es un documento, una información o un testimonio que permite llegar al conocimiento de algo o deducir las consecuencias CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 6 legítimas de un hecho. Por ejemplo: “Hemos descubierto al asesino gracias a los datos aportados por un testigo”. Según el Diccionario enciclopédico (vol. 2009) dato es: una representación simbólica (numérica, alfabética, algorítmica, etc.) de un atributo o variable cuantitativa. Los datos describen hechos empíricos, sucesos y entidades. Es un valor o referente que recibe el computador por diferentes medios. Los datos representan la información que el programador manipula en la construcción de una solución o en el desarrollo de un algoritmo (Báez 2008). En el campo de las humanidades, los datos se consideran como una expresión mínima de contenido respecto a un tema: “Faltan datos para terminar la investigación”. El conjunto de los datos relacionados constituyen una información. Para la informática, los datos son expresiones generales que describen características de las entidades sobre las que operan los algoritmos. Es información que se suministra al ordenador y que este almacena de forma legible: “datos numéricos o alfanuméricos; situar el cursor en el campo correspondiente e introducir el nuevo dato”. Estas expresiones deben presentarse de cierta manera para que puedan ser tratadas por una computadora. En estos casos, los datos por sí solos constituyen información, sino que ésta surge del adecuado procesamiento de los datos. En las matemáticas es un número, cantidad del enunciado de un problema que permite hallar el valor de las incógnitas: “Los datos eran insuficientes para resolver la ecuación”. En programación, un dato es la expresión general que describe las características de las entidades sobre las cuales opera un algoritmo. Figura 1.1 Un dato por sí mismo no constituye información. Es el procesamiento de los datos es lo que nos proporciona información CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 7 Procesamiento: Acto de procesar. Procesamiento de datos: Aplicación sistemática de una serie de operaciones sobre un conjunto de datos, generalmente por medio de máquinas, para explotar la información que estos datos representan. Los datos aisladamente pueden no contener información humanamente relevante. Sólo cuando un conjunto de datos se examina conjuntamente a la luz de un enfoque, hipótesis o teoría se puede apreciar la información contenida en dichos datos. Los datos pueden consistir en números, estadísticas o proposiciones descriptivas y estos convenientemente agrupados, estructurados e interpretados se consideran que son la base de la información humanamente relevante que se puede utilizar en la toma de decisiones, la reducción de la incertidumbre o la realización de cálculos. 1.2 Definición del tema de investigación. Datos Aperiódicos No Repetitivos Con frecuencia se realizan observaciones de datos a través del tiempo. Cualquier variable que conste de datos reunidos, registrados u observados sobre incrementos sucesivos de tiempo se denomina serie de tiempo o señales. Normalmente se define una serie temporal como una función no determinística o aleatoria 𝑋 que depende de una variable 𝑡 (tiempo). Se admite que la serie temporal representa el muestreo de una población, suponiendo además, que es estacionaria, es decir, que su promedio, varianza y otros momentos estadísticos son invariantes a desplazamientos temporales (Buschiazzo 2009). Asimismo, una señal es una función de una variedad de parámetros, uno de los cuales es usualmente el tiempo, que representa una cantidad o variable física, y típicamente contiene información o datos sobre la conducta o naturaleza de un fenómeno (Morón 2011). Las señales pueden describir una variedad muy amplia de fenómenos físicos. Aunque las señales pueden representarse en muchas formas, en todos los casos, la información en una señal está contenida en un patrón1 que varía en alguna manera. 1 Para nuestra investigación usaremos esta acepción como patrón de comportamiento, se define comportamiento como toda conducta observable que caracterice un fenómeno, proceso u organismo. CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 8 La gran mayoría de los procesos dinámicos contiene una gama de parámetros y características que lo identifica y lo diferencia de los demás; se define un 𝑝𝑟𝑜𝑐𝑒𝑠𝑜 𝑋(𝑡) como un fenómeno que cambia en el tiempo o el espacio. Los procesos suelen clasificarse en determinísticos, si existe una relación definida o causal, por lo que la obtención de nuevos datos u observaciones no agregan información sobre el mismo, y estocásticos cuando están definidos por una distribución de probabilidades; estos, por supuesto, son más complejos que su análogo determinístico (Cubero 2008); En principio, las variables y procesos de sistemas dinámicos están gobernados por leyes o principios físicos, químicos o biológicos fundamentales, y aunque son considerados sistemas deterministas, la presencia de procesos caóticos crea un tipo de variabilidad que no permite distinguirla de las variaciones aleatorias (ruido). Esto infiere en las propiedades de un sistema dándole características únicas, es decir, no existen dos lo suficientemente parecidos como para inferir en las propiedades de uno del otro o viceversa; otras veces la variabilidad de las características de un fenómeno de esta magnitud se ven afectadas por errores o aperiodicidad en la obtención de los parámetros que la conforman siendo esto un suceso inherente al proceso que determina en sí un patrón característico. Las señales o series de tiempo, como se estime, que conforman dichos patrones se caracterizan por: Datos muestreados en intervalos irregulares de tiempo (un periodo2 de muestreo variable) Ciclos de datos en el tiempo de frecuencia y periodos variables. Los datos con estas características definen lo que se considera en el trayecto de la investigación como Datos Aperiódicos No Repetitivos (DANR). 1.3 Datos muestreados a intervalos irregulares de tiempo En este apartado se hace una breve revisión en cuanto a muestreo de datos se trata. Si bien es una de las características fundamentales de los DANR, la comprensión desde un punto 2 Periodo o período: espacio de tiempo después del cual se reproduce alguna cosa. En Aritmética cifras que se repiten indefinidamente, después del cociente entero, en las divisiones inexactas. CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 9 de vista teórico permite comprender como se manifiesta la aperiodicidad en el muestreo de los datos. Cuando se trabaja con una serie con datos tomados a intervalo de muestreo constante pero con unos pocos datos que se han perdido o no fueron medidos (menores al 10 % de la secuencia), se pueden imputar3dichos valores por interpolación. Se entiende por interpolación a los métodos de estimación del valor de una variable dependiente en función de otra para valores intermedios a los conocidos(Moore 2010) (Figura 1.2). Figura 1.2 Interpolación de datos Sin embargo, en el caso de que la ausencia de datos sea mayor o se trate de series irregulares, la interpolación modifica el contenido espectral (Rodríguez-Igúzquiza 2013)de la secuencia y debería ser evitada(M.Schulz-K.Stattegger 1997). En estos casos, lo más conveniente es trabajar directamente con la serie irregular. Aunque existen diferentes 3 Según el Diccionario de la Real Academia Española: Imputación: Acción y efecto de imputar. Imputar: en su segunda acepción “Señalar la aplicación o inversión de una cantidad, sea al entregarla, sea al tomar razón de ella en cuenta”. Según el diccionario de María Moliner se dice: “Asignar cierto destino a una cantidad, al entregarla o al consignarla”. De esta definición destaca el verbo asignar y la expresión cierto destino a una cantidad. En el sentido que se maneja, “destino” sería la prosecución del análisis estadístico, y “asignación” sería el resultado de la imputación. CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 10 alternativas a la interpolación(D.Heslop-M.J.Dekkers 2002) y diferentes métodos han sido analizados en revisiones de métodos espectrales de series irregulares(Stoica.P-Sandgren.N 2006; Babu.P-Stoika.P 2010), el Periodograma de Lomb-Scargle (PLS) (Lomb.N.R 1976; Scargle.J.D 1982) es la técnica más utilizada en la gran mayoría de las disciplinas. (Análisis más detallado en cuanto a espectro de series de datos se realizan en epígrafes posteriores). Una serie temporal con muestreo irregular se puede considerar como una colección de N datos experimentales{z(t1 ), z( t 2 ), … , z(t N )} donde las coordenadas temporales t1 < t 2 < … < t N son arbitrarias, esto es, sin asumir una distancia constante entre cada pareja de datos consecutivos (ver Figura 1.3). Se considera que los datos experimentales constituyen una realización de una función aleatoria estacionaria de segundo orden, lo que implica una esperanza matemática constante e independiente del tiempo, así como la presencia de una autocovarianza (momento de segundo orden) (Vallejo 2007) que solo depende del tiempo entre muestras experimentales. Es decir, tanto la autocovarianza como la varianza de la serie son finitas (Rodríguez-Igúzquiza 2013). Serie de tiempo con muestreo irregular 1 0.9 0.8 0.7 Datos 0.6 0.5 0.4 0.3 0.2 0.1 0 t_0 t_1=2 t_2=3 t_3=4 t_4=7 t_5=9 t_6=10 t_N Tiempo Figura 1.3 Serie de tiempo con muestreo irregular En el análisis de señales la concepción del muestreo variable se analiza desde otro punto de vista. Hay dos tipos básicos de señales: señales en tiempo continuo o señales analógicas y señales en tiempo discreto o digitales. Una señal 𝑥(𝑡) es una señal en CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 11 tiempo continuo si la variable independiente es una variable continua y, por ende, estas señales están definidas para un continuo de valores de esa variable; es decir, el valor de 𝑥(𝑡) es especificado en todo instante 𝑡 de un intervalo de tiempo dado, ya sea mediante una expresión matemática o gráficamente por medio de una curva; en otras palabras, la variable independiente puede tomar cualquier valor real. Si la variable independiente 𝑡 es una variable discreta, es decir, 𝑥(𝑡) está definida en puntos del tiempo discretos, entonces 𝑥(𝑡) es una señal en tiempo discreto, a menudo generada por muestreo de una señal de tiempo continuo (Figura 1.4). Como una señal de tiempo discreto está definida solamente en tiempos discretos, con frecuencia se identifica como una secuencia de números, denotada por {𝑥𝑛} o 𝑥[𝑛], donde, para nuestros propósitos, n es un entero. Señal continua x(t) 1 Datos 0.8 0.6 0.4 0.2 0 0 10 20 30 40 50 60 70 80 90 100 Señal discrteta x[kT] para intervalos irregulares de tiempo 1 Datos 0.8 0.6 0.4 0.2 0 0 10 20 30 40 50 60 70 80 90 100 Tiempo Figura 1.4 Discretización de la señal continua 𝒙(𝒕) Las señales digitales no son otra cosa que sucesiones de números reales o complejos. Aunque en principio es posible pensar en señales discretas infinitas (por ejemplo, la señal que resulta de tomar muestras de una señal analógica 𝑥 ∈ 𝐿2 (ℝ) ∩ 𝐶(ℝ)para valores 𝑡 = 𝑘𝑇 , 𝑘 ∈ ℤ), en la práctica todas las señales con las que se trabaja en aplicaciones CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 12 empiezan y terminan en tiempo finito y, por tanto, para el estudio de señales digitales podremos suponer sin problemas que estas son sucesiones finitas de números4 En consecuencia, se ofrece el siguiente modelo de señal digital: Definición: El espacio de las señales digitales (unidimensionales) de tamaño N es el conjunto 𝑙 2 ℤ𝑁 = 𝑥 ∶ 0,1, … , 𝑁 − 1 → ℂ ∶ 𝑥 𝑒𝑠 𝑢𝑛𝑎 𝑎𝑝𝑙𝑖𝑐𝑎𝑐𝑖ó𝑛 . Este conjunto se puede identificar con el conjunto de las señales N-periódicas x: ℤ → ℂ 𝑙 2 ℤ𝑁 = 𝑥 ∶ ℤ → ℂ 𝑎𝑝𝑙𝑖𝑐𝑎𝑐𝑖ó𝑛 ∶ 𝑥 𝑘 + 𝑁 = 𝑥 𝑘 𝑝𝑎𝑟𝑎 𝑡𝑜𝑑𝑜 𝑘 ∈ ℤ . En aplicaciones reales, una señal digital (unidimensional) será una sucesión de números{𝑥 𝑛 }𝑁−1 𝑛=0 , donde 𝑁 es probablemente muy grande. Entonces por economía de espacios, etc., sería muy interesante saber si a partir del conocimiento de la señal 𝑥 en una muestra de valores 0 ≤ 𝑛1 < 𝑛2 < ⋯ < 𝑛𝑟 ≤ 𝑁 − 1 es posible recuperar completamente la señal 𝑥(𝑘) para todo 𝑘. Este es precisamente el problema del muestreo (irregular) para señales digitales. Evidentemente, si trabajamos con señales arbitrarias 𝑥 ∈ 𝑙 2 ℤ𝑁 , entonces no será posible la recuperación de estas a partir de valores de una muestra fija 0 < 𝑛𝑖 < 𝑛𝑖+1 < ⋯ < 𝑁. No siempre se trabaja de esta tediosa manera; para el cumplimiento del objetivo se tienen a mano herramientas que facilitan estas demostraciones de manera sencilla. 1.4 El análisis estadístico de datos Las técnicas estadísticas permiten hacer una descripción de cualquier conjunto de datos a estudio, hacer inferencias o identificar relaciones entre variables de un sistema real que podrán no ser evidentes debido a la complejidad de sistemas dinámicos. Sin embargo, hay que tener en cuenta que, cualquier conjunto de datos relacionados con estos tipos de fenómenos, contiene un grado de incertidumbre (error) porque representa una discretización muestra/espacio-temporal de un sistema continuo. Por consiguiente, siempre 4 Algunos autores llaman finitas a este tipo de señales. De hecho, es también posible restringir la atención sobre las señales finitas que además están cuantizadas, es decir, que solo pueden tomar un numero finito de valores. Esto, sin embargo, no resulta cómodo desde un punto de vista matemático. CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 13 existirán escalas (espaciales o temporales) de variabilidad que no estén resueltas, las cuales contaminan los datos (Mudelsee 2010). Por estas razones, el uso de técnicas estadísticas es adecuado porque ayuda a cuantificar los efectos de la incertidumbre, ya sea en términos de observación y medidas o en términos de entendimiento de estos procesos, puesto que permite centrar el análisis en aquellas relaciones que superen el umbral del ruido. La aplicación de técnicas estadísticas es de carácter universal porque se pueden aplicar a cualquier tipo de datos. Tales como los datos observacionales, los obtenidos de medidas instrumentales, de sensores remotos, de fuentes documentales, salidas de simulaciones numéricas de modelos determinísticos, etc. 1.4.1 Problemáticas en el análisis de datos El análisis estadístico de datos de envergadura caótica, como cualquier otra herramienta científica, no está libre de problemas. Existen varios inconvenientes propios de los datos que pueden complicar la aplicación de las técnicas estadísticas y la interpretación de resultados. A continuación se indican algunos de los problemas o inconvenientes que caracterizan a los datos que conforman muchos de los fenómenos dinámicos: Ruido: desde un punto de vista general, una serie temporal puede considerarse como la suma de una componente dinámica de tipo determinista (señal) más otra componente de origen estocástico (ruido)(Wunsch 1999). Uno de los objetivos principales en el análisis estadístico de series temporales es detectar y describir las características de la componente dinámica cuando una componente estocástica está presente, con el fin de discernir entre señal y ruido. Sin embargo, para poder determinar el tipo de ruido subyacente en un sistema real, hay que tener en cuenta las características físicas del comportamiento del sistema(Martínez 2011). Series temporales cortas y pocos elementos: otra de las características de las series temporales es que suelen ser cortas y tienen pocos elementos en comparación con la escala temporal del fenómeno a estudiar. Como consecuencia de la corta longitud de las series, los análisis estadísticos no siempre tienen un amplio margen de confianza. Por otro lado, la CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 14 disponibilidad de muy pocos elementos de una serie temporal implica no solamente una pobre resolución temporal, sino también espectral. Un problema adicional asociado con la pobre resolución temporal o espacial de los datos es que se puede producir el fenómeno del aliasing(Gunn 2003; Martínez 2011) Aliasing: muchas veces las series temporales son una representación discreta de una variable continua, donde cada elemento de la serie es obtenido en cada intervalo temporal ∆𝑡 constante. Como una consecuencia de la discretización del tiempo con un periodo de muestreo ∆𝑡 demasiado grande, surge el efecto del aliasing5(P.Weedon 2003). El efecto del aliasing puede ser ilustrado de una mejor manera con ayuda de la Figura 1.5. La serie temporal 𝑥(𝑡) (curva sinusoidal continua en la Figura 1.5) ha sido muestreada con un intervalo temporal ∆𝑡. Los puntos discretos obtenidos son compatibles con la curva sinusoidal discontinua y aliaseda en la Figura 1.5, de tal forma que se muestrean puntos en común (𝑥1 , … , 𝑥6 ) a las dos curvas. Figura 1.5 Representación esquemática del aliasing utilizando dos funciones sinusoidales con diferentes periodos e iguales amplitudes 5 Cuando se obtienen muestras periódicas de una señal sinodal, puede ocurrir que se obtengan las mismas muestras que se obtendrían de una señal sinusoidal igualmente pero con frecuencia más baja. Específicamente, si una sinusoide de frecuencia 𝑓 Hz es muestreada s veces por segundo, y 𝑠 ≤ 2 · 𝑓, entonces las muestras resultantes también serán compatibles con una sinusoide de frecuencia 𝑓𝑚 − 𝑓, donde fm es la frecuencia de muestreo. En la jerga inglesa de procesamiento de señales, cada una de las sinusoides se convierte en un "alias" para la otra, de ahí a que la señal con alias se le llame señal aliaseda. CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 15 Como se observa, no es posible determinar sin ambigüedad a qué función sinusoidal pertenecen estos puntos. El problema con esto es que, en series demasiado largas no siempre es posible controlar el ∆𝑡 de las muestras (datos) debido a la existencia de eventos periódicos de muy alta frecuencia (como el ciclo diario), cabe la posibilidad de estar trabajando con series temporales que contengan alguna señal aliaseda de alta frecuencia. Las señales de alta frecuencia muestreadas con valores demasiado largos de ∆𝑡 aparecen en el espectro como correspondientes a frecuencias más bajas, aunque esa varianza corresponde en origen a señales de alta frecuencia. No equiespaciadas temporalmente: otro de los inconvenientes que se encuentra frecuentemente al analizar series temporales, es que los tiempos de muestreo no siempre son equidistantes, es decir, las series suelen ser no equiespaciadas temporalmente (ver Figura 1.3). Existen dos tipos de series no equiespaciadas temporalmente (Martínez 2011): las series irregulares que aparecen debido a la pérdida de datos, fallos en los instrumentos u otros impedimentos en la obtención de los datos y las series no equiespaciadas temporalmente debido a la presencia de una componente estocástica en la localización espacio-temporal de los datos (muestras). La forma más común utilizada para resolver este inconveniente es la interpolación en el tiempo de la serie temporal bajo análisis (Figura 1.6). Sin embargo, esto es una mala praxis, porque la interpolación es una herramienta muy dependiente de la estructura de la serie temporal y del método de interpolación empleado (Moore 2010) y sobre todo, porque estos métodos pueden introducir información inexistente en la serie original en la nueva serie temporal equiespaciada. Como consecuencia pueden sesgar los resultados del análisis estadístico de los datos interpolados, puesto que no son independientes. Por ello, es recomendable utilizar técnicas estadísticas que puedan trabajar directamente con las series temporales no equiespaciadas sin recurrir a la interpolación (Martínez 2011). Autocorrelación, persistencia o memoria (Chatfield.C 1991): las variables que conforman series temporales frecuentemente exhiben una dependencia estadística (están autocorrelacionadas) con sus valores pasados o con sus valores futuros. Esta dependencia es conocida como persistencia o memoria y se clasifica, desde un punto de vista estadístico, en dos tipos: de corta y de larga duración(Martínez 2011). CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 16 Figura 1.6 A: Serie temporal de 200 datos con muestreo aleatorio. B: Como la serie A pero interpolada linealmente para obtener una serie con muestreo regular a intervalo constante. La primera tiene una función de autocorrelación que decae exponencialmente, mientras que la segunda tiene una función que decae lentamente de acuerdo con una ley de potencias(D. Rybski 2006). Ambos tipos de memoria son frecuentemente encontradas en los análisis estadísticos de registros ambientales, de reconstrucciones paleoambientales y de simulaciones numéricas. El problema con las series temporales que presentan autocorrelación es que no cumplen la condición de independencia en las observaciones, un requisito necesario de las técnicas de análisis estadístico clásico. Tendencia: las series temporales, por lo general, exhiben un tipo de tendencia (Figura 1.7 A), es decir, sus propiedades estadísticas, como la media, crecen o disminuyen a lo largo del tiempo (P.Weedon 2003). Sin embargo, la presencia de tendencia en una serie temporal no implica necesariamente un cambio en las características físicas del fenómeno que representan. La determinación de la tendencia en una serie temporal es una de las tareas más complicadas en el análisis estadístico de datos, sobre todo cuando las series son cortas y ruidosas (P.Weedon 2003). Sin embargo, es recomendable remover la tendencia (Figura 1.7 B) antes de realizar un análisis estadístico y trabajar con los residuos (P.Weedon 2003). También es recomendable no utilizar la inspección visual para determinar si existe o no CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 17 tendencia en una serie y para averiguar el tipo de tendencia, porque se puede llegar a conclusiones erróneas. Figura 1.7A: Serie con tendencia. Espesor de bandeado anual en una estalagmita de la cueva Carlsbad (Nuevo México, EEUU) para los últimos 3 000 años antes del presente. B: Serie una vez eliminada la tendencia(Rodríguez-Igúzquiza 2013) La presencia de outliers: las series temporales pueden presentar valores atípicos o extremos, debido a las características propias de los datos, dicho sea errores inherentes en los datos, como los de medición o por causas naturales (P.Weedon 2003). Por lo general, los valores extremos suelen ser removidos de las series a estudio porque se consideran como errores en los datos o porque las técnicas estadísticas clásicas para el análisis de datos no contemplan la existencia de valores extremos. Sin embargo, estos valores pueden contener información sobre eventos extremos del fenómeno a estudio. Para el tratamiento de eventos extremos existen técnicas estadísticas adecuadas para ello. Una descripción de estas técnicas puede encontrarse en (Mudelsee 2010). 1.5 Análisis espectral en las series temporales El análisis espectral es una de las herramientas estadísticas más utilizadas en el análisis de series temporales, ya sea para averiguar la posible existencia de eventos periódicos o para estudiar el comportamiento de la serie en el dominio de las frecuencias (Ríos 2005). Existe una gran variedad de métodos de análisis espectral (Ríos 2005), pero la mayor a requiere que la serie esté equiespaciada temporalmente, y este es un requisito que no se cumple con las series de DANR. La forma clásica para enfrentar el hecho de que la serie no es CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 18 equiespaciada, es interpolar la serie original y convertirla a una serie temporalmente equiespaciada. Sin embargo, la interpolación altera la estimación del espectro, de tal modo que tiende a sobrestimar en las bajas frecuencias y a subestimar en las altas frecuencias(Martínez 2011). Para evitar la interpolación se han desarrollado diversos métodos que pueden trabajar directamente con las series no equiespaciadas temporalmente, como el periodograma de Lomb-Scargle (también conocido como Lomb-Scargle Fourier Transform) (Martínez 2011). 1.5.1 Análisis espectral vía el Periodograma Lomb-Scargle (PLS) El análisis espectral de series temporales es una técnica estadística que permite, entre otras aplicaciones, la descomposición de una serie temporal en sus componentes frecuenciales con el objetivo de descubrir componentes cíclicas inmersas en ruido. Son muchas las técnicas que se han diseñado para estimar el espectro de potencia cuando los datos están regularmente distribuidos (P.Weedon 2003). Esto es, con una distancia constante entre dos datos consecutivos e igual a una razón de muestreo ∆. Sin embargo, cuando se intenta comprender un fenómeno real desde un punto de vista analítico, la obtención de series temporales regulares, esto es, con muestreo constante y completas, son la excepción más que la norma. Lo usual es disponer de series temporales irregulares, debido a diferentes casuísticas 6 como pueden ser series de datos incompletas como consecuencia del muestreo aleatorio o de la presencia de hiatos7, datos perdidos o series con huecos (“gapped8 data”) por diferentes motivos (Figura 1.8). 6 Casuísticas: en ética aplicada refiere al razonamiento basado en casos. Se utiliza en cuestiones éticas y jurídicas, y a menudo representa una crítica del razonamiento basado en principios o reglas. La casuística es utilizar la razón para resolver problemas morales aplicando reglas teóricas a instancias específicas. (jesuitismo). 7 Hiato En tiempo (receso), se refiere a una pausa o interrupción en la continuidad de una obra, acción, etc. CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 19 Figura 1.8 A: Serie temporal de 300 datos con muestreo con intervalo constante pero con hiatos a intervalos regulares (´´gapped data´´). B: Serie temporal de 300 datos con muestreo a intervalo constante pero con un hiato en la parte central 1.5.2 Metodología El periodograma de Lomb-Scargle se define como(Rodríguez-Igúzquiza 2013): 𝐼 𝜔𝑗 1 [ = 2 2𝑠 𝑁 𝑖=1 𝑧 𝑡𝑖 − 𝑚𝑧 cos 𝜔𝑗 𝑡𝑖 − 𝜏 ]2 𝑁 2 𝑖=1 cos 𝜔𝑗 𝑡𝑖 − 𝜏 + (Ecu. 1) [ 𝑁 𝑖=1(𝑧 𝑡𝑖 − 𝑚𝑧 ) sen[𝜔𝑗 (𝑡𝑖 − 𝜏)]]2 𝑁 2 𝑖=1 sen [𝜔𝑗 (𝑡𝑖 − 𝜏)] Donde el parámetro 𝜏 se define como: tan[2𝜔𝑗 𝜏] = 𝑁 𝑖=1 sin[2𝜔𝑗 𝑡𝑖 ] 𝑁 𝑖=1 cos[2𝜔𝑗 𝑡𝑖 ] (𝐸𝑐𝑢. 2) Donde 𝑚𝑧 y 𝑠 2 son la media y varianza estimadas de los datos {𝑧(𝑡1 ), 𝑧(𝑡2 ), … , 𝑧(𝑡𝑁 )}. 𝜔𝑗 es la frecuencia angular (ciclos por radián), mientras 𝑓𝑗 = 𝜔𝑗 / (2𝜋) es la frecuencia en ciclos por intervalo de muestreo. El parámetro 𝜏 hace que el estimador 𝐼 𝜔𝑗 de la ecuación 8 Gapped: del verbo en inglés gap. Hueco, abertura, espacio, (tiempo) intervalo, separación, laguna o vacío. Es comúnmente utilizada para nombrar los hiatos en las series temporales geofísicas, de ahí la conjugación ´´gapped data´´. CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 20 (1) sea invariante con respecto al tiempo. 𝐼 𝜔𝑗 es el periodograma de Lomb-Scargle para la frecuencia 𝜔𝑗 . Aunque el periodograma es un estimador asintóticamente insesgado de la potencia espectral, su varianza no decrece conforme aumenta el número de datos 𝑁 (Chatfield, 1991). Un estimador consistente se obtiene por suavizado del periodograma mediante un proceso de medias móviles que promedia valores de 2𝑚 + 1 frecuencias vecinas para obtenerse el estimador: 𝑗 +𝑚 ∗ 𝐼 𝜔𝑗 = 𝜆𝑘 𝐼 𝜔 𝑘 (𝐸𝑐𝑢. 3) 𝑘=𝑗 −𝑚 Donde los pesos 𝜆𝑘 cumplen la condición: 𝑗 +𝑚 𝜆𝑘 = 1 (𝐸𝑐𝑢. 4) 𝑘=𝑗 −𝑚 𝐼 ∗ 𝜔𝑗 es el periodograma de Lomb-Scargle suavizado para la frecuencia 𝜔𝑗 . Existen diferentes modos de elegir los pesos. Si todos tienen el mismo valor, sujeto a la condición de la ecuación (𝐸𝑐𝑢. 4), se tiene la media aritmética. Otros tipos de suavizado pueden verse en (Chatfield.C 1991). El número de frecuencias en las cuales se evalúa el periodograma de Lomb-Scargle es generalmente mayor que en el caso de muestreo regular con intervalo de muestreo ∆ (Figura 1.9). En este último caso, la frecuencia más alta para las cuales se puede evaluar la potencia espectral es 𝑓𝑛 , la frecuencia de Nyquist (Ríos 2005) que se define como la frecuencia que corresponde a un período igual a dos veces el intervalo de muestreo: 𝑓𝑛 = 1 2∆ (𝐸𝑐𝑢. 5) En el caso de muestreo irregular, hay varias frecuencias que se pueden tomar como referencia. Una es la frecuencia de Nyquist equivalente, que consiste en considerar que los 𝑁 datos están regularmente espaciados, en cuyo caso se obtendría un intervalo de muestreo: CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR ∆1 = 𝑡𝑁 − 𝑡𝑁−1 𝑁−1 21 (𝐸𝑐𝑢. 6) Figura 1.9 Periodograma Lomb-Scargle de la serie mostrada en la Figura 1.7 B Y la frecuencia de Nyquist sería: 𝑓1 = 1 2∆1 (𝐸𝑐𝑢. 7) Otra frecuencia de interés es la frecuencia equivalente a la de Nyquist considerando la distancia mínima: ∆𝑚 = min(𝑡𝑖+1 − 𝑡𝑖 ) ; 𝑖 = 1, … , 𝑁 − 1 (𝐸𝑐𝑢. 8) Para la cual la frecuencia de Nyquist valdría: 𝑓𝑚 = 1 2∆𝑚 (𝐸𝑐𝑢. 9) No tiene sentido investigar frecuencias mayores a esta frecuencia 𝑓𝑚 . 1.6 El periodograma clásico vs el PLS En esta sección se presentan algunas diferencias entre el periodograma clásico y el periodograma de Lomb-Scargle. La definición de periodograma clásico (Báez 2008) para el caso de muestreos equiespaciados en el tiempo es: CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 1 𝑝 𝑓𝑖 = 𝑁 2 𝑁 𝑋(𝑡𝑛 cos 𝜔𝑖 𝑡𝑛 2 𝑁 + 𝑛 =1 22 𝑋(𝑡𝑛 sen 𝜔𝑖 𝑡𝑛 (𝐸𝑐𝑢. 10) 𝑛=1 Donde 𝜔𝑖 = 2𝜋𝑓𝑖 , para 𝑖 = 1, 2, . . . , 𝑘, los tiempos de muestreo están dados por 𝑡𝑛 = 𝑛 ∙ ∆𝑡, para 𝑛 = 1, 2, . . . , 𝑁 y ∆𝑡 es la longitud constante del intervalo de muestreo. Frecuencias ortogonales: tradicionalmente el periodograma clásico para series equiespaciadas en el tiempo, está definido (Martínez 2011) para un conjunto discreto de frecuencias ortogonales 𝑓𝑟 , para las cuales las estimaciones del periodograma son independientes entre sí, esto es: 𝑓𝑟 = 𝑟 𝑇𝑇𝑜𝑡 (𝐸𝑐𝑢. 11) Para 𝑟 = 0, 1, . . . , [ 𝑁/2 ]. Donde [ 𝑁/2 ] es el número máximo de frecuencias y está definido por la función máximo entero (se redondea al entero más próximo para el caso cuando 𝑁 es impar) y, donde 𝑇𝑇𝑜𝑡 = 𝑡𝑁 − 𝑡1 , (la duración de la serie temporal y para el caso equiespaciado 𝑇𝑇𝑜𝑡 = (𝑁 − 1) ∙ ∆𝑡). Las frecuencias 𝑓𝑟 al ser utilizadas en la relación (𝐸𝑐𝑢. 11), aseguran que el poder espectral correspondiente a diferentes frecuencias sea independiente para cualquier par de frecuencias del conjunto de frecuencias ortogonales y que sea retenida la máxima cantidad de información posible de los datos originales. Sin embargo, para el caso no equiespaciado en el tiempo, no es posible encontrar un conjunto de frecuencias ortogonales para las cuales el poder espectral sea independiente(Martínez 2011). La frecuencia (razón) de muestreo y la frecuencia de Nyquist (ver1.5.2): un punto que puede ser complicado al utilizar métodos de análisis espectral (no se limita al periodograma de Lomb-Scargle) para series temporales no equiespaciadas en el tiempo, es determinar la frecuencia máxima 𝐹𝑚𝑎𝑥 hasta donde se estima el espectro. Para el caso equiespaciado, con 𝑁′ = 𝑁 2 (donde 𝑁 es el número de elementos de la serie temporal y denota la función máximo entero) la 𝐹𝑚𝑎𝑥 es la frecuencia de Nyquist: 𝐹𝑁𝑦𝑞 = 1 2∆𝑡 Donde∆𝑡 es el intervalo de tiempo de muestreo. (𝐸𝑐𝑢. 12) CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 23 Sin embargo, para el caso no equiespaciado temporalmente, no hay una clara definición de frecuencia de Nyquist. Una opción, un tanto conservadora, para superar este obstáculo ha sido utilizar una frecuencia de Nyquist promedio: 𝐹𝑁𝑦𝑞 = 1 2 ∆𝑡 (𝐸𝑐𝑢. 13) Donde ∆𝑡 es el valor medio de todos los ∆𝑡′𝑠. Pero, como bien apunta (Scargle.J.D 1982)(no siempre es claro cual valor medio la media aritmética, la mediana u otra medida estadística de tendencia central) es el apropiado. Por otro lado, es bien sabido que la media no es una estimación robusta de valor central, y, sin embargo, la mediana si lo es. En este punto una herramienta que puede ser de ayuda es el análisis exploratorio (histograma) de las diferencias de los tiempos (Martínez 2011). El teorema de Parseval: una propiedad importante del periodograma clásico, para series temporales equiespaciadas en el tiempo, es el teorema de Parseval (la energía total de una señal real es la misma ya sea si es calculada en el dominio del tiempo o en el de la frecuencia. Sin embargo, cuando las series no están equiespaciadas en el tiempo este teorema no se cumple (Martínez 2011). 1.7 Identificación de sistemas Se entiende por identificación de sistemas a la obtención de forma experimental de un modelo que reproduzca con suficiente exactitud, para los fines deseados, las características dinámicas del proceso objeto de estudio. En este apartado se revisan algunas de las consideraciones prácticas a tener en cuenta en el proceso de identificación, sobre todo, las relacionadas con la obtención y tratamiento de datos. Para ello se hace una revisión de los principales pasos a emplear en el proceso de identificación. 1.7.1 Pasos básicos para la identificación de sistemas El proceso de identificación consiste en una serie de pasos básicos (Figura 1.10). Estos pueden ser omitidos o ser utilizados sin estar consciente de su elección, claro, esto puede resultar en pobres resultados. A continuación se muestran los pasos a seguir para una correcta identificación(Guillén 2007): CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 24 Obtener información sobre el sistema. Seleccionar un modelo que represente el sistema. Elegir los parámetros del modelo tomados a partir de la mejor medición posible: establecer un buen criterio de selección. Validación del modelo seleccionado. 1.7.2 De la obtención de datos El primer paso dentro del proceso de identificación (Figura 1.10) es realizar algún tipo de experimento sobre el sistema bajo estudio para obtener los datos de entrada-salida que servirán de base para la obtención del modelo final. Para que el proceso de identificación sea satisfactorio, es necesario que los datos utilizados para tal fin contengan información significativa sobre el sistema. Esto implica un cuidadoso diseño del experimento de adquisición de datos, debiéndose tomar una serie de decisiones respecto a las señales que deben ser medidas, el periodo de muestreo a utilizar, el tipo de entrada más adecuada, el número de datos a almacenar, etc.(Guillén 2007). 1. Planificación experimental 2. Recolección de datos Conocimiento previo de la planta 3. Selección del modelo 4. Selección del criterio de estimación de parámetros 5. Cálculo del modelo 6. Validación del modelo ¿Modelo aceptado? no Revisión sí Documentar y usar el modelo Figura 1.10 Proceso de identificación CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 25 1.7.3 Elección de las señales a medir La primera decisión es qué señales se deben registrar (mediante algún tipo de sistema de adquisición y el correspondiente sistema de almacenamiento de datos), y qué señales deben ser manipuladas para excitar al sistema durante el experimento. Se debe tener en cuenta que pueden existir señales que, aunque afecten a la evolución de la salida, no pueden considerarse como entradas debido a la imposibilidad de actuar sobre ellas. En el caso de que estas señales puedan ser medidas, pueden considerarse también como entradas al sistema (midiéndose sus valores durante el experimento). En caso contrario, deben ser consideradas como perturbaciones (Guillén 2007). 1.7.4 Elección del tipo de entrada/salidas Las entradas al sistema deben ser cuidadosamente elegidas de forma que los datos recogidos proporcionen toda la información posible sobre el sistema. Respecto a esto, conviene tener en cuenta los siguientes aspectos (Guillén 2007): La señal de entrada debe contener el mayor número de frecuencias posibles. Por ejemplo, una señal sinusoidal pura no es adecuada en un experimento de identificación, puesto que sólo se obtendrá la respuesta del sistema para la frecuencia de dicha señal. Por el contrario, las señales escalonadas (con cambios bruscos) son muy utilizadas, puesto que contienen un espectro suficientemente amplio de frecuencias. Para sistemas lineales, basta con utilizar dos niveles de entrada, preferiblemente barriendo todo el rango de variación permitido. En este tipo de sistemas se suelen utilizar señales binarias de duración aleatoria (conocidas como señales binarias aleatorias o pseudoaleatorias), como la mostrada en la Figura 1.11a). Sin embargo, para sistemas no lineales es necesario trabajar con más de dos niveles de entrada, como se muestra en la Figura 1.11 b). (a) CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 26 (b) Figura 1.11 a): Entrada aleatoria binaria para sistemas lineales. b): Entrada escalonada aleatoria para sistemas no lineales Si se sabe que el sistema va a trabajar preferentemente en torno a un determinado punto de trabajo, es conveniente realizar el registro de datos en ese mismo entorno. Este aspecto adquiere especial importancia si el sistema no es lineal. 1.7.5 Elección del periodo de muestreo La elección del periodo de muestreo está directamente relacionada con las constantes de tiempo del sistema, y tiene una influencia decisiva en el experimento de identificación. Así, un periodo de muestreo muy pequeño puede llevar a la obtención de datos redundantes, que no aportan información sobre el sistema (pero sí ocupan espacio en la memoria del dispositivo de almacenamiento de datos), mientras que un periodo de muestreo demasiado grande provoca grandes dificultades a la hora de identificar la dinámica del sistema. Una regla comúnmente usada consiste en escoger una frecuencia de muestreo alrededor de diez veces el ancho de banda del sistema. Esto corresponde aproximadamente a muestrear en torno a cinco u ocho valores del tiempo de subida de la respuesta al escalón del sistema (Guillén 2007). 1.7.6 Elección del número de muestras En principio, cuanta más información se tenga sobre el sistema, más exacto será el proceso de identificación. En la práctica, el número de muestras a recoger durante el experimento de identificación viene limitado por la capacidad del dispositivo de memoria utilizado. Por tanto, es importante llegar a un buen compromiso en la elección del periodo de muestreo y el número de muestras a tomar (Guillén 2007). CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 27 1.7.7 Procesamiento de los datos escogidos para la identificación El análisis de sistemas se facilita frecuentemente utilizando un tipo específico de señales de excitación o una representación de estas. Es de nuestro objetivo conocer qué tipos de procesamiento en el uso de estas. Por esta razón es conveniente el estudio de señales y de sus propiedades para su posterior uso en nuestra investigación. Cuando los datos son seleccionados en el proceso de identificación estos no están en buena forma para su uso inmediato en los algoritmos de identificación. Estos traen una serie de deficiencias que podrían atender a: Disturbios de alta frecuencia por encima de las frecuencias de interés en la respuesta del sistema (Ljung 1999). Outliers (Ljung 2010), datos perdidos, no continuidad en la secuencia. Desplazamientos y desviaciones, disturbios de baja frecuencia, posible periodicidad en los datos (Ljung 1999). Existen una gran variedad de técnicas para corregir este tipo de irregularidades (Ljung 2010). Análisis de los datos en el contexto de series temporales aportan determinadas soluciones con vista a una buena estimación y predicción de modelos donde la IS se yergue como la principal solución (Buschiazzo 2009). 1.8 Síntesis de datos. MatLab® como herramienta de síntesis El análisis de sistemas se facilita frecuentemente utilizando un tipo específico de señales de excitación o una determinada representación de señales. Por esta razón, es conveniente incluir el análisis de señales y sus propiedades en el proceso de obtención de parámetros para la identificación de sistemas. Además del análisis interesa también la síntesis. De hecho, la síntesis o diseño de sistemas constituye la parte creativa de la ingeniería. A la hora de sintetizar datos el MatLab® se yergue como herramienta fundamental. MatLab® es portador de lógicas y aplicaciones sencillas, esto por supuesto aporta ventajas de programación y análisis viables para usuarios de poca experiencia. El MatLab® puede trabajar con números escalares, tanto reales como complejos, con cadenas de caracteres y con otras estructuras de información más complejas, es al mismo CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 28 tiempo un entorno y un lenguaje de programación. Uno de sus puntos fuertes es el hecho de que el lenguaje de MatLab® permite construir nuestras propias herramientas reusables. Se puede fácilmente crear funciones propias y programas especiales (conocidos como archivos-M) en código MatLab®. Se pueden agrupar en Toolbox: colección especializada de archivos-M para trabajar en clases particulares de problemas (Moore 2010). La manera más fácil de visualizar MatLab® es pensar en él como en una calculadora totalmente equipada, aunque, en realidad, ofrece muchas más características y es mucho más versátil que cualquier calculadora. MatLab® es una herramienta para hacer cálculos matemáticos. Es una plataforma de desarrollo de aplicaciones, donde conjuntos de herramientas inteligentes para la resolución de problemas en áreas de aplicación específica, a menudo llamadas toolboxes, se pueden desarrollar con facilidad relativa. Esto por supuesto suplirá las necesidades en la confección de los programas de generación de DANR en el CAPÍTULO 2. 1.9 Observaciones del capítulo Para el acabado del capítulo se llegaron a una serie de consideraciones que son fundamentales en el desarrollo de la investigación: 1. Se pudo apreciar que los datos en conjunto forman un patrón que caracteriza de por sí a un fenómeno no determinístico; estos a su vez forman una gran variedad de series donde los DANR son característicos en su naturaleza. 2. Es importante el tratamiento datos con fines en la obtención de modelos que predigan muchos de los fenómenos naturales y físicos para el desarrollo de la ciencia. 3. Muchas de las predicciones son desestimadas por la ausencia de datos para la identificación del proceso. Para el conocimiento y la creatividad de los ingenieros a la hora de crear una solución científica, es necesaria la síntesis de datos que apoyen su desempeño. 4. Esta investigación previa y la confiabilidad del MatLab® como herramienta de solución sientan las bases para la confección en el capítulo siguiente de un Programa de Generación de DANR. CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 29 CAPÍTULO 2. ROGRAMA DE GENERACIÓN DE DANR Si bien la caracterización y comprensión de los DANR, como principal rasgo de las series de datos a procesar en el surgimiento de nuevas técnicas de identificación, es la base de la revisión bibliográfica, la síntesis plantea una solución experimental a partir de la simulación estos DANR. En este capítulo Programa de Generación de DANR se materializa el principal objetivo del trabajo basado en la síntesis de datos. Este queda dividido en tres etapas fundamentales: 1. Como inicio se describen los principales requisitos a cumplir por los datos a generar como DANR, todos en base a la investigación del capítulo anterior. 2. Le sigue un análisis de los aspectos de diseño a tener en cuenta, para el desarrollo de programas de generación, que cumplan con el objetivo principal. En esta etapa se describen los pasos previos al diseño, culminado con el ajuste de este. En el camino se evalúan los resultados de la implementación a partir de la observación gráfica. 3. Por último se hace un análisis de las principales limitaciones que surgen en el diseño a partir de la evaluación de los resultados obtenidos en el ajuste. 2.1 Estrategia de trabajo En las disciplinas de ingeniería, ciencias y programación de computadoras, es importante tener un enfoque consistente para resolver los problemas técnicos. El enfoque que se plantea a continuación es útil para un mejor desarrollo del diseño. A medida que se CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 30 desarrolla el trabajo es posible que los esquemas de resolución de problemas se aborden de forma ligeramente diferente, pero todos tienen el mismo formato básico (Moore 2010): 1. Se plantea el problema. En esta etapa se hace una descripción breve y generalizadora del problema en cuestión. 2. Se describen los valores de entrada (conocidos) y las salidas (incógnitas) que se requieren. En este apartado se incluyen las unidades conforme describe los valores de entrada y salida. (El manejo correcto y sencillo de las unidades asegurara mejores respuestas) 3. Se desarrolla un algoritmo para resolver el problema. Trabajar con una versión simplificada del problema utilizando diagramas de flujos o pseudocódigos. 4. Resolver el problema. Esta etapa involucra la creación de una solución con MatLab®. 5. Probar la solución. ¿Los resultados tienen sentido lógico? ¿Coinciden con los cálculos de la muestra? ¿La respuesta es la que se pedía en realidad? Las gráficas son utilizadas con frecuencia como formas útiles para verificar la racionalidad de la respuesta. Los pasos en el desarrollo del programa siguieron el orden descrito como estrategia de trabajo, con el propósito de lograr un resultado más eficiente. 2.2 Ajuste del diseño El programa partirá del ajuste de una serie de parámetros, los cuales serán la base del posterior diseño. Se parte de la siguiente comprensión de nuestros parámetros de diseño: Aleatoriedad en el periodo de muestreo de la serie de DANR a diseñar. Fácil obtención y almacenamiento de los DANR escogidos. Frecuencia y periodo de muestreo variable. CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 31 Si bien hasta ahora el rasgo principal de los DANR era su periodo de muestreo irregular el diseño del programa se basa esencialmente en esta característica, cumpliendo en toda su gama con los parámetros citados con anterioridad. 2.2.1 Elección de los periodos de muestreo La elección del periodo de muestreo se hace de manera arbitraria, no se evalúa ningún estándar en cuanto a elección del periodo de muestreo. Sin embargo fue necesario demostrar cómo quedaría implementado este en el programa y como sería manipulado finalmente: Matemáticamente queda descrito de la siguiente manera: Si deseamos obtener el muestreo 𝑥[𝑛] de una señal continua 𝑥 𝑡 para obtener los valores 𝑥(𝑡0 ), 𝑥 𝑡1 , … , 𝑥 𝑡𝑛 , … o de manera más abreviada 𝑥0 , 𝑥1 , . .. , 𝑥𝑛 , … y a los valores 𝑥𝑛 se les denomina muestras, entonces al intervalo de tiempo entre muestras se le llama intervalo de muestreo y entonces: 𝑥𝑛 = 𝑥 𝑛 = 𝑥 𝑛𝑇𝑠 (𝐸𝑐𝑢. 14) Donde la constante 𝑇𝑠 es el intervalo de muestreo. Y para nuestros propósitos 𝑇𝑠 ′ = 𝑇𝑠 + 𝑁 será el periodo de muestreo y 𝑁 será la secuencia de valores a generar en la confección de nuestros DANR. Para la generación de los DANR se eligen los siguientes periodos de muestreo 𝑇𝑠 ′. La variedad de los periodos escogidos determina en gran medida la finalidad del trabajo, para ello se seleccionan las siguientes características 𝑁 a generar en el periodo de muestreo: Secuencia aleatoria Secuencia triangular Secuencia oscilatoria El diseño de estas secuencias depende en gran medida de la programación utilizada para lo cual el MatLab® es una herramienta eficaz. En consecuencia se hace una revisión de las principales funciones (Moore 2010) disponibles para la generación de las series escogidas. (Ver Anexo III) CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 2.3 32 Diseño de los periodos de muestreo. Secuencia aleatoria Para la generación de esta serie se toman en cuenta las siguientes condiciones. Sobre todo los números 𝑁 generados deben cumplir ciertas características para que sean válidos en la obtención de aleatoriedad. Dichas características son: Uniformemente distribuidos. Estadísticamente independientes. Su media debe ser estadísticamente igual a 1/2. Su varianza debe ser estadísticamente igual a 1/12. Su periodo o ciclo de vida debe ser largo. Deben ser generados a través de un método rápido. Generados a través de un método que no requiera mucha capacidad de almacenamiento de la computadora. Es válido aclarar que las secuencias obtenidas no son realmente aleatorias, ya que se obtienen con operaciones deterministas (González 2004). Solo se obtienen secuencias pseudoaleatorias, que a su vez satisfacen los criterios de aleatoriedad anteriores. Apoyados en las funciones básicas del MatLab® se comienza con la generación de una señal de magnitud aleatoria, entre 1 y 2, determinando el valor desigual de tiempo entre dos muestras consecutivas. Se experimentan estas características a partir de la manipulación de las diferentes funciones que ofrece el MatLab® como herramienta básica, entre ellas la función rand (Moore 2010) esta fue la principal función en la generación de valores aleatorios, puesto que determina la aleatoriedad de las variables principales en la confección de la secuencia aleatoria a partir de las características de aleatoriedad enunciadas anteriormente (2.3). Para la implementación del código se plantea el siguiente algoritmo9 de trabajo, esquematizado mediante el diagrama de flujo que se muestra en la Figura 2.1: 9 Se implementa el mismo algoritmo de trabajo para todas las secuencias a generar. CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 33 INICIO GENERAMOS DOS VECTORES DE ELEMENTOS(TODOS CEROS), UNO PARA LOS DATOS Y OTRO PARA LOS INSTANTES DE MUESTREO DE ESTOS DISEÑAMOS LAS SECUENCIAS A GENERAR COMO PERIODOS DE MUESTREO GRAFICAMOS LOS DANR PRVIAMENTE DISEÑADOS FIN Figura 2.1 Algoritmo para generar periodo de muestreo de secuencia aleatoria Para la implementación y comprensión del código de programación, se siguen los pasos descritos con anterioridad (2.1) como metodología de diseño: Se establece la problemática: Generación de valores sean 1 o 2 que cumplan los requisitos fundamentales de aleatoriedad. Se definen las entradas y salidas: Entrada: dos vectores de elementos (todos ceros), uno para el periodo de muestreo [dt] y otro para los instantes de muestreo que marcan dichos periodos [t]. Salida: serie de secuencia aleatoria de valores 1 o 2 [dt]. Desarrollo del problema10: Se define el vector de elementos (todos ceros) para los instantes de muestreo t, así como los vectores básicos para el diseño de los periodos de muestreo, dicho sea amplitud y variabilidad de los instantes de muestreo dtmax, el registro de estos dt, y tiempo que 10 Los aspectos más importantes de la programación se evidencian a lo largo de la explicación. Para las restantes líneas de códigos que tengan que ver con la implementación y se repita la programación se mantiene el mismo formato que evidencia la ejecución de una línea explicada anteriormente (#). CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 34 marca el punto de inicio de nuestro muestreo: #Vectores de resultados t=zeros(10000,1); dtmax=2; dt=[10000,1]; tiempo=1; Entonces, en una serie de 9000 elementos i, para cada uno de estos existe una probabilidad de 50% 11de que un valor ndt sea 1 o 2. Estos son guardados en dt. #Se ejecuta el bucle de generación de secuencia aleatoria for i=1:9000 ndt=ceil(dtmax*rand); dt(i)=ndt; tiempo=tiempo+ndt; t(i)=tiempo; end Es necesario aclarar en este caso que los instantes de muestreo están determinados según el valor que este mostrando la variable tiempo, que se incrementa en 1 o 2 según la probabilidad atribuida al elemento ndt. Una vez determinada la secuencia aleatoria se guardan los valores necesarios a almacenar en los vectores [dt] y [t]. 11 La función rand del MatLab® describe una distribución normal de varianza y media ½. Es por ello que cualquier serie de valores generados cada valor tendrá una probabilidad del 50% de ser mayor o menor que 0.5. CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 35 #Se grafica la secuencia de periodo de muestreo figure(1) stem(dt(1:100)); title(‘Serie aleatoria [1 2]’) xlabel(‘Valores’) ylabel(‘Periodo de muestreo’) Se desarrolla un diagrama de flujo que apoye el código (Ver Anexo IV) Periodo de muestreo de secuencia aleatoria [1 2] Periodos de muestreo 2 1.5 1 0.5 0 0 5 10 15 Valores 20 25 30 Figura 2.2Señal aleatoria entre 1 y 2 Como se observa la serie está conformada por valores entre 1 y 2. Una vez generada la serie se verifica la distribución de los valores de la secuencia. Si escribimos en la ventana de comandos (command Windows) la función: >>d=find(dt==2); calcula cuántos datos tuvieron valor 2, el resultado arrojó una respuesta de 4519 valores para una primera implementación de 9000 valores. Una mejor valoración ofrece el histograma de la serie (Figura 2.3), este determina la distribución de los datos generados. CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 36 Historigrama. Distribución de valores 5000 Distribución 4000 3000 2000 1000 0 1 1.2 1.4 1.6 1.8 2 Valores Figura 2.3Distribución de valores Aun no siendo un estimador de aleatoriedad, permite verificar la equidad, así como la probabilidad de los valores generados, requisito fundamental en la generación. Cabe enunciar que la propia característica de la función rand del MatLab® permite generar valores aleatorios en el rango deseado, solo tiene que multiplicar el valor elegido por dicha función. El algoritmo se implementa de manera que el usuario pueda escoger el rango de aleatoriedad con solo cambiar el valor de dtmax. 2.3.1 Secuencia triangular La necesidad de obtener varias secuencias de valores 𝑁 para los periodos de muestreo conlleva a la generación de esta serie en particular. Si bien la generación de una señal aleatoria está marcada por la presencia de la función rand en este caso no será diferente. La formulación del diseño es sencilla, el solo lograr que la serie cumpla con la fórmula básica para una serie triangular da la medida de cómo debe ser nuestra serie de secuencia triangular (Figura 2.4): 𝑥 𝑡 = 1− 𝑡 −1≤𝑡 ≤1 0 𝑡 >1 CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 37 Figura 2.4 Función triangular 𝒙(𝒕) de amplitud 1 Una vez analizada la ecuación solo se configura la secuencia ascendente y descendente de la serie generada. Algunos aspectos básicos de la programación se explican a continuación. Se abordan estos detalles a partir de la implementación de una serie de valores con secuencia triangular de amplitud 5, que simule la variabilidad del periodo de muestreo de forma oscilatoria triangular. A partir del algoritmo general de diseño (2.1) se mantienen los pasos elegidos como estrategia de trabajo: Se plantea la problemática: Generar una serie de valores consecutivos con variabilidad en secuencia triangular de amplitud 5. Se define la entrada y la salida del programa: Entrada: dos vectores de elementos (todos ceros), uno para el periodo de muestreo [dt] y otro para los instantes de muestreo que marcan dichos periodos [t]. Salida: serie de secuencia triangular de valores de amplitud entre 5. Se desarrolla la problemática en cuestión #Vectores de resultados #Se ejecuta el bucle de generación for i=1:10000 ndt=ndt+1; nndt=sqrt(ndt^2); if ndt==5 ndt=-ndt; CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 38 elseif ndt==-1 ndt=-ndt; end dt(i)=nndt; tiempo=tiempo+nndt; t(i)=tiempo; end #Se grafica la secuencia de periodo de muestreo Periodo de muestreo en secuencia triangular de amplitud 5 5 Periodo de Muestreo 4.5 4 3.5 3 2.5 2 1.5 1 0 5 10 15 Valores 20 25 30 Figura 2.5Serie triangular de amplitud 5 Se ajusta un diagrama de flujo que apoye el resultado (Ver Anexo IV) En este caso la simple inspección visual aporta una noción del resultado esperado (Figura 2.5). Acercándonos al caso, se impide que la función tomara valores cero en todo el recorrido: nndt=sqrt(ndt^2), pues como sabrán no existen periodos de muestreo de valor 0. Otra vez pero insertados en el bucle, se define el límite para el cual la serie iniciará su regresión: if ndt==5 ndt=-ndt; CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 39 Si se analiza la distribución de datos (Figura 2.6) en la secuencia se incrementa la probabilidad de los valores medios, siendo estos los que más pueblan la secuencia. Esto determina una mayor pérdida de datos para estos periodos 𝑇𝑠 ′ de larga duración, en los cuales según se evidencia anteriormente (𝐸𝑐𝑢. 14) no existe muestreo. Historigrama. Distribución de valores 120 100 Distribución 80 60 40 20 0 1 2 3 4 5 6 7 8 9 10 Valores Figura 2.6 Distribución de N en la secuencia triangular 2.3.2 Secuencia oscilatoria Es evidente hasta ahora, que el trabajo realizado en la confección de secuencias de datos como expresión de periodos de muestreo [dt] no había incorporado en su base ninguna de las funciones básicas de cálculo. En este caso, el diseño de una serie oscilatoria está dirigido al cambio en el tiempo de una determinada secuencia de valores, dicho sea, en forma de seno o coseno. La implementación de estas formas oscilatorias depende de la elección del usuario, para lo cual se añaden facilidades de implementación al código de generación. Para una mejor implementación de la secuencia oscilatoria, se diseña el siguiente código de generación. Este abarca de manera sencilla la inserción de una función oscilatoria, dicho sea seno o coseno: CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 40 #Ejecución de funciones seno y coseno a partir de su frecuencia, amplitud y desplazamiento amplitud1=20; amplitud2=5; desplazanmiento1=amplitud1/2; desplazanmiento2=amplitud2/2; frecuencia1 =1; frecuencia2 =2*f1; cantidad_valores=10000; valores=0:1:cantidad_valores; #Cálculo de las funciones seno y coseno y1=desplzanmiento1+(amplitud1/2)*sin(frecuencia1*valores); y2=desplzanmiento2+(amplitud2/2)*cos(frecuencia2*valores); Los parámetros son especificados de manera que el usuario con pleno conocimiento de las funciones a tratar sepa que variables manipular en la implementación de la secuencia oscilatoria deseada. Mucha de la información sobre funciones oscilatorias fue extraída de (Ríos 2005), esto permite configurar el código anterior de manera que las variables a implementar: frecuencia y amplitud, estén diseñadas para la implementación en el programa. Para un mejor entendimiento del código de generación se implementa una secuencia sinusoidal como expresión de cambio del periodo de muestreo en secuencia oscilatoria. Para ajustar el programa se mantuvo la misma estrategia de trabajo (2.1): Se plantea el problema: Generación de secuencia oscilatoria de función sinusoidal de amplitud 20 y frecuencia 1. Se establece la entrada (s) y la salida (s): Entrada: dos vectores de elementos (todos ceros), uno para el periodo de muestreo [dt] y otro para los instantes de muestreo que marcan dichos periodos [t]. Salida: secuencia oscilatoria de función sinusoidal de amplitud 20. Desarrollo del problema: CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 41 #Vectores de resultados #Se ejecuta el bucle de generación de secuencia oscilatoria for i=1:length(y1) ndt=ceil(y1(i)); dt(i)=ndt; tiempo=tiempo+ndt; t(i)=tiempo; end #Se grafica la secuencia de periodo de muestreo Periodo de muestreo para secuencia oscilatoria sinusoidal de amplitud 20 20 18 Periodo de muestreo 16 14 12 10 8 6 4 2 0 50 100 150 Valores Figura 2.7 Serie oscilatoria sinusoidal de amplitud 20 Se ajusta un diagrama de flujo que apoye el resultado (Ver Anexo IV) Es importante tener en cuenta que los valores generados por la función seno son específicamente los guardados en el vector [dt], esto se debe a la función ceil, la cual determina una aproximación siempre hacia +∞, determinando, en toda medida, los valores enteros de la serie y sobre todo lo más alejados de cero posible. Nótese también, que si bien la función seno da una serie de valores entre -1 y 1, se hacen los cambios pertinentes para acomodar dicha serie a valores en el rango deseado por el usuario, en este caso se ajusta la secuencia a amplitud 20: CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 42 Como se observa (Figura 2.7), la implementación de la función seno en el código de generación da el componente oscilatorio en la secuencia, esto puede ser utilizado como ventaja en el propio diseño, puesto que la inserción de otras funciones oscilatorias beneficiaría en gran medida la síntesis de este periodo de muestreo 𝑇𝑠 ′. Tómese en cuenta que el diseño de esta secuencia varía desde la propia inserción de otros parámetros, dicho sea frecuencia y amplitud, de los cuales es necesario tener amplio conocimiento a la hora de insertar en la programación. Historigrama para función seno Distribución 2500 2000 1500 1000 500 0 0 2 4 6 8 10 12 14 16 18 20 16 18 20 Historigrama para secuencia generada Distribución 2500 2000 1500 1000 500 0 0 2 4 6 8 10 12 14 Valores Figura 2.8Comparación de historigramas Observando el historigrama de la serie generada y comparándolo con el de la función original (Figura 2.8), se aprecia que la función ceil no afecta en si la generación; la distribución se mantiene intacta para bien de nuestros fines de implementación. 2.4 Generación de DANR básicos Una vez implementada la secuencia de periodos de muestreo, se inserta este en la serie de datos a manipular como base en la generación de DANR. Si bien la implementación de estos DANR exige la aperiodicidad y no repetitividad, la serie de DANR básicos es un paso importante a la hora de diseñarlos. ¿Cómo ajustar los DANR básicos? Para el diseño de este tipo de DANR tuvo gran importancia hacer énfasis en el muestreo de CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 43 los datos a manipular(𝐸𝑐𝑢. 14). Conociendo el código de generación de las secuencias de periodos de muestreo, solo resta muestrear los valores de una serie de datos (𝑁) para dicho periodo implementado 𝑇𝑠 ′. Para demostrar, se hace la revisión de unos de los códigos de generación, en este caso el de secuencia aleatoria: #Código de generación de secuencia aleatoria como periodo de muestreo t=zeros(10000,1); dt=[10000,1]; tiempo=1; for i=1:9000 ndt=ceil(dtmax*rand); dt(i)=ndt; tiempo=tiempo+ndt; t(i)=tiempo; end Nótese que, para un cambio de ndt como contador de los valores que determinan el periodo de muestreo, dichos valores se almacenan en el vector de instantes de muestreo t. Entonces la solución planteada es: En una serie de datos donde los valores que en realidad se muestrean son identificados por un valor específico[1], y los que cumplen la condición inversa por otro valor[0], entonces, queda compuesta una serie completamente determinada por esos valores[0 1]. Para una mejor comprensión se determina la composición de una serie de DANR básicos en base a las siguientes hipótesis: ℎ0 = 0 𝑣𝑎𝑙𝑜𝑟 𝑛𝑜 𝑚𝑢𝑒𝑠𝑡𝑟𝑒𝑎𝑑𝑜 ℎ1 = 1 𝑣𝑎𝑙𝑜𝑟 𝑚𝑢𝑒𝑠𝑡𝑟𝑒𝑎𝑑𝑜 Determinando que la hipótesis nula ℎ0 descarta toda posibilidad de la hipótesis válida ℎ1 y viceversa. Para hacer el ajuste se arriba al siguiente planteamiento: CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 44 Para una serie de datos almacenados en la matriz columna dato y una serie de DANR básicos en otra columna del mismo tamaño DANR_básicos, la intersección12 de estas dos columnas da como resultado una nueva serie, donde solo están los valores determinados realmente por la ℎ1 de la matriz columna DANR_básicos. Entonces, si la matriz de DANR básicos está determinada a partir de la secuencia de valores 𝑁 previamente diseñada el resultado de la multiplicación son DANR en base al periodo de muestreo diseñado 𝑇𝑠 ′: 𝐷𝐴𝑇𝑂𝑆 × 𝐷𝐴𝑁𝑅𝐵𝐴𝑆𝐼𝐶𝑂𝑆 = 𝐷𝐴𝑁𝑅 (𝐸𝑐𝑢. 15) A modo de ejemplo queda así: 𝑑𝑎𝑡𝑜𝑠 = 1 2 3 4 5 6 … 𝑛 ′ (𝐸𝑐𝑢. 16) 𝐷𝐴𝑁𝑅𝑏á𝑠𝑖𝑐𝑜𝑠 = 0 1 0 1 0 1 … 0 ′ (𝐸𝑐𝑢. 17) 𝑑𝑎𝑡𝑜𝑠 × 𝐷𝐴𝑁𝑅𝑏á𝑠𝑖𝑐𝑜𝑠 = 0 2 0 4 0 6 … 0 ′ (𝐸𝑐𝑢. 18) Nótese que la serie queda determinada para dicha secuencia expresada en DANR básicos, pero ¿son necesarios lo valores 0? En una serie de valores DANR por supuesto que estos no son necesarios, esto conlleva a la extracción de estos valores de la matriz resultante dando como resultado una matriz más pequeña. Esto se analiza con mejor impresión en acápites posteriores, por ahora se muestra la programación de estos DANR básicos: La problemática es: Generar DANR básicos basados en los instantes de muestreo determinados por la secuencia diseñada. Elección de la entrada y la salida: Entrada: vector de elementos yuu todos ceros. Salida: DANR básicos. 12 Desarrollo del problema: Entiéndase por intersección la multiplicación de cada valor en una serie 𝑚 por su homólogo en otra serie 𝑛. CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 45 #Vectores de resultados yuu=zeros(100000:1); t=zeros(10000,1); dt=[10000,1]; tiempo=1; Para una serie de valores consecutivos i, para cada valor i, el contador ndt determina una secuencia de datos que sumado cada uno de estos a tiempo eslabona una serie de instantes de muestreo que a su vez son guardados en yuu con valor 1; aquellos valores a los cuales no es atribuido un instante de muestreo son almacenados en yuu con valor 0, para una secuencia aleatoria queda así: #Se ejecuta el bucle de generación de DANR básicos for i=1:9000 ndt=ceil(5*rand); dt(i)=ndt; yuu(tiempo+ndt)=1; tiempo=tiempo+ndt; t(i)=tiempo; end #Se grafica la secuencia de DANR básicos La observación visual de la Figura 2.9 explica el caso programado con anterioridad. Notarán que solo se muestrea a partir de los periodos de muestreo determinados. La inserción de estos DANR básicos en cada código de generación de secuencias de periodos de muestreo determina el diseño posterior de los DANR, basado en la ecuación descrita anteriormente (2.4). CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 46 Periodos deMuestreo Periodo de muestreo de secuencia aleatoria [1 5] 6 4 2 0 0 5 10 15 Valores 20 25 30 DANR básico para secuencia aleatoria [1 5] Muestreo 1 0.5 0 0 10 15 20 25 30 Instantes de muestreo Figura 2.9 DANR básicos a partir de secuencia de periodos de muestreo 2.5 5 Generación de DANR Una vez diseñadas la secuencias, e implementados los DANR básicos para cada una de estas, solo restó hacer los ajustes necesarios para la obtención final de DANR disponibles para la experimentación. Dicha acción se ajusta en una serie de pasos sencillos; el MatLab®, además de ser una herramienta de cálculo, permite el ajuste de vectores a través de la manipulación de matrices (Moore 2010). La programación para solucionar la problemática de los valores resultantes a partir de la hipótesis nula ℎ0 en la serie generada, una vez multiplicados los datos por los DANR básicos, consta en la extracción de estos valores. Se establece la problemática: Obtener DANR a partir de una serie de datos experimentales. Entradas y las salidas: Entrada: vector de datos resultante a partir de la multiplicación de datos reales por los DANR básicos. CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 47 Salida: DANR para la experimentación. Problema: Si se guarda el resultado de la multiplicación de los datos experimentales datos por la serie de DANR básicos yuu en el vector u: #Se implementa la Ecuación 12 u=[datos*yuu]; Para dicho vector existe una matriz que contiene los valores de la hipótesis valida ℎ1 , a partir del reconocimiento h y extracción de los valores de la hipótesis nula ℎ0 para formar el vector de DANR danr: #Extracción de ceros h=find(u~=0); danr=height(h); La implementación de esta estructura al final de cada programa de generación, permite temporalmente la obtención de DANR a partir de datos experimentales. Una vez acomodados estos datos su fin debe ser la propia identificación de sistemas, es por ello que los arreglos están destinados a la propia manipulación de este set de DANR para darle la aplicabilidad suficiente para los algoritmos de identificación. Basados en el análisis precedente hecho en el epígrafe (1.7) acerca del proceso de identificación, se acomodan entonces los DANR. 2.5.1 Algoritmo de generación de DANR Si bien a lo largo del capítulo, la generación de DANR ha sido descrita por pasos fundamentales, la elaboración de un algoritmo de generación de DANR sintetiza, de manera general el programa de generación de DANR. Aplicando los pasos descritos hasta el momento el algoritmo de generación de DANR queda explicado en el siguiente diagrama de flujo (Figura 2.10): CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR DATOS 48 INICIO DISEÑO LA SECUENCIA APERIÓDICA Ts’ X DISEÑO DANR BÁSICO A PARTIR DE LA SECUENCIA APERIÓDICA DANRbásico [nTs’] MULTIPLICO LA SERIE DE DATOS ELEGIDA POR LA SERIE DE DANR BÁSICOS MATRIZ DE VALORES [0 1] MUESTREO SOLO PARA LOS VALORES DE LA HIPÓTESIS VALIDA DATOS[h1] DANR FIN Figura 2.10 Algoritmo de generación de DANR 2.6 Observaciones de los resultados obtenidos Una vez ajustado el algoritmo de generación de DANR se evalúa el programa en cuanto a eficiencia de generación. Se toman en cuenta las principales limitaciones del producto a partir de la simulación de estos. Para ello se emplea un sistema el cual supondría un medio para obtener datos de entrada-salida datos que sirvan de partida para la identificación y se transforman en DANR danr. Según los datos tomados de (Guillén 2007)(Figura 2.11) a partir de excitación de un sistema, los resultados son graficados (Figura 2.12): CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 49 Figura 2.11 Datos para la identificación [y u] Datos experimentales 30 20 Datos 10 0 -10 -20 0 200 400 600 Número de muestras 800 1000 Figura 2.12 Datos experimentales Estos a su vez fueron manipulados a partir de los pasos descritos por el algoritmo, para las tres secuencias previamente diseñadas como periodo de muestreo variable: Datos 40 DANR para secuencia aleatoria 20 0 -20 0 100 200 300 400 500 Datos 40 700 800 900 1000 DANR para secuencia triangular 20 0 -20 0 100 200 300 400 20 Datos 600 500 600 700 800 900 1000 DANR para secuencia oscilatoria 0 -20 0 100 200 300 400 500 600 Muestras 700 800 Figura 2.13 DANR a partir de datos experimentales 900 1000 CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 50 Como se puede notar (Figura 2.13), la serie de datos experimentales una vez convertida en DANR sufre una expansión producto de la pérdida de datos. Esto supone una complicación a la hora de obtener los suficientes datos para la experimentación, sería totalmente dependiente de la cantidad de datos a obtener, pero lo que incumbe hasta el momento es que la propia serie generada cumple con los parámetros especificados; los datos generados manifiestan que para una serie con determinada periodicidad, sufre cambios considerables una vez añadida la aperiodicidad diseñada para obtención de DANR. Esto se observa una vez salvados los datos en el WorkSpace del MatLab®. Un análisis válido es la implementación de valores nulos en los atributos específicos de cada serie de DANR a generar. Tal es el caso de la serie triangular que para valor pico 0 no ofrecía ningún resultado, así también con el valor de amplitud, frecuencia y aleatoriedad en las demás series. En el capítulo 3 se hace referencia a tales inconvenientes, suprimiéndolos en la síntesis como ejecutable-función. Considerando por consecuencia, se analiza cada serie en cuanto a pérdida de datos para la implementación de 1000 datos experimentales, arrojando los siguientes resultados: Tabla 2.1Distribución de datos Vector de 1000 elementos Distribución de datos % de pérdida Datos experimentales 1000 0 DANR para secuencia aleatoria entre [1 10] 174 82.6 DANR para secuencia triangular con valor pico 10 201 79.9 DANR para secuencia oscilatoria de amplitud 20 y frecuencia 1 95 90.5 Aun cuando la serie se obtiene como se esperaba la perdida de datos en comparación con la serie experimental es considerable, y más aún en la implementación de la secuencia oscilatoria sin embargo estos resultados fueron previstos para los valores correspondientes CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 51 de aleatoriedad, valor máximo o pico y amplitud en cada serie de DANR respectivamente. Si reducimos estos valores en las series respectivas entonces la distribución queda: Tabla 2.2 Distribución de datos Distribución de datos % de pérdida % disminuido Datos experimentales 1000 0 0 DANR para secuencia aleatoria entre [1 5] 338 66.2 16.4 DANR para secuencia triangular con valor pico 5 358 64.2 15.7 DANR para secuencia oscilatoria de amplitud 10 y frecuencia 1 180 82.0 8.5 Vector de 1000 elementos Como se aprecia, la pérdida de datos disminuye pero no considerablemente, el caso que mejor lo indica es el de la serie oscilatoria. Entonces esto supone una limitación en cuanto a series donde la escasez de valores es típica: series económicas, geofísicas entre otras. 2.6.1 Limitaciones La implementación del programa de generación da al traste con una considerable pérdida de datos lo que significa un impedimento a la hora de obtener DANR de series con escasos datos. Se hace necesario aclarar, que la experimentación con estos set de DANR con fines en la identificación de sistemas se realiza desde un análisis comparativo, dado esto por el propio ajuste del algoritmo que solo permite la obtención de DANR a partir de datos reales y si bien supone una ventaja contradice literalmente el concepto de generación de datos, puesto que estos no son creados artificialmente, sino a partir de datos elegidos para la experimentación en la identificación de sistemas. La simulación con pocos valores fue necesaria debido a la gran potencia de cálculo requerida en el funcionamiento del programa. Una vez pasados los 100000 valores CAPÍTULO 2. PROGRAMA DE GENERACIÓN DE DANR 52 de experimentación se requiere de mayor potencia de cálculo en el dispositivo a utilizar como herramienta. CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN 53 CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN Una vez implementado el programa de generación de DANR, se procede a la síntesis de estos a partir del diseño del ejecutable/función. La creación de tales funciones permite el uso posterior de estas con fines en la identificación de sistemas; es por ello que análisis pertinentes sobre el tema son necesarios para la generación de DANR con ventajas de uso para el usuario. Este capítulo dedica su contenido a la síntesis del algoritmo descrito con anterioridad (2.5.1) a través de la formación del ejecutable/función, esto deviene en el posterior desarrollo de un manual de uso apoyado en los principios de ayuda del MatLab® (help) y a la postre en un mejor programa de generación. Se finaliza con el análisis y evaluación de las funciones diseñadas con un set de datos disponibles para la experimentación. 3.1 Creación de archivos-M de función El lenguaje de programación MatLab® se construye alrededor de funciones. Una función es una pieza de código de computación que acepta un argumento de entrada del usuario y produce salida al programa. Las funciones ayudan a programar eficientemente, lo que permite evitar reescribir el código de computación para cálculos que se realizan con frecuencia. La programación en MatLab® se efectua mediante ficheros.m. Son simplemente ficheros de texto que contienen órdenes de MatLab®. Su uso requiere: Editar el fichero con el editor de MatLab®. Guardarlo con extensión .m. CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN 54 Indicar a MatLab® donde está el archivo con path (dirección). Ejecutarlo escribiendo en la línea de órdenes el nombre de fichero y los parámetros de entrada necesarios. Las funciones a crear una vez definidas se guardan en archivos-m. Cada una debe comenzar con una línea de definición de función que contenga: La palabra function. Una variable que defina la salida de función. Un nombre de función. Una variable que se use para el argumento de entrada. Cada función estará acompañada de una explicación detallada de los componentes así como su sintaxis. Ejemplos y pruebas de ejecución son hechas para evaluar la efectividad de la programación. La implementación de estas funciones define el uso del algoritmo (2.5.1) en la identificación de sistemas. Para la síntesis del diseño se comienza con el ajuste de las siguientes funciones en el orden que se indican: Función generadora de periodos de muestreo Función generadora de DANR básicos Función generadora de DANR 3.2 Función generadora de periodos de muestreo Si bien hasta ahora implementar el periodo de muestreo ha sido la base del algoritmo, basados en la misma definición se diseña una función con el objetivo de abordar la generación de DANR del mismo modo que exige el algoritmo (2.5.1). Se generan funciones para las tres secuencias de periodos de muestreo como se indica: Ts_random (Para secuencia aleatoria) Ts_triangular (Para secuencia triangular) Ts_oscilatoria (Para secuencia oscilatoria) CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN 55 3.2.1 Función para secuencia aleatoria. Ts_random Una vez diseñado el periodo de muestreo para secuencia aleatoria se analizan y tienen en cuenta las siguientes cuestiones como sintaxis: Rango de aleatoriedad Tamaño de vector Se implementan estas características como principales parámetros de diseño. El rango de aleatoriedad permite al usuario ajustar la aleatoriedad deseada según la finalidad del experimento, siendo este el parámetro fundamental a insertar en la función: function [salida] = Ts_random(rango de aleatoriedad) Como se aprecia, se señala entre paréntesis la opción (rango de aleatoriedad) que permite al usuario determinar e implementar el rango deseado, esto por supuesto basado en la programación estándar de una función en MatLab®(Moore 2010) que permite diseñar los parámetros de función según programe el usuario. Otro parámetro implementado es el tamaño del vector a insertar; si bien en el Capítulo 2 (Tabla 2.1; Tabla 2.2) se hace referencia a la pérdida de datos una vez generada la serie, a partir de un set de datos disponibles, en la generación de los periodos de muestreo, no es un inconveniente a tener en cuenta, puesto que la propia concepción del algoritmo permite reconocer esta parte del diseño como puramente sintética, pero para darle mayor aplicabilidad se implementa esta opción: function [salida] = Ts_random(rango de aleatoriedad, tamaño) Una vez insertadas estas opciones de ejecución se configura el resto de la programación y se adapta a la finalidad deseada: CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN 56 #Función para la generación de secuencia aleatoria function [salida] = Ts_random(dtmax,tamanho)=zeros(10000,1); dt=[10000,1]; tiempo=1; for i=1:9000 ndt=ceil(dtmax*rand); dt(i)=ndt; tiempo=tiempo+ndt; t(i)=tiempo; end salida = dt(1:tamanho)'; La salida de la función contiene el vector dt que guarda los periodos de muestreo. Nótese que los valores de rango de aleatoriedad y tamaño de vector son cambiados por dtmax y tamanho respectivamente con el fin de mantener la programación utilizada hasta el momento y no confundir al lector. La misma terminología de trabajo se implementa en acápites posteriores. 3.2.2 Función para secuencia aleatoria. Ts_triangular Teniendo en cuenta los aspectos de diseño de la secuencia triangular, se enuncian como sintaxis los siguientes parámetros: Valor pico de la serie triangular Tamaño del vector El valor pico indica hasta qué valor llega la secuencia antes de iniciar la regresión, el usuario hará uso de este parámetro en dependencia de la serie a generar: function [salida] = Ts_triangular(valor pico) CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN 57 Posterior a la implementación del valor pico, se incluye también el parámetro tamaño de vector, que como se había indicado anteriormente le da la opción al usuario de generar una secuencia de periodos de muestreo con el tamaño deseado: function [salida]=Ts_triangular(valor pico,tamaño del vector) Una vez implementados los parámetros de configuración el código de implementación, se inserta el código de generación de secuencia triangular como periodo de muestreo. La salida esta expresada en función de dt, que es el vector que guarda la secuencia de periodos de muestreo. 3.2.3 Función para secuencia aleatoria. Ts_oscilatoria Una vez aclarados los aspectos de diseño de la secuencia oscilatoria (2.3.2), se configura la función de tal manera que sean manipulables los valores siguientes: Frecuencia Amplitud Tipo de función en la que se basarán las oscilaciones (seno o coseno) Tamaño del vector Puesto que la programación de esta serie es más compleja se incorporan los acápites de implementación en los anexos (Anexo I). Se muestra como queda implementada la sintaxis de la función: function [salida]=Ts_oscilatoria(frecuencia,amplitud,tamanho,funcion) Aclarar que para la implementación de la función, sea seno u coseno, solo debe seguir la siguiente sintaxis: Seno [1] Coseno [2] Para seno solo coloque un 1 y para coseno puede colocar un 2. CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN 58 Es necesario que el usuario tenga pleno conocimiento de la serie a generar, y sobre todo, en lo concerniente a las funciones seno y coseno, los valores de frecuencia y amplitud deben ser cuidadosamente tratados a la hora de generar una secuencia con tales condiciones. 3.3 Funciones generadoras de DANR básicos Para la generación de DANR básicos se mantuvo la programación señalada con anterioridad para cada función. Solo es necesario implementar en el código intrínseco de cada función las siguientes líneas de código: yuu=zeros(1000000:1); para guardar los datos correspondientes a los instantes en que se muestreó para los periodos de muestreo determinados, y: yuu(tiempo+nndt)=1; para establecer en qué intervalos guardar dichos instantes de muestreo. Una vez insertadas dichas líneas de código se ajusta la salida de la función para yuu: function [salida] = yuu_triangular(pico,tamanho) salida = yuu(1:tamanho)'; Los parámetros que definen el uso adecuado de la función no cambian puesto que son las propias secuencias de periodos de muestreo la matriz del programa de generación de DANR. No obstante quedan disponibles funciones generadoras de DANR básicos puesto que a partir de estas es que se establecen los DANR: yuu_random (DANR básicos para secuencia aleatoria) yuu_triangular (DANR básicos para secuencia triangular) yuu_oscilatoria (DANR básicos para secuencia oscilatoria) CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN 59 La programación de estas funciones se aprecia en los anexos (Anexo I). 3.4 Funciones generadoras de DANR Una vez implementadas las funciones de generación de DANR básicos es fácil hacer un llamado a estas para la generación de los DANR deseados. Tomando como ejemplo el periodo de muestreo de secuencia aleatoria (2.3), se hace una explicación detallada de la finalidad de nuestra función generadora de DANR, a partir de los aspectos básicos en cuanto a set de datos disponibles para la identificación de sistemas. 3.4.1 Aspectos básicos de identificación MatLab® dispone de una amplia colección de funciones aplicables al campo de la identificación de sistemas, agrupadas en el System Identification Toolbox, que constituyen una herramienta de gran utilidad para la identificación y modelado de sistemas dinámicos. Estas funciones incluyen diferentes algoritmos para el ajuste de parámetros en todo tipo de modelos lineales. Así mismo, permiten examinar las propiedades de los modelos obtenidos, e incluso realizar un preprocesamiento de los datos utilizados para la identificación, en caso de que sea necesario. Como es sabido, todo proceso de identificación parte de un conjunto de datos de entradasalida obtenidos de forma experimental a partir del sistema físico que se pretende modelar. Generalmente, sólo se utiliza una parte de esos datos para realizar la identificación del modelo, y los restantes se reservan para realizar la validación del mismo. Los datos anteriores suelen encontrarse almacenados en ficheros ASCII, que pueden ser cargados en el Workspace de MatLab® mediante la función load para el posterior trabajo con los mismos. Todas las funciones del Toolbox de Identificación que requieren como parámetro los datos de entrada-salida, deben recibir dichos datos en una matriz de dos columnas y N filas, siendo N el número de datos (muestras) de entrada-salida registrados. En la primera columna deben aparecer las salidas en sucesivos periodos de muestreo y en la segunda las correspondientes entradas. CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN 60 3.4.2 Parámetros de diseño Para la implementación de los parámetros de la función se tienen en cuenta las siguientes características: Las funciones correspondientes a los periodos de muestreo deseados contendrán la manipulación de los mismos parámetros especificados con anterioridad para cada función. Las funciones deberán operar a determinadas condiciones, especificadas a partir de textstrings. Es necesaria la inserción de un set de datos que cumplan con las especificidades pertinentes para una correcta identificación. El set de DANR resultantes será una copia fiel de los datos insertados, con las propiedades que lo caracterizan. Siguiendo las especificaciones anteriores se implementan las siguientes funciones: selection_random (DANR para secuencia aleatoria) selection_triangular (DANR para secuencia triangular) selection_oscilatoria (DANR para secuencia oscilatoria) Como se especifica anteriormente se toma como ejemplo de implementación el periodo de muestreo para secuencia aleatoria. Para ello se dispone de la función yuu_random. Como sintaxis para esta función se define la siguiente línea de código: function [ salida ] = selection_random( experimento , valor ) Como se observa, se omite la acción de insertar el tamaño del vector a generar puesto que la propia programación de la función permite hacer los ajustes pertinentes para el set de datos insertados: CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN 61 #Función para la generación de DANR function [ salida ] = selection_random( experimento , valor ) random = yuu_random(valor,length(experimento)); experimento=experimento(:,2); p=1; for i=1:length(random) if random(i) seleccion(p) = experimento(i); indice(p)=i; p = p+1; end end salida = [indice;seleccion]'; Para la línea: random = yuu_random(valor,length(experimento)); Se inserta la función generadora de DANR básicos y la función selection_random se encarga, a partir del resultado determinado por yuu_random, de establecer para una serie de datos experimentales un set de DANR. Otra opción es la de especificar los mismos parámetros de diseño pertinentes para una generación eficiente desde la misma función generadora de DANR: function [ salida ] = selection_random( experimento,valor ) 3.5 Evaluación de las funciones Ya analizado el diseño de las funciones generadoras de DANR se procede con la evaluación de su eficiencia a partir de la experimentación. Se trata el asunto de manera que el usuario comprenda la finalidad del algoritmo tomando en cuenta los pasos para la obtención de un set de datos para la identificación a partir de la implementación de CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN 62 funciones apoyadas en los comandos lógicos que nos ofrece el MatLab® para la experimentación con datos reales (Moore 2010). El Toolbox de Identificación proporciona un fichero (dryer2) con datos de entrada-salida correspondientes a un secador de mano. A continuación se muestran los comandos y funciones necesarios para introducir dichos datos en el Workspace, seleccionar la mitad de ellos para identificar y la otra mitad para validar, y realizar una representación gráfica de los datos seleccionados para identificar. Tómense en cuenta que los datos elegido para formar los DANR son previamente tratados, el programa especifica en todo caso que los DANR son para la experimentación en el surgimiento de nuevas técnicas de identificación. #Se carga el fichero con los datos de la simulación del experimento load dryer2 who tam=length(u2); #Se escogen los datos para la identificación y validación del experimento datos_ident=[y2(1:tam/2) u2(1:tam/2)]; datos_val=[y2(tam/2+1: tam) u2(tam/2+1: tam)]; #Eliminación de tendencias datos_ident=dtrend(datos_ident); #Se grafican los resultados idplot(datos_ident); Se especifica de antemano, que el tamaño de los vectores de datos u2 e y2 debe ser igual. Se selecciona una primera mitad para identificar y la segunda mitad para validar. El uso de la función dtrend permite eliminar los niveles de continua, téngase en cuenta que después del uso de esta función se mantienen las propiedades dinámicas del sistema pero no su CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN 63 comportamiento estático (Guillén 2007). Se hace también una representación gráfica de los datos reservados para identificar (Figura 3.1): y1 2 0 -2 0 100 200 300 400 500 300 400 500 u1 2 1 0 -1 -2 0 100 200 Tiempo Figura 3.1 Representación de los datos tras la ejecución del dtrend Una vez escogidos y tratados los datos, se ajustan las funciones y se muestran las gráficas correspondientes a los resultados arrojados por cada una de estas, ajustando el periodo de muestreo a implementar para la aperiodicidad de los datos, el equivalente en DANR básicos y los DANR resultantes de la variación del periodo de muestreo. DANR en secuencia aleatoria (Figura 3.2): #Ejecución de la función selection_random ts1=Ts_random(10,1000); danr_basico1=yuu_random(10,1000); danr1=selection_random(datos_ident,10); Funciones para secuencia triangular (Figura 3.3): #Ejecución de la función selection_triangular ts2=Ts_triangular(5,1000); danr_basico2=yuu_triangular(5,1000); danr2=selection_triangular(datos_ident,5); Periodo de muestreo Periodo de muestreo CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN 64 Periodo de muestreo en secuencia aleatoria 10 5 0 0 10 20 30 40 50 Valores 60 70 80 90 100 DANR básicos 1 0.5 0 0 10 20 30 40 50 60 Instantes de muestreo 70 80 90 100 DANR en secuencia aleatoria 2 Datos 1 0 -1 -2 0 50 100 150 200 250 Muestras 300 350 400 450 500 Figura 3.2 Ejecución de las funciones para DANR en secuencia aleatoria Funciones para secuencia oscilatoria (Figura 3.4): #Ejecución de la función selection_oscilatoria ts3=Ts_oscilatoria(1,10,1000); danr_basico3=yuu_oscilatoria(1,10,1000); danr3=selection_oscilatoria(datos_ident,1,10); Periodo de muestreo Periodo de muestreo CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN Periodo de muestreo en secuencia triangular 6 4 2 0 0 10 20 30 40 50 Valores 60 70 80 90 100 DANR básicos 1 0.5 0 0 10 20 30 40 50 60 Instantes de muestreo 70 80 90 100 DANR en secuencia triangular 2 Datos 65 0 -2 0 50 100 150 200 250 Muestras 300 350 400 450 500 Periodo de muestreo Periodo de muestreo Figura 3.3 Ejecución de las funciones para DANR en secuencia triangular Periodo de muestreo en secuencia oscilatoria 10 5 0 0 10 20 30 40 50 Valores 60 70 80 90 100 DANR básicos 1 0.5 0 0 10 20 30 40 50 60 Instantes de muestreo 70 80 90 100 DANR en secuencia oscilatoria 2 Datos 1 0 -1 -2 0 50 100 150 200 250 Muestras 300 350 400 450 500 Figura 3.4 Ejecución de las funciones para DANR en secuencia oscilatoria Una vez ejecutadas las funciones los datos se guardan en el Workspace del MatLab® (Figura 3.5), toda la información concerniente a los DANR podrá ser utilizada según el fin CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN 66 deseado. Los DANR resultantes son dados en una matriz de dos columnas y n filas [nx2], en la primera columna se encuentran los instantes para los cuales fueron muestreados los datos experimentales una vez ejecutada la secuencia deseada, y en la segunda, los datos respectivos a esos instantes de muestreo. Figura 3.5 DANR en secuencia aleatoria salvados en el Workspace del MatLab® 3.5.1 Evaluación de errores Una vez implementadas las funciones, se evalúan los parámetros para los cuales el resultado puede ser caótico. Ya ejecutadas, se insertan valores que evalúen el comportamiento de estas con determinadas condiciones. Para suplir esta problemática se utiliza la programación con switch y case, las ventajas de estas funciones lógicas le indican al usuario cuando insertó valores para los cuales el programa no es eficiente, las tablas que se muestran a continuación tienen en cuenta las siguientes condiciones así como los textstring (cuadro de texto) correspondientes para cada incorrección. La programación se especifica en los anexos (Anexo I): CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN 67 Tabla 3.1 Condiciones a especificar para los DANR como secuencia aleatoria de periodo de muestreo Condición 1 dtmax> 0 2* Tamanho textstring (cuadro de texto) „si no cumple la condición‟ „El rango de aleatoriedad debe ser mayor que cero‟ dtmax „El rango de aleatoriedad debe ser mucho menor que el tamaño del vector a generar‟ *Para mayor seguridad implementamos 𝑣𝑎𝑙𝑜𝑟 = 𝑡𝑎𝑚𝑎ñ𝑜 − 100 Tabla 3.2 Condiciones a especificar para los DANR con secuencia triangular de periodo de muestreo Condición 1 pico> 0 2* Tamanho textstring (cuadro de texto) „si no cumple la condición‟ „El valor pico debe ser mayor que cero‟ pico „El valor pico debe ser mucho menor que el tamaño del vector a generar‟ *Para mayor seguridad implementamos 𝑝𝑖𝑐𝑜 = 𝑡𝑎𝑚𝑎ñ𝑜 − 100 Tabla 3.3 Condiciones a especificar para los DANR con secuencia oscilatoria de periodo de muestreo Condición textstring (cuadro de texto) „si no cumple la condición‟ 1 frecuencia>0 „La frecuencia debe ser mayor que0‟ 2 amplitud >0 „La amplitud debe ser mayor que cero‟ 3 funcion = 1 o 2 „Solo puede colocar un valor. [1] para seno, o [2] para coseno‟ CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN 68 Como se puede notar (Tabla 3.4), se especifica la inserción del experimento; en caso de no insertar el set de datos experimentales de la forma específica se diseña una nueva condición. Esto si bien estandariza demasiado el set de datos a insertar permite condicionarlos de tal manera que el resultado sea con fines en la identificación de sistemas donde los datos son analizados a partir de un set [u y] donde u son los datos de entrada correspondientes a una excitación e y la salida del sistema para esa excitación. Tabla 3.4 Condiciones para la inserción del experimento Condición textstring (cuadro de texto) „si no cumple la condición‟ experimento [nx2] 1 3.6 „La matriz insertada debe tener dos columnas‟ Help de usuario Las funciones creadas tienen su help, análogo al que tienen las propias funciones de MatLab®. Esto se consigue de la siguiente forma: las primeras líneas de comentarios de cada fichero de función permiten construir un help sobre esa función. En otras palabras, cuando se teclea en la ventana de comandos de MatLab®: >> help Ts_random El programa responde escribiendo las primeras líneas del fichero Ts_random.m que comienzan por el carácter (%), es decir, que son comentarios. De estas líneas, tiene una importancia particular la primera línea de comentarios (llamada en ocasiones línea H1). En ella se pone la información más relevante sobre nuestra función. La razón es que existe una función, llamada lookfor que busca una determinada palabra en cada primera línea de comentario de todas las funciones *.m. La información pertinente implementada en el help de las funciones será: Nombre de la función Sintaxis Ejemplos CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN 69 Una vez pulsado el comando: >> help Ts_random Se observan los siguientes textstring: Figura 3.6 Help de la función Ts_random Una vez implementada las líneas de comentarios de cada función, se publica un documento con el mismo análisis como vía de ayuda. Al final del texto mostrado en la Figura 3.6 aparece un enunciado en letras azules (showdemo Ts_random), esta opción se implementa a partir de la publicación de las funciones diseñadas. Una vez creadas solo tiene que ir a la barra de herramientas del editor de MatLab y pulsar Publish Ts_random.m y le dará la opción de crear este documento público en la ayuda del MatLab® (Figura 3.7). Las funciones quedan implementadas de manera que con solo publicarlas se pueda obtener la biblioteca mostrada (Figura 3.8). CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN Figura 3.7 Documento público en la ayuda del MatLab® Figura 3.8 Documento público en MatLab® 70 CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN 3.7 71 Observaciones del capítulo Ya implementadas las funciones, se hacen las observaciones pertinentes una vez ejecutadas estas: Las funciones generadoras de DANR no ofrecen los datos de manera disponible para las herramientas de identificación del MatLab®. Estas exigen siempre un periodo de muestreo específico (1.7.5), y la propia implementación del programa desafía dicha elección desde el ajuste de las secuencias variables. Es por ello que las funciones solo sintetizan el algoritmo (2.5.1) dándole mayor manipulación de modo que el usuario simplifique la tarea en busca de nuevas técnicas de identificación. Los textstring se adecuan solo a una primera impresión de las funciones implementadas, investigaciones más profundas podrían dar al traste con nuevas limitantes a la hora de explotar las funciones creadas. Las funciones generadas arrastran las mismas deficiencias dadas como limitantes en el capítulo anterior. (2.6.1) 3.8 Análisis económico Un aspecto fundamental en la realización del proyecto es el análisis económico, este abarca tanto los gastos que generó el desarrollo, como los beneficios que traerían para la entidad que disponga de la investigación realizada hasta el momento. Los resultados de este trabajo de diploma contribuyen a posibilitar otras tareas de investigación en el área del desarrollo de nuevos algoritmos de identificación, por tanto es un trabajo enmarcado en investigaciones básicas, que contribuye al desarrollo de herramientas computacionales a emplear en otras tareas científicas. Por lo anterior, el costo de este proyecto de diploma es gasto no reintegrable. Todos los gastos del proyecto están calculados en moneda nacional. O sea, no requirió inversión en divisas de ningún tipo. Los gastos al proyecto fueron básicamente13: 13 Todas las cifras en moneda nacional CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN 72 Tabla 3.5 Mano de obra directa* Investigadores Horas Valor Profesor investigador 50 2000.00 Alumno investigador 240 2400.00 290 4400.00 *No hay salario empleado en este proyecto. Esto es solo cálculo de estimado de costos por la mano de obra empleada en el desarrollo del proyecto. Gasto estimado de mano de obra horas: valor 290: 4400.00 Tabla 3.6 Otros gastos directos Otros gastos directos Costo Peligrosidad No Transferencia tecnológica No Impuestos sociales No No hubo gastos en mano de obra indirecta Tabla 3.7 Otros costos directos Otros costos directos Costo Transportación No Alimentación* No Equipamiento No fue necesario invertir en equipos Equipos de protección individual No se aplica *Financiado anteriormente Materiales e inversiones: No hubo gastos e inversiones La licencia del MatLab® no se compró para este proyecto. No se gastó en otros materiales (impresoras, memorias flash, etc.) CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN 73 Costos indirectos: Se calculan sobre la base de los costos directos. La administración del proyecto fue realizada en lo fundamental en las tareas propias del alumno investigador. Total:Cero Tarifas bancarias: No Lo anterior implica que el principal gasto de este proyecto está en la mano de obra de los investigadores. Impacto económico: Nuevos horizontes de la investigación científica se abren con estas nuevas capacidades. El impacto es directo en todas las ramas del conocimiento y la investigación científica, sea en investigaciones básicas o en aplicadas. Los resultados a alcanzar constituyen valiosas herramientas para los centros de investigación, sobre todo los relacionados con la biotecnología, la energía y con el medio ambiente en cualquiera de sus modalidades. Algunas instituciones beneficiadas: Instituciones que atienden el desarrollo y/o aplicación de sistemas digitales para la industria tecnológica y biotecnológica en general: Centro de Bioplantas de la UNICA (Bioplantas) Instituto de Biotecnología de las Plantas (IBP) Centro de Ingeniería Genética y Biotecnología (Camagüey) Centro de Inmunología molecular Centro de Bioactivos Químicos (CBQ) El desarrollo de este trabajo no genera beneficios económicos de forma directa. Está condicionado a aumentar la productividad de los investigadores, que emplearán los resultados de este en investigaciones de carácter básico. 3.9 Conclusiones del capítulo Una vez implementadas las funciones y analizados los resultados se arriban a las siguientes conclusiones: CAPÍTULO 3. FORMACIÓN DEL EJECUTABLE/FUNCIÓN 74 Los resultados alcanzados en la formación del ejecutable/función cumplen los objetivos propuestos para este capítulo, al agilizar considerablemente el proceso de síntesis. Las funciones creadas a partir del algoritmo diseñado, definen la aplicación del programa en dependencia de los DANR deseados. La implementación de ayuda (Help) a cada función apoya una mejor comprensión de los DANR a generar y define la formación del ejecutable/función. CONCLUSIONES Y RECOMENDACIONES 75 CONCLUSIONES Y RECOMENDACIONES En este apartado se presentan las conclusiones de este trabajo, ordenados conforme se presentaron los objetivos específicos, seguidos de una conclusión general y de algunas líneas de recomendaciones para investigaciones futuras. Conclusiones 1. Se ajustó e implementó un programa de generación de DANR. 2. Los programas ajustados permiten la generación de manera sencilla y eficiente de los DANR diseñados, lo cual resultará en beneficios para el desarrollo de nuevos algoritmos de identificación. 3. Las herramientas del MatLab®, así como su fácil manipulación, permiten la evaluación, a través de la simulación, del programa diseñado. 4. Se implementaron funciones apoyadas en un algoritmo de generación de DANR, lo cual define y agiliza el uso del programa en dependencia de los DANR deseados. Conclusiones generales En este trabajo, como resultado principal, se ajustaron tres tipos de funciones generadores de DANR a usar en la identificación de sistemas, el componente común es su implementación a partir de la generación de los periodos de muestreo. A modo de conclusión general y relacionada con la cuestión metodológica, se determina que, aunque los resultados obtenidos por medio de las herramientas del MatLab® son de fácil interpretación, proporcionan suficiente ayuda a la hora de comprobar la eficiencia del programa en cuestiones estadísticas; aun cuando en el análisis estadístico de datos, una relación estadísticamente significativa no implica necesariamente una relación causa-efecto, esto conlleva a tener un conocimiento profundo de las diferentes técnicas estadísticas (fortalezas y limitaciones). Sin embargo, el programa al usar un set de datos CONCLUSIONES Y RECOMENDACIONES 76 elegidos de antemano para la identificación y manipularlos para la generación de DANR, demuestra que es eficiente en cuanto a términos de generación de datos de uso en el desarrollo de nuevas técnicas de identificación. Recomendaciones 1. Anadir al estudio de técnicas estadísticas el análisis y comprensión de fenómenos generadores de DANR como vía para el surgimiento de nuevas técnicas de predicción. 2. Utilizar los medios y técnicas computacionales disponibles en la comunidad científica para el análisis y generación de nuevos DANR con vistas a una mejor identificación. 3. Aplicar el programa en nuevas técnicas de identificación que determinen el fin para lo que fueron diseñados: „una mejor aproximación al sistema real‟. REFERENCIAS BIBLIOGRÁFICAS 77 REFERENCIAS BIBLIOGRÁFICAS Babu.P-Stoika.P (2010). Spectral analysis of nonuniformly sampled data – a review. Digital Signal Processing. 20: 359-378. Báez, M. E. (2008). "El periodograma como método para la estimación de la densidad espectral de potencia." Retrieved 15/2/2014, from http://infomed20.sld.cu. Buschiazzo, L. (2009). Revista Ingeniería de Sistemas. Identificación de Patrones en Series de Tiempo Usando Redes Neuronales en Datos de una Empresa Petroquímica. Volumen XXIII: 25. Cubero, R. G. (2008). Revista Iberoamericana de Automática e Informática Industrial. Madrid, España, CEA. Chatfield.C (1991). The analysis of time series: An introduction. Chapman and Hall, London, Fourth edition: : 241. D. Rybski, A. B., S. Havlin, and H. Von Storch (2006). Long-term persistence in climate and the detection problem. Geophys. Res. Lett, 33. 6: 706-718. D.Heslop-M.J.Dekkers (2002). Spectral analysis of unevenly spaced climatic time series using CLEAN: signal recovery and derivation of significance levels using a Monte Carlo simulation. Physics of the Earth and Planetary Interiors: 103-116. González, M. G. (2004). Métodos informáticos de la física. Generación de números aleatorios. Barcelona, España: 1-5. Guillén, M. E. L. (2007). Identificación de Sistemas. Aplicación al modelado de un motor de continua.: 4-12. Gunn, C. W.-D. E. (2003). A densely sampled core and climate variable aliasing. Geomarine Lett, 1. 23: 64-71. Ljung, L. (1999). System Identification,Theory of the User. Second edition, Prentice Hall, Suecia. Ljung, L. (2010). Approaches to identification of non linear systems. Chinese Control Conference (CCC). China,2010: pag.1-5. Lomb.N.R (1976). Least squares frequency analysis of unequally spaced data. Astrophysics and Space Science. 39: 447-462. M.Schulz-K.Stattegger (1997). Spectral analysis of unevenly spaced paleoclimatic time series. Computers & Geosciences, 23. 9: 929-945. REFERENCIAS BIBLIOGRÁFICAS 78 Martínez, J. M. P. (2011). Aplicación de técnicas estadísticas en el estudio de fenómenos ambientales y ecosistémicos. Departamento de Física Aplicada II. Leioa, España, Universidad del País Vasco. Doctorado: 208. Montero, E. L. (2007). Identificación de Sistemas en Lazo Cerrado con Estructura tipo CLOE. Departamento de Ingeniería Electrónica. Cuernavaca, Morelos, México. Maestría: 2-13. Moore, H. (2010). Matlab® para Ingenieros. PEARSON, Prentice Hall, Salt Lake, Estados Unidos. Morón, J. (2011). Señales y Sistemas. Fondo Editorial Biblioteca, Vereda del Lago, Maracaibo, Venezuela. Mudelsee, M. (2010). Climate Time Series Analysis: Classical Statistical and Bootstrap Methods, Springer. P.Weedon, G. (2003). Time-series analysis and cyclostratigraphy: examining stratigraphic records of environmental cycles. Cambridge Univ Press, Cambridge. Ríos, J. G. (2005). Arquitecturas para el Tratamiento de Señal e Imagen, Análisis en Frecuencia de Señales y Sistemas. Depto. de Tecnología Fotónica, Mallorca, España. Rodríguez-Igúzquiza (2013). Análisis espectral de series temporales de variables geológicas con muestreo irregular, Boletín Geológico y Minero, 124. 2: 323337. Scargle.J.D (1982). Studies in astronomical time series analysis.II. Statistical aspects of spectral analysis of unevenly spaced data. Astrophysical Journal. 263: 835-853. Stoica.P-Sandgren.N (2006). Spectral analisis of irregularly-sampled data: Paralleling the regularly-sampled data approaches. Digital Signal Processing. 16: 712-734. T.Söderstrom, P. S. a. (1989). System Identification. Prentice Hall International, Hemel Hempstead, Hertfordshire Toro, M. d. (1968). Pequeño Larousse Ilustrado. I. d. L. Edición Revolucionaria. Vallejo, P. M. (2007). Correlación y Covarianza, Estadística aplicada a las Ciencias Sociales. Universidad Pontificia Comillas, Madrid: 3-5. Wunsch, C. (1999). The interpretation of short climate records, with comments on the North Atlantic and Southern Oscillations. Bull. Amer. Meteor. Soc., 2. 80: 245255. Zadeh, L. (1962). From circuit theory to system theory, Proc. IRE 50: 856-865. ANEXOS 79 ANEXOS Anexo I Programación complementaria %% PROGRAMA DE GENERACION DE PERIODO ALEATORIO % Función para generar valores que describan la aperiodicidad % del muestreo de datos de forma aleatoria. % %% SINTAXIS % % |[salida] = Ts_random(dtmax,tamanho)| % % [tamanho]: define la cantidad de valores a generar. Se implementa % esta variable para darle la opción al usuario de simular % la cantidad de valores necesario para su investigación. % % [dtmax]: determina el rango de aleatoriedad del periodo % de muestreo entre [1 dtmax] % % A la salida obtendremos los periodos de muestreo generados por el % usuario con la aperiodicidad deseada. % %% EJEMPLO % Se desea generar una serie de 1000 DANR de variabilidad aleatoria %entre [1 10] % % danr = Ts_random(10,1000); % La función devuelve un vector con 1000 elementos tipo DANR en % secuencia aleatoria % figure(1) % Graficamos el vector de periodos de muestreo % stem(danr(1:100)) % title('DANR aleatorio') % xlabel('Valores') % ylabel('Periodo de muestreo') %% % Para mejor visualización ver %<file:///F:/PROGRAMA/html/ejemplos1.html %Ejemplos>Aclaramos que la %dirección puesta como link para observar los %ejemplosdebe ser %actualizada una vez inserte la función en el Set Path ANEXOS 80 function [salida] = Ts_random(dtmax,tamanho) t=zeros(10000,1); dt=[10000,1]; tiempo=1; if dtmax>tamanho/100 disp('El rango de aleatoriedad debe ser mucho menor que el tamaño del vector a generar'); else ndt=0; switch dtmax case 0 disp('El rango de aleatoriedad debe ser mayor que cero'); otherwise for i=1:9000 ndt=ceil(dtmax*rand); dt(i)=ndt; tiempo=tiempo+ndt; t(i)=tiempo; end salida = dt(1:tamanho)'; end end ANEXOS 81 %% PROGRAMA DE GENERACION DE PERIODO EN SECUENCIA TRIANGULAR % % Función para generar secuencia de valores en forma triangular con %valor límite pico que determine la aperiodicidad del muestreo de %datos ascendentey descendente en la misma magnitud % %% SINTAXIS % |danr = Ts_triangular(pico,tamanho)| % % [pico]: determina el rango en el que habrán picos máximos en la % secuenciade DANR triangular. % % [tamanho]: define la cantidad de valores a generar. Se implementa % esta variable para darle laopción al usuario de simular % la cantidad de valores necesarios para su investigación. % % A la salida obtendremos la secuencia dt de los periodos de muestreo % generados por el usuario % % %%% EJEMPLO % Se desea generar una serie de 1000 DANR de variabilidad triangular % con picosentre [1 10] % %% % % danr = Ts_triangular(10,1000); % La función devuelve un vector con 1000 elementos tipo DANR en % secuencia triangular % % figure(1) % Graficamos el vector de periodos de muestreo % stem(danr(1:100)) % title('DANR triangular') % xlabel('Valores') % ylabel('Periodo de muestreo') %% % Para mejor visualización ver <I:/PROGRAMA/programas de %tesis/FUNCIONES % danr/html/ejemplos.html Ejemplos> % Aclaramos que la dirección puesta como link para observar los %ejemplosdebe ser actualizada una vez inserte la función en el Set %Path ANEXOS function [salida] = Ts_triangular(pico,tamanho) t=zeros(100000,1); dt=[100000,1]; tiempo=1; if pico>tamanho/100 disp('El valor pico debe ser mucho menor que el tamaño del vector a generar'); else ndt=0; switch pico case 0 disp('El valor pico no puede ser 0'); otherwise for i=1:10000 ndt=ndt+1; nndt=sqrt(ndt^2); if ndt==pico ndt=-ndt; elseif ndt==-1 ndt=-ndt; end dt(i)=nndt; tiempo=tiempo+nndt; t(i)=tiempo; end salida = dt(1:tamanho)'; end end 82 ANEXOS 83 %% PROGRAMA DE GENERACION DE PERIODO EN SECUENCIA OSCILATORIA % % Función para generar secuencia de valores en forma oscilatoria con % valor límite pico que determinen la aperiodicidad del muestreo en %forma oscilatoria % %% SINTAXIS % |danr = Ts_oscilatoria(frecuencia,amplitud,tamanho,funcion)| % % [frecuencia]: determina las frecuencias de las oscilaciones % % [amplitud]: determina la amplitud de las oscilaciones % % [tamanho]: define la cantidad de valores a generar. Se implementa % esta variable para darle laopción al usuario de simular % la cantidad de valores necesarios para su investigación. % % [funcion]: determina la función a implementar para generar la % oscilación.[1] para seno y [2] para coseno. % % A la salida obtendremos la secuencia dt de los periodos de muestreo % generados por el usuario % %%% EJEMPLO % Se desea generar una periodo de muestreo de secuencia oscilatoria de % 1000valores de frecuencia 1 amplitud 10 basados en la función seno % %% % y = Ts_oscilatoria(1,10,seno,1000) % La función devuelve un vector con 1000 elementos tipo DANR en % secuencia oscilatoria % % figure(1) % Graficamos el vector de periodos de muestreo % stem(y(1:100)) % title('DANR triangular') % xlabel('Valores') % ylabel('Periodo de muestreo') %% % Para mejor visualización ver <I:/PROGRAMA/programas de %tesis/FUNCIONES % danr/html/ejemplos.html Ejemplos> % Aclaramos que la dirección puesta como link para observar los %ejemplosdebe ser actualizada una vez inserte la función en el Set %Path ANEXOS function [salida] = Ts_oscilatoria(frecuencia,amplitud,tamanho,funcion) if frecuencia <= 0 disp('La frecuencia de la serie debe ser mayor que cero') elseif amplitud <=0 disp('La amplitud de la serie debe ser mayor que cero') elseif tamanho<=0 disp('El tamaño de la serie a generar debe ser mayor que cero') elseif funcion == 1||2 desplzanmiento1=amplitud/2; cantidad_valores=tamanho; valores=0:1:cantidad_valores; switch funcion case 1 m=sin(frecuencia*valores); case 2 m=cos(frecuencia*valores); otherwise disp('Inserte [1] para seno [2] para coseno') end y1=desplzanmiento1+amplitud/2*m; t=zeros(10000,1); dt=[10000,1]; tiempo=1; for i=1:length(y1) ndt=ceil(y1(i)); dt(i)=ndt; tiempo=tiempo+ndt; t(i)=tiempo; end salida = dt(1:tamanho)'; end 84 ANEXOS 85 %% PROGRAMA DE GENERACION DE DANR BASICO PARA SECUENCIA ALEATORIA % Función para generar valores que describan la aperiodicidad del muestreo de datos de forma aleatoria. % % la salida muestra con valor 1 los instantes en que se realizó % muestreo...dicha matriz define su usoen la implementación de una % función más abarcadora de uso en laidentificación. %% SINTAXIS % % |[salida] = yuu_random(dtmax,tamanho)| % % [tamanho]: define la cantidad de valores a generar. Se implementa % esta variable para darle laopción al usuario de simular % la cantidad de valores necesarios para su investigación. % % [dtmax]: determina el rango de aleatoriedad del periodo de muestreo % entre [1 dtmax] % % A la salida obtendremos los instantes en que serán muestreados los % valores para los periodos de muestreo generados por el usuario en un % vector binario, este cumplirá con la siguiente hipótesis: % %%% hipótesis: % %% % |h0=0 valor no muestreado| % % |h1=1 valor muestreado| % %% EJEMPLO % % Se desea generar una serie de 1000 DANR de variabilidad aleatoria % entre [1 10] % % danr = yuu_random(10,1000); % La función devuelve un vector con 1000 elementos tipo DANR en % secuencia aleatoria % figure(1) % Graficamos el vector de periodos de muestreo % stem(danr(1:100)) % title('DANR aleatorio') % xlabel('Instantes de muestreo') % ylabel('Muestreo') %% % para mejor visualización ver % <file:///F:/PROGRAMA/html/ejemplosbasicos1.html Ejemplos> % Aclaramos que la dirección puesta como link para observar los %ejemplosdebe ser actualizada una vez inserte la función en el Set %Path ANEXOS 86 function [salida] = yuu_random(dtmax,tamanho) yuu=zeros(1000000:1); t=zeros(10000,1); dt=[10000,1]; tiempo=1; if dtmax>tamanho/100 disp('El rango de aleatoriedad debe ser mucho menor que el tamaño del vector a generar'); else ndt=0; switch dtmax case 0 disp('El rango de aleatoriedad debe ser mayor que cero'); otherwise for i=1:9000 ndt=ceil(dtmax*rand); dt(i)=ndt; yuu(tiempo+ndt)=1; tiempo=tiempo+ndt; t(i)=tiempo; end salida = yuu(1:tamanho)'; end end ANEXOS 87 %% PROGRAMA DE GENERACION DE DANR BASICO PARA SECUENCIA TRIANGULAR % Función para generar secuencia de valores en forma triangular con %valorlímite pico que determine la aperiodicidad del muestreo de %datos ascendente y descendentemente en lamisma magnitud % la salida muestra con valor 1 los instantes en que se realizó % muestreo...dicha matriz será utilizadaen la implementación de una % función más abarcadora de uso en la identificación. %% SINTAXIS % % |danr = yuu_triangular(pico,tamanho)| % % [pico]: determina el rango en el que habrán picos máximos en la % secuenciade DANR triangular. % % [tamanho]: define la cantidad de valores a generar. Se implementa % esta variable para darle la opción al usuario de simular % la cantidad de valores necesario para su investigación. % % A la salida obtendremos los instantes en que serán muestreados los % valores para los periodos de muestreo generados por el usuario en un % vector binario, este cumplirá con la siguiente hipótesis: % %%% hipótesis: % %% % |h0=0 valor no muestreado| % % |h1=1 valor muestreado| % %%% EJEMPLO % Se desea generar una serie de 1000 DANR de variabilidad triangular % con picosentre [1 10] % %% % danr = yuu_triangular(10,1000); % La función devuelve un vector con 1000 elementos tipo DANRen % secuencia % triangular % % figure(1) % Graficamos el vector de periodos de muestreo % stem(danr(1:100)) % title('DANR triangular') % xlabel('Instantes de muestreo') % ylabel('Muestreo') %% % Para mejor visualización ver <file:///F:/PROGRAMA/html/ejemplosbasicos.html Ejemplos> ANEXOS function [salida] = yuu_triangular(pico,tamanho) yuu=zeros(1000000:1); t=zeros(100000,1); dt=[100000,1]; tiempo=1; if pico>tamanho/100 disp('El valor pico debe ser mucho menor que el tamaño del vector a generar'); else ndt=0; switch pico case 0 disp('El valor pico no puede ser 0'); otherwise for i=1:10000 ndt=ndt+1; nndt=sqrt(ndt^2); if ndt==pico ndt=-ndt; elseif ndt==-1 ndt=-ndt; end dt(i)=nndt; yuu(tiempo+nndt)=1; tiempo=tiempo+nndt; t(i)=tiempo; end salida = yuu(1:tamanho)'; end end 88 ANEXOS 89 % PROGRAMA DE GENERACIÓN DE DANR BASICO EN SECUENCIA OSCILATORIA % Función para generar secuencia de valores en forma oscilatoria que % determinen la aperiodicidad del muestreo en forma oscilatoria. % la salida muestra con valor 1 los instantes en que se realizó % muestreo. Dicha matriz será utilizadaen la implementación de una % función más abarcadora de uso en la identificación. %% SINTAXIS % |danr = Ts_oscilatoria(frecuencia,amplitud,tamanho,funcion)| % % [frecuencia]: determina las frecuencias de las oscilaciones % % [amplitud]: determina la amplitud de las oscilaciones % % [tamanho]: define la cantidad de valores a generar. Se implementa % esta variable para darle la opción al usuario de simular % la cantidad de valores necesario para su investigación. % % [funcion]: determina la función a implementar para generar la % oscilación.[1] para seno y [2] para coseno. % % A la salida obtendremos los instantes en que serán muestreados los % valores para los periodos de muestreo generados por el usuario en un % vector binario, este cumplirá con la siguiente hipótesis: % %%% hipótesis: %% % |h0=0 valor no muestreado| % |h1=1 valor muestreado| % %%%% EJEMPLO % Se desea generar una periodo de muestreo de secuencia oscilatoria de % 1000valores de frecuencia 1 amplitud 10 basados en la función seno %% % y = yuu_oscilatoria(1,10,seno,1000) % La función devuelve un vector con 1000 elementos tipo DANR en % secuencia oscilatoria % % figure(1) % Graficamos el vector de periodos de muestreo % stem(y(1:100)) % title('DANR triangular') % xlabel('Instantes de muestreo') % ylabel('Muestreo') %% % Para mejor visualización ver <I:/PROGRAMA/programas de %tesis/FUNCIONES danr/html/ejemplos.html Ejemplos> % Aclaramos que la dirección puesta como link para observar los %ejemplosdebe ser actualizada una vez inserte la función en el Set %Path ANEXOS function [salida] = yuu_oscilatoria(frecuencia,amplitud,tamanho,funcion) if frecuencia <= 0 disp('La frecuencia de la serie debe ser mayor que cero') elseif amplitud <=0 disp('La amplitud de la serie debe ser mayor que cero') elseif tamanho<=0 disp('El tamaño de la serie a generar debe ser mayor que cero') elseif funcion == 1||2 desplzanmiento1=amplitud/2; cantidad_valores=tamanho; valores=0:1:cantidad_valores; switch funcion case 1 m=sin(frecuencia*valores); case 2 m=cos(frecuencia*valores); otherwise disp('Inserte [1] para seno [2] para coseno') end y1=desplzanmiento1+amplitud/2*m; yuu=zeros(1000000:1); t=zeros(10000,1); dt=[10000,1]; tiempo=1; for i=1:length(y1) ndt=ceil(y1(i)); dt(i)=ndt; yuu(tiempo+ndt)=1; tiempo=tiempo+ndt; t(i)=tiempo; end salida = yuu(1:tamanho)'; end 90 ANEXOS 91 %% PROGRAMA DE GENERACION DE DANR CON PERIODO VARIABLE DE SECUENCIA % ALEATORIA % Función para convertir los datos experimentales de un proceso en %DANR conperiodo de muestreo variable de forma aleatoria entre % [1 valor] % %% SINTAXIX % % [ salida ] = selection_random( experimento , valor ) % % [valor]: determina el rango de variabilidad del periodo de muestreo % entre 1 y valor. % % [experimento]: añadimos los datos elegidos para el proceso de % identificación. % % Aclarar que en este apartado se puede incluir la matriz de datos % entrada salida [u y] puesto que la propia función está diseñada % para escoger y manipular la salida con respecto a la entrada. % % A la salida será devuelta la respuesta del sistema para los %instantes de muestreo que determina el periodo de muestreo elegido %por el usuario. %%% EJEMPLO % A partir de la simulación de un sistema obtenemos los datos de %entrada-salida que sirvan de partida para la identificación y los %transformamos % en DANR. % %% % numd=[0.5 -0.3]; % Numerador de la función de transferencia en z % dend=[1 0.2 0.16 0.24]; % Denominador de la función de transferencia en z % u=idinput(1000,'PRBS',[0 0.25],[0 50]); % Generación de una entrada binaria pseudoaleatoria con 1000 % muestras % y=dlsim(numd,dend,u); % Obtención de la respuesta mediante simulación de la salida % datos=[y u]; % Construcción de la matriz con los datos de entrada-salida % g=selection_random(datos,10); % Construción de la matriz con DANR en secuencia aleatoria con % rango de variabilidad de [1 10] %% % % Para mejor visualización ver <I:/PROGRAMA/programas de %tesis/FUNCIONES danr/html/ejemplos.html Ejemplos> % Aclaramos que la dirección puesta como link para observar los %ejemplosdebe ser actualizada una vez inserte la función en el Set %Path ANEXOS 92 function [ salida ] = selection_random( experimento , valor ) random = yuu_random(valor,length(experimento)); experimento=experimento(:,1); p=1; if valor>length(experimento)/100 disp('El rango de aleatoriedad debe ser mucho menor que el tamaño del vector a experimentar'); elseif length(experimento(1,:))>2 disp('La matriz isertada debe tener dos columnas'); else switch valor case 0 disp('El rango de aleatoriedad debe ser mayor que cero'); otherwise for i=1:length(random) if random(i) seleccion(p) = experimento(i); indice(p)=i; p = p+1; end end end salida = [indice;seleccion]'; end ANEXOS 93 % PROGRAMA DE GENERACIÓN DE DANR CON PERIODO VARIABLE EN SECUENCIA %TRIANGULAR % Función para convertir los datos experimentales de un proceso en % DANRconperiodo de muestreo variable de forma triangular entre % [1 pico] % %% SINTAXIS % [y u]=selection_triangular( experimento , rango ) % % [rango]: definimos la variabilidad del periodo de muestreo en forma % triangular entre 1 y rango. % % [experimento]: añadimos los datos elegidos para el proceso de % identificación. % % Aclarar que en este apartado se puede incluir la matriz de datos % entrada salida [u y] puesto que la propia función está diseñada $para escoger y manipular la salida con respecto a la entrada. % % A la salida será devuelta la respuesta del sistema para los %instantes de muestreo que determina el periodo de muestreo elegido %por el usuario. %%% EJEMPLO % A partir de la simulación de un sistema obtenemos los datos de entrada-% salida que sirvan de partida para la identificación y los transformamos % en DANR. % %% % numd=[0.5 -0.3]; % Numerador de la función de transferencia en z % dend=[1 0.2 0.16 0.24]; % Denominador de la función de transferencia en z % u=idinput(1000,'PRBS',[0 0.25],[0 50]); % Generación de una entrada binaria pseudoaleatoria con 1000 % muestras % y=dlsim(numd,dend,u); % Obtención de la respuesta mediante simulación de la salida % datos=[y u]; % Construcción de la matriz con los datos de entrada-salida % g=selection_triangular(datos,10); % Construción de la matriz con DANR en secuencia triangular con rango % de variabilidad de [1 10] %% % % Para mejor visualización ver <I:/PROGRAMA/programas de tesis/FUNCIONES danr/html/ejemplos.html Ejemplos> % Aclaramos que la dirección puesta como link para observar los ejemplos % debe ser actualizada una vez inserte la función en el Set Path ANEXOS 94 function [ salida ] = selection_triangular( experimento , rango ) random = yuu_triangular(rango,length(experimento)); experimento=experimento(:,1); p=1; if rango>length(experimento) disp('El valor pico debe ser mucho menor que el tamaño del vector a experimentar'); elseif length(experimento(1,:))>2 disp('La matriz isertada debe tener dos columnas'); else ndt=0; switch pico case 0 disp('El valor pico no puede ser 0'); otherwise for i=1:length(random) if random(i) seleccion(p) = experimento(i); indice(p)=i; p = p+1; end end end salida = [indice;seleccion]'; end ANEXOS 95 %% PROGRAMA DE GENERACION DE DANR CON PERIODO VARIABLE DE SECUENCIA %OSCILATORIA % Función para convertir los datos experimentales de un proceso en %DANR con periodo de muestreo variable de forma oscilatoria con valor defrecuencia y amplitud en forma de seno o coseno. % %% SINTAXIS % |danr=selection_oscilatoria(experimento,frecuencia,amplitud,funcion)| % % [experimento]: añadimos los datos elegidos para el proceso de % identificación. % % [frecuencia]: determina las frecuencias de las oscilaciones % % [amplitud]: determina la amplitud de las oscilaciones % % [tamanho]: define la cantidad de valores a generar. Se implementa % esta variable para darle la opción al usuario de simular % la cantidad de valores necesario para su investigación. % % [funcion]: determina la función a implementar para generar la % oscilación. [1] para seno y [2] para coseno. % % Aclarar que en este apartado se puede incluir la matriz de datos % entrada salida [u y] puesto que la propia función está diseñada % para escoger y manipular la salida con respecto a la entrada. % % A la salida será devuelta la respuesta del sistema para los % instantes de muestreo que determina el periodo de muestreo elegido % por el usuario. %%% EJEMPLO % A partir de la simulación de un sistema obtenemos los datos de %entrada-salida que sirvan de partida para la identificación y los %transformamos % en DANR. % %% % numd=[0.5 -0.3]; % Numerador de la función de transferencia en z % dend=[1 0.2 0.16 0.24]; % Denominador de la función de transferencia en z % u=idinput(1000,'PRBS',[0 0.25],[0 50]); % Generación de una entrada binaria pseudoaleatoria con 1000 % muestras % y=dlsim(numd,dend,u); % Obtención de la respuesta mediante simulación de la salida % datos=[y u]; % Construcción de la matriz con los datos de entrada-salida % g=selection_oscilatoria(datos,1,10,1); % ANEXOS 96 % Construcción de la matriz con DANR en secuencia oscilatoria con % frecuencia [1], amplitud [10] a partir de la función seno [1]. %% % % Para mejor visualización ver <I:/PROGRAMA/programas de %tesis/FUNCIONES %danr/html/ejemplos.html Ejemplos>Aclaramos que la %dirección puesta como %link para observar los ejemplosdebe ser %actualizada una vez inserte la %función en el Set Path function[salida]=selection_oscilatoria(experimento,frecuencia,amplitud ,funcion ) random=yuu_oscilatoria(frecuencia,amplitud,length(experimento), funcion); experimento=experimento(:,1); p=1; if frecuencia <= 0 disp('La frecuencia de la serie debe ser mayor que cero') elseif amplitud <=0 disp('La amplitud de la serie debe ser mayor que cero') elseif length(experimento)<=0 disp('El tamaño de la serie a generar debe ser mayor que cero') elseif length(experimento(1,:))>2 disp('La matriz isertada debe tener dos columnas'); elseif funcion == 1||2 for i=1:length(random) if random(i) seleccion(p) = experimento(i); indice(p)=i; p = p+1; end end salida = [indice;seleccion]'; else disp('Inserte [1] para seno [2] para coseno') end ANEXOS 97 Anexo II Programación de experimentos %SECADOR DE MANOS load dryer2 who tam=length(u2); datos_ident=[y2(1:tam/2) u2(1:tam/2)]; datos_val=[y2(tam/2+1: tam) u2(tam/2+1: tam)]; datos_ident=dtrend(datos_ident); idplot(datos_ident); idplot(datos_ident); % representación gráfica de los datos reservados para identificar ts1=Ts_random(10,1000); danr_basico1=yuu_random(10,1000); danr1=selection_random(datos_ident,2); figure(2) subplot(3,1,1) plot(ts1(1:100)) subplot(3,1,2) stem(danr_basico1(1:100)) subplot(3,1,3) plot(danr1(:,1),danr1(:,2)) ts2=Ts_triangular(5,1000); danr_basico2=yuu_triangular(5,1000); danr2=selection_triangular(datos_ident,0); figure(3) subplot(3,1,1) plot(ts2(1:100)) subplot(3,1,2) stem(danr_basico2(1:100)) subplot(3,1,3) plot(danr2(:,1),danr2(:,2)) ts3=Ts_oscilatoria(1,10,1000,1); danr_basico3=yuu_oscilatoria(1,10,1000,1); danr3=selection_oscilatoria(datos_ident,1,10,1); figure(4) subplot(3,1,1) plot(ts3(1:100)) subplot(3,1,2) stem(danr_basico3(1:100)) subplot(3,1,3) plot(danr3(:,1),danr3(:,2)) %SIMULACION EXPERIMENTAL numd=[0.5 -0.3]; %numerador de la función de transferencia en z dend=[1 0.2 0.16 0.24]; %denominador de la función de transferencia en z u=idinput(1000,'PRBS',[0 0.25],[0 50]); %Generación de una entrada binaria pseudoaleatoria con 1000 muestras y_sin=dlsim(numd,dend,u); %Obtención mediante simulación de la salida sin ruido y=y_sin; datos=[y u]; %Construcción de la matriz con los datos de entradasalida ANEXOS Anexo III Funciones de apoyo 98 ANEXOS 99 ANEXOS 100 ANEXOS 101 Anexo IV Diagramas de flujo INICIO yuu=zeros(1000000:1); t=zeros(100000,1); dt=[100000,1]; tiempo=1; dtmax=10 ; ndt=0; %PROGRAMA DE GENERACION DE DANR CON PERIODO VARIABLE DE SECUENCIA ALEATORIA 1%Definimos los vectores de elementos yuu como datos y t como instantes de muestreo el vector dt contendrá los periodos de muestreo For i=1:10000 Se agotan los valores de la matriz indice yuu=zeros(1000000:1); t=zeros(100000,1); dt=[100000,1]; tiempo=1; dtmax=10 ; ndt=0; 2%Se conforma el bucle for a partir de las operaciones lógicas if y elseif for i=1:10000 dt(i)=nndt; yuu(tiempo+ndt)=1; tiempo=tiempo+ndt; t(i)=tiempo; FIN dt(i)=nndt; yuu(tiempo+ndt)=1; tiempo=tiempo+ndt; t(i)=tiempo; end ANEXOS 102 INICIO yuu=zeros(1000000:1); t=zeros(100000,1); dt=[100000,1]; tiempo=1; pico=10 ; ndt=0; For i=1:10000 Se agotan los valores de la matriz indice ndt=ndt+1; nndt=sqrt(ndt^2); verdadero If ndt==pico; ndt=-ndt; %PROGRAMA DE GENERACION DE DANR CON PERIODO VARIABLE DE SECUENCIA TRIANGULAR 1%Definimos los vectores de elementos yuu como datos y t como instantes de muestreo el vector dt contendrá os periodos de muestreo yuu=zeros(1000000:1); t=zeros(100000,1); dt=[100000,1]; tiempo=1; ndt=0; 2%Se conforma el bucle for a partir de las operaciones lógicas if y elseif for i=1:10000 elseif ndt==-1 verdadero ndt=-ndt; ndt=ndt+1; nndt=sqrt(ndt^2); if ndt==pico ndt=-ndt; elseif ndt==-1 ndt=-ndt; end 4% Se almacenan los cambios en los respectivos vectores dt(i)=nndt; yuu(tiempo+nndt)=1; tiempo=tiempo+nndt; t(i)=tiempo; dt(i)=nndt; yuu(tiempo+nndt)=1; tiempo=tiempo+nndt; t(i)=tiempo; end FIN ANEXOS 103 INICIO yuu=zeros(1000000:1); t=zeros(100000,1); dt=[100000,1]; tiempo=1; desplzanmiento1=amplitud/2; cantidad_valores=tamanho; valores=0:1:cantidad_valores ndt=0; m=sin(frecuencia*valores); y1=desplzanmiento1+amplitud/2*m; %PROGRAMA DE GENERACION DE DANR CON PERIODO VARIABLE DE SECUENCIA OSCILATORIA 1%Definimos los vectores de elementos yuu como datos y t como instantes de muestreo el vector dt contendrá los periodos de muestreo yuu=zeros(1000000:1); t=zeros(100000,1); dt=[100000,1]; tiempo=1; desplzanmiento1=amplitud/2; cantidad_valores=tamanho; valores=0:1:cantidad_valores For i=1:length(y1) ndt=0; Se agotan los valores de la matriz indice ndt=ceil(y1(i)) dt(i)=ndt; t(i)=tiempo; yuu(tiempo+ndt)=1; tiempo=tiempo+ndt; FIN m=sin(frecuencia*valores); y1=desplzanmiento1+amplitud/2*m; 2%Se conforma el bucle for a partir de las operaciones lógicas if y elseif For i=1:length(y1) ndt=ceil(y1(i)) dt(i)=ndt; t(i)=tiempo; yuu(tiempo+ndt)=1; tiempo=tiempo+ndt; end