Nelson Figueredo Sánchez - DSpace@UCLV

Anuncio
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
Descargar