Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

48
Programas de Posgrado en Ingeniería Eléctrica SEPI-ESIME Zacatenco IPN Curso Computación Aplicada a Sistemas Eléctricos de Potencia Tutorial Matlab Agosto 2012

Transcript of Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

Page 1: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

Programas de Posgrado en Ingeniería Eléctrica SEPI-ESIME Zacatenco IPN

Curso Computación Aplicada a Sistemas Eléctricos de Potencia

Tutorial Matlab Agosto 2012

Page 2: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

2  

Contenido1. DescripcióndelprogramaMatlab...............................................................................................................................4

1.1. ElambientedeprogramaciónMatlab..................................................................................................................5

1.1.1. Entornodedesarrollo............................................................................................................................................5

1.1.2. EllenguajeMatlab...................................................................................................................................................5

1.1.3. Gráficas.........................................................................................................................................................................5

1.1.4. InterfacesExternas.................................................................................................................................................5

1.1.5. AyudaparaMatlab..................................................................................................................................................5

2. EXPRESIONES.......................................................................................................................................................................6

2.1. NUMEROS.........................................................................................................................................................................6

2.2. VARIABLES.......................................................................................................................................................................7

2.3. OPERACIONESARITMETICAS.................................................................................................................................8

2.4. FUNCIONES......................................................................................................................................................................9

3. EJEMPLOSDEEXPRESIONES........................................................................................................................................9

4. Usoaniveldecomandos..............................................................................................................................................11

5. Usoaniveldeprogramación......................................................................................................................................12

5.1. CONSTRUCCIÓNfor.................................................................................................................................................13

5.2. 5.1CONSTRUCCIÓNwhile.....................................................................................................................................14

5.3. 5.1CONSTRUCCIÓNif.............................................................................................................................................15

6. SEÑALESPERIODICAS...................................................................................................................................................18

7. SEÑALESEXPONENCIALES.........................................................................................................................................20

8. SEÑALESSINUSOIDALES.............................................................................................................................................22

9. SEÑALESSENOISOIDALESCONAMORTIGUACIÓNEXPONENCIAL.........................................................23

10. GENERACIONDESEÑALESIMPULSO,ESCALONYRAMPA...................................................................24

10.1. SeñalEscalon:.........................................................................................................................................................24

10.2. SeñalImpulso:........................................................................................................................................................26

10.3. SeñalRampa............................................................................................................................................................27

11. Ejercicios:.......................................................................................................................................................................28

12. REPRESENTACIONESDEFOURIERPARALASSEÑALES.........................................................................29

13. CONVOLUCIÓN............................................................................................................................................................35

14. RESPUESTASENESTADOESTABLEAENTRADASESCALÓNUNITARIO........................................37

15. DISTRIBUCIONESDEPROBABILIDAD.............................................................................................................38

ApéndiceA. IniciandoMatlab.........................................................................................................................................43

A.1. ComandosdepropositogeneralenMatlab....................................................................................................43

A.1.1. Manejodecomandosyfunciones..................................................................................................................43

A.1.2. Manejodevariablesydelespaciodetrabajo(workspace)...............................................................43

A.1.3. Trabajandoconarchivosyelsistemaoperativo....................................................................................44

A.1.4. Controldelaventanadecomandos..............................................................................................................44

A.1.5. ComandosparainiciarysalirdeMatlab....................................................................................................44

Page 3: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

3  

A.1.6. Informaciongeneral............................................................................................................................................44

A.1.7. Funciondeoperadoresycaracteresespeciales......................................................................................44

A.1.8. Comandoslogicos.................................................................................................................................................45

A.2. Comandosdelaherramientadesistemasdecontrol(ControlSystemToolbox).........................45

A.2.1. Construcciondemodelos..................................................................................................................................45

A.2.2. Conversiondemodelos......................................................................................................................................46

A.2.3. Reducciondemodelos........................................................................................................................................46

A.2.4. realizaciondemodelos.......................................................................................................................................46

A.2.5. propiedadesdemodelos....................................................................................................................................46

A.2.6. respuestaeneltiempo.......................................................................................................................................47

A.2.7. respuestaalafrecuencia...................................................................................................................................47

A.2.8. lugardelasraices.................................................................................................................................................47

A.2.9. seleccióndeganancia..........................................................................................................................................48

A.3. soluciondeecuaciones............................................................................................................................................48

A.4. Demonstraciones........................................................................................................................................................48

 

Page 4: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

4  

1. DESCRIPCIÓNDELPROGRAMAMATLAB Matlab es un lenguaje de alto funcionamiento para computación técnica, Este integra computación, visualización, y programación, en un entorno fácil de usar donde los problemas y las soluciones son expresados en la más familiar notación matemática. Los usos más familiares de Matlab son:

• Matemática y Computación • Desarrollo de algoritmos • Modelado, simulación y desarrollo de prototipos • Análisis de datos, exploración y visualización • Graficas científicas y de ingeniería • Desarrollo de aplicaciones, incluyendo construcción de interfaces graficas de usuario

Matlab es un sistema interactivo cuyo elemento básico de almacenamiento de información es la matriz, cuya característica fundamental es que no necesita dimensionamiento. Esto le permite resolver varios problemas de computación técnica (especialmente aquellos que tienen formulaciones matriciales y vectoriales) en una fracción de tiempo similar al que se gastaría cuando se escribe un programa en un lenguaje no interactivo como C o FORTRAN

El nombre Matlab simboliza Matriz Laboratorio o Laboratorio de Matrices. Matlab fue originalmente escrito para proveer fácil acceso el software de matrices desarrollado por los proyectos LINPACK y EISPACK, hoy, los mores de Matlab incorporan las bibliotecas LINPACK y BLAS,

Matlab se ha desarrollado sobre un periodo de años con entradas provenientes de muchos usuarios, en los entornos universitarios, Matlab es la herramienta instructiva estándar para cursos avanzados e introductorios en matemáticas, ingeniería y ciencia. En la industria Matlab es la herramienta escogida para investigación de alta productividad, desarrollo y análisis.

Matlab presenta una familia de soluciones a aplicaciones específicas de acoplamiento rápido llamadas ToolBoxes. Los toolboxes son colecciones muy comprensibles de funciones Matlab, o archivos de Matlab (M-files) que extienden el entorno de Matlab para resolver clases particulares de problemas, Algunas áreas en las cuales existen toolboxes disponibles son:

Procesamiento digital de señales Análisis de sistemas eléctricos de potencia Sistemas de control Redes neuronales Lógica difusa Wavelets Simulación en general

Page 5: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

5  

1.1. ELAMBIENTEDEPROGRAMACIÓNMATLAB

El sistema Matlab consiste de cinco partes principales:

1.1.1. ENTORNODEDESARROLLO

Es el conjunto herramientas y módulos que ayudan a usar las funciones y archivos de Matlab. Muchas de esas herramientas son interfaces graficas de usuario. Esto incluye, el escritorio de Matlab, la ventana de comandos, el historial de comandos, un editor y un depurador, navegadores para revisión de la ayuda, el espacio de trabajo o workspace y los archivos.

La biblioteca de funciones matemáticas: esta es una gran colección de algoritmos computacionales que van desde funciones elementales como la suma, la función seno y coseno, y la aritmética de números complejos hasta funciones mucho más sofisticadas como inversas de matrices, eigenvalores de matrices, funciones de Bessel, y transformadas radiadas de Fourier.

1.1.2. ELLENGUAJEMATLAB

1.1.3. GRÁFICAS

Matlab cuenta con módulos extensivos para la visualización de vectores y matrices en forma de graficas, así como para realizar comentarios e impresión de estas gráficas. Matlab incluye funciones de alto nivel para la visualización de datos en dos y tres dimensiones, procesamiento de imágenes, animación, y creación de gráficos de presentación. Matlab también incluye funciones de bajo nivel que permiten personalizar completamente la apariencia de los gráficos así como construir interfaces graficas de usuario para las aplicaciones.

1.1.4. INTERFACESEXTERNAS

Las interfaces externas son un conjunto de bibliotecas que permiten la programación en lenguaje C y FORTRAN de programas que interactúen con Matlab. Estas bibliotecas proveen facilidades para realizar llamadas de rutinas desde Matlab.

1.1.5. AYUDAPARAMATLAB

Matlab provee documentación extensiva, tanto en formato impreso como en línea para ayudar a los usuarios a aprender todas sus características. La ayuda online de Matlab provee información orientada a tareas e información de referencia acerca de todas las características de Matlab.

Para ver la documentación online de Matlab seleccione la opción “Ayuda de Matlab” del menú Ayuda en la barra de menús de Matlab.

Page 6: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

6  

2. EXPRESIONES

Como la mayoría de lenguajes de programación, Matlab soporta la creación de expresiones matemáticas, pero en contraste con los lenguajes de programación, las expresiones en Matlab tienen la capacidad de involucrar matrices y operaciones entre ellas. Las expresiones se construyen con la combinación de varios bloques básicos los cuales son:

Números Variables Operadores Funciones

2.1. NUMEROS

Matlab usa para la representación de los números, notación decimal convencional, con un punto de separación decimal opcional y la precedencia de un signo más (+) o menos (-). La notación científica en Matlab hace uso de la letra e para especificar un factor de escala de una potencia de 10.

Existen tres tipos de números en Matlab:

Números Enteros Números Reales Números complejos

Los números enteros son ingresados a Matlab sin el punto de separación decimal. A continuación se muestra un ejemplo:

num_entero = 10

>> num_entero = 10

Para una descripción más detallada del inicio de Matlab y una lista extensiva de los comandos más comúnmente empleados en este programa revise el apéndice “”Iniciando Matlab” de este documento.

Cuando el valor que se ingresa está acompañado por el punto decimal, éste es almacenado como un número real. Por ejemplo:

num_real = 10.01

>> num_real = 10.0100

Page 7: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

7  

Los números complejos en Matlab son representados en la forma rectangular. De manera que todo numero tienen una parte real y una parte imaginaria. La unidad imaginaria en Matlab se denota con los caracteres “i” o “j”. Por ejemplo.

>>i

Ans=0+1.0000i

Todos los números son almacenados internamente usando el formato long especificado por el estándar de punto flotante de la IEEE. Los números en punto flotante tienen una precisión finita de 16 dígitos decimales significativos y un rango entre 10-308 y 10+308

La manera en que son almacenados estos números por la maquina en que se está usando el sistema Matlab está fuera del alcance de este tutorial, sin embargo puede hacerse referencia a la documentación técnica disponible en el sitio web de Matlab www.matlab.com.

2.2. VARIABLES

Matlab no requiere ninguna declaración de tipo o de dimensión para crear las variables. Cuando Matlab encuentra un nombre nuevo de variable, automáticamente crea la variable y separa la cantidad apropiada de memoria para realizar el almacenamiento de la variable. Si la variable ya existe, Matlab cambia su contenido y si es necesario separa nuevo espacio de memoria para su almacenamiento. Por ejemplo la siguiente expresión

num_estudiantes = 25

Crea una matriz de 1 fila x 1 columna, llamada “num_estudiantes” y almacena el valor de 25 en la única posición existente.

Los nombres de las variables consisten de una letra seguida por cualquier número de letras dígitos ó guiones bajos “_”. Matlab usa únicamente los primeros 31 caracteres del nombre de una variable. Los nombres de las variables en Matlab son sensibles a las mayúsculas y minúsculas, de esta manera una variable llamada num tiene un espacio de almacenamiento diferente a una variable llamada Num.

Existen dos constantes en Matlab las cuales denotan los números reales más pequeño y más grande que se puede usar, dichas constantes son realmin y realmax respectivamente.

Para observar los valores de estas tan solo es necesario escribir sus nombres en la ventana de comandos de la siguiente manera.

>> realmin ans = 2.2251e-308

Page 8: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

8  

Matlab posee tres constantes mas para la representación de cantidades que no son consideradas números como tal. Estas cantidades son:

Infinito negativo Infinito Positivo Cantidades indefinidas.

Y las respectivas constantes son:

Inf -Inf NaN

Las dos primeras variables de la lista son las representaciones IEEE para el infinito positivo y negativo. La cantidad infinito se genera por un desborde en las operaciones o por una división por cero. La variable NaN, es una abreviación de la frase en inglés: “Not a Number”, que significa “No numero”. Esta cantidad es obtenida como resultado de operaciones aritméticas indefinidas tales como 0/0 ó ∞ - ∞.

2.3. OPERACIONESARITMETICAS

La lista de operaciones básicas aritméticas en Matlab incluye se describe en la siguiente lista.

Operación Símbolo Adición +

Substracción - Multiplicación *

División / ó \ Exponenciación ^

Complejo Conjugado ‘

Matlab posee dos operadores de división:

División Derecha / División Izquierda \

El resultado que producen dichos operadores no son los mismos, por ejemplo:

>> div_derecha = 47/3 div_derecha = 15.6667

Page 9: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

9  

>>div_izq = 47\3 div_izq= 0.0638

2.4. FUNCIONES

Matlab provee un gran número de funciones matemáticas elementales, como Valor Absoluto, Raíz Cuadrada, Seno, Coseno, Etc. El control de resultados en Matlab se realiza con seguridad, por ejemplo, al calcular la raíz cuadrada o el logaritmo de un número negativo, no resulta la operación en un error como ocurre en las calculadoras convencionales o sistemas clásicos de cálculos. El resultado de este tipo de operaciones es controlado automáticamente por Matlab y como resultado se obtiene el número complejo que se obtiene al realizar la operación teóricamente. Matlab también provee muchas de las más avanzadas funciones matemáticas, como las funciones de Bessel y funciones Gamma. Para obtener una lista de las funciones elementales en Matlab se debe escribir el siguiente comando:

>> help elfun

Para obtener la lista de las funciones más avanzadas y de las funciones disponibles para matrices se usan los siguientes comandos:

>>help specfun

>> help elmat

Algunas de las funciones, como Raíz Cuadrada, y Seno, son funciones “built in”. Estas funciones son parte del núcleo principal de Matlab de manera que están programadas para funcionar de manera muy eficiente. Por lo tanto el acceso a la implementación computacional de estas funciones no está disponible y su funcionamiento no puede ser modificado. Otras funciones como Gamma o Seno Hiperbólico Inverso, están implementadas con el lenguaje de programación de Matlab en archivos llamados M-Files, a los cuales se puede acceder completamente, por lo tanto es posible ver el código fuente que implementa dichas funciones y también es posible realizar modificaciones sobre el código fuente para de esta manera cambiar la implementación computacional de la función.

3. EJEMPLOSDEEXPRESIONES

Los siguientes comandos son ejemplos de expresiones y sus valores de resultado.

Expresión Descripción rho = (1+sqrt(5))/2 Se crea la variable de nombre rho, a la

cual se asigna el valor del resultado de la

Page 10: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

10  

rho =

1.6180 siguiente expresión matemática:

1 5

2

a = abs(3+4i)

a =

5

Se crea una variable de nombre a, a la cual se asigna el valor absoluto del número complejo 3 + 4 i. Como se puede la función valor absoluto aplicada a un numero complejo da como resultado la Norma de dicho numero

z = sqrt(besselk(4/3,rho-i))

z =

0.3730+ 0.3214i

Calculo de otra variable haciendo uso de las funciones avanzadas de Bessel

gran_num = exp(log(realmax))

gran_num =

1.7977e+308

Se calcula la siguiente expresión, lo cual genera un número muy grande como resultado.

muy_grande = pi*gran_num

muy_grande =

Inf

El número anterior, multiplicado por el número π da como resultado un número que es mayor que la constante realmax lo cual genera un desborde y la cantidad resultante es Infinito.

El objeto básico usado en Matlab es una matriz numérica con la posibilidad de almacenar números complejos. Los datos encontrados en el estudio de señales y sistemas son siempre, muy bien representados en forma de matrices. En esta sección se usará Matlab para la generación de señales elementales como lo son las señales exponenciales, senoidales, etc.

El ToolBox de procesamiento de señales de Matlab posee una larga variedad de funciones para la generación de señales, estas señales requieren de una representación vectorial de la variable tiempo, de manera continua o discreta. Para realizar una simulación de un intervalo continuo, se usa un vector de valores discretos con un intervalo de muestreo muy pequeño.

El siguiente comando genera un vector llamado t de valores que representan la variable tiempo, con un intervalo de muestreo de 1ms entre 0 y 1seg.

t = 0:0.001:1;

Para generar un vector llamado n de valores que representan la variable tiempo para una señal discreta en el intervalo de 0 a 1000, se puede usar el siguiente comando.

n = 0:1000;

Después de creado el vector que representa la variable tiempo, es posible iniciar el desarrollo de alguna señal de interés.

Page 11: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

11  

En Matlab una señal discreta en el tiempo se representa exactamente, porque los valores de la señal son representados como los elementos de un vector. Sin embargo las señales de tiempo continuo en Matlab son tan solo aproximaciones. La aproximación consiste de un vector cuyos elementos son muestras de la verdadera señal de tiempo continuo. Cuando se usa esta técnica para la representación de señales continuas es importante escoger el intervalo de muestreo lo suficientemente pequeño para asegurar que las muestras capturan todos los detalles de la señal.

4. USOANIVELDECOMANDOSLa primera forma de interactuar con Matlab es a través de la línea de comandos. Puede ejecutarse un comando si este escrito después del símbolo >> y se presiona la tecla Enter, ya que Matlab se basa en el álgebra de matrices como ejemplo crearemos una matriz. Estas pueden estar formadas por un sólo elemento (escalar), por una fila o una columna (vector) o por una serie de filas y columnas (matriz propiamente dicha).

>>A=1

define A como un escalar de valor 1. Al definir A automáticamente Matlab despliega en pantalla su valor.

A = 1 Para no desplegar el valor de la variable creada, debe agregarse punto y coma (;) al final del comando. Luego de crear una variable, puede desplegarse su valor en pantalla escribiendo la variable después del prompt (>>).

>>A

Se pueden redefinir variables, por ejemplo: >>A=[1 2 3]

define A como un vector de tres elementos, A(1)=1, A(2)=2 y A(3)=3. Estos elementos deben separase con espacios en blanco o comas (,).

Para definir una matriz se deben separar las filas con punto y coma (;) o con retorno (Enter).

>>A=[1 2 3; 4 5 6] o >>A=[1 2 3 4 5 6]

Page 12: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

12  

ambos comandos producen el mismo efecto:

A = 1 2 3 4 5 6

El álgebra de matrices es posible mediante los operadores: + suma - resta * multiplicación ^ potencia ' transpuesta \ división izquierda / división derecha >>A=[1 2 3;4 5 6]; B=[6 5 4; 3 2 1]; define las matrices A y B. Para sumarlas se escribe la operación: >>A+B El resultado de la operación es por defecto almacenado en la variable ans e inmediatamente desplegado en pantalla:

ans = 7 7 7 7 7 7

Para almacenar la suma de A y B en la variable C:

>>C=A+B C = 7 7 7 7 7 7

En el Apéndice A se presentan los comandos de Matlab donde por ejemplo se encuentran numerosas operaciones de manipulación de matrices.

5. USOANIVELDEPROGRAMACIÓNProgramar en Matlab es usar una serie de comandos que permitan realizar una tarea o función específica. Estos pueden ser escritos uno por uno a través de la línea de comandos: >>A=[1 2 3;4 5 6;7 8 9] A = 1 2 3 4 5 6 7 8 9

Page 13: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

13  

>>A' ans = 1 4 7 2 5 8 3 6 9 El primer comando A=[1 2 3;4 5 6;7 8 9] define la matriz A y el siguiente comando A' calcula y despliega en pantalla la transpuesta de A. Es posible hacer una colección de comandos y agruparlos en un archivo de tipo texto y de extensión m (.m) llamado archivo-m. Estos archivos pueden ser scripts o funciones. El script es un archivo-m que contiene una serie de comandos que se ejecutarán al ejecutar dicho archivo en Matlab. La función, es un archivo-m que permite la entrada y salida de argumentos además de la ejecución de comandos.

El sistema MATLAB incluye las instrucciones típicas de un lenguaje estructurado:

for, while e if.

5.1. CONSTRUCCIÓNFOR

Con la instrucción de ciclo for se repite un conjunto de sentencias un número finito de veces. Su esquema general es:

for variable = expresión, sentencias, end

o, lo que es lo mismo:

for variable = expresión sentencias end

En cada iteración MATLAB guarda una columna de la expresión en la variable, ejecutándose las sentencias hasta la siguiente sentencia end.

Ejemplo. Para calcular un vector cuyas componentes son los cinco primeros números naturales bastaría con escribir el siguiente ciclo en la línea de órdenes:

>> for i=1:5, v(i)=i, end v = 1 v = 1 2 v = 1 2 3

Page 14: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

14  

v = 1 2 3 4 v = 1 2 3 4 5

De esta forma vemos cómo se va construyendo el vector en cada iteración. Si sólo se desea saber el resultado final añadimos un punto y coma al final de la construcción del ciclo:

>> for i=1:5, v(i)=i; end, v >> v=1 2 3 4 5

5.2. 5.1CONSTRUCCIÓNWHILE

Una opción equivalente para la instrucción de ciclo for es la instrucción de ciclo while. El ciclo while repite una secuencia de comandos por un número de veces hasta que alguna condición definida de antemano se complete. Esta instrucción puede hacer al código de un programa más eficiente. Por ejemplo se puede ejecutar una serie de instrucciones por un determinado número de veces en un ciclo for y se puede limitar esos cálculos al incluir while que detiene la ejecución del programa en cuanto se cumple alguna condición preestablecida.

Su esquema general es:

while (condicion) % MATLAB instrucciones 1 % MATLAB instrucciones 2 % Mas intrucciones para ejecutar repetidamente hasta que la expresión while no sea verdadera end

de donde condición es la expresión lógica que puede ser cierta o falsa, definida por el usuario. Por ejemplo, considere el siguiente ciclo while:

n = 1 while n < 3 n = n+1 end

Al ejecutar este código se crea la siguiente salida:

n = 1 n = 2

Page 15: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

15  

n = 3

Nota para este ejemplo: Los comandos de Matlab mostrados aquí dentro del ciclo while se encuentran indentados con respecto a las líneas while y end. Esto no es necesariamente requerido por Matlab, sin embargo es una buena práctica del programador para hacer el código mucho más legible.

5.3. 5.1CONSTRUCCIÓNIF

La construcción if ejecuta un conjunto de sentencias si una condición se cumple. Su sintaxis general es:

if condición sentencias end

También existe la opción de que se ejecute otro conjunto de sentencias si la condición no se cumple:

if condición sentencias else sentencias end

o si se emplea la instrucción elseif se puede elegir entre más de dos opciones de código

if condicion1 sentencias1 elseif condicion2 sentencias2 end

De lo anterior si la condicion1 se evalúa como falsa y la condicion2 es verdadera, Matlab ejecuta la instrucción o instrucciones contenidas en sentencias2. Una condición tiene un valor verdadero o no cero. La definición de condiciones incluye normalmente el uso de operadores relacionales tales como (contador<limite) o isreal(A). Las condiciones más simples pueden ser combinaciones de operadores lógicos tales como &, |, ~ para obtener condiciones compuestas tales como: (contador<limite_contador)&((altura-sesgo)>=0).

Nota: la instrucción else if, con un espacio entre el else y el if difiere de la instrucción elseif sin espacio. La primera forma introduce un nuevo ciclo if anidado que debe tener un end para concluir. La segunda forma es usada en una secuencia lineal de instrucciones condicionales que requieren un solo end al final.

Los dos segmentos de código que se muestran a continuación producen exactamente los mismos resultados en Matlab. Solo uno de las definiciones para x se ejecuta dependiendo de los valores de las tres expresiones lógicas A, B o C.

Page 16: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

16  

Ejemplos

if A if A x = a x = a else elseif B if B x = b x = b elseif C else x = c if C else x = c x = d else end x = d end end end

En seguida se muestra un ejemplo de codigo con el uso de instrucciones if, else, y elseif.

for m = 1:k for n = 1:k if m == n a(m,n) = 2; elseif abs(m-n) == 2 a(m,n) = 1; else a(m,n) = 0; end end end

Para k=5 se tiene una matriz

a = 2 0 1 0 0 0 2 0 1 0 1 0 2 0 1 0 1 0 2 0 0 0 1 0 2

Lo más práctico cuando se programa en Matlab es editar ficheros.m.

Estos ficheros son ficheros de texto que contienen órdenes de Matlab. Para utilizarlos se siguen los siguientes pasos:

1. Escribimos el fichero en el editor de Matlab o en cualquier editor ASCII. 2. Lo guardamos con extensión .m. 3. Ejecutarlo escribiendo en la línea de órdenes el nombre del fichero 4. Para crear un archivo-m se usa cualquier editor de textos, asegurándose de almacenar

dicho archivo con la extensión (.m). Matlab incluye un editor de archivos-m que se

Page 17: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

17  

puede accesar mediante la opción file del menú principal. Por ejemplo, el siguiente archivo ejemplo.m usa el comando for para crear el vector x.

% Ejemplo de un archivo-m

% Creación del vector x usando el comando for n=5; for i=1:n x(i)=i^2; end x% Fin del archivo-m

Este ejemplo es un archivo .m tipo script. El símbolo % permite hacer comentarios. Para ejecutarlo, en la línea de comandos se debe escribir el nombre del archivo:

>>ejemplo x = 1 4 9 16 25 Para crear funciones, debe crearse el respectivo archivo-m, llamado como se desea llamar a la función. Por ejemplo, para crear una función llamada promedio debe guardarse en un archivo llamado promedio.m. Este archivo debe incluir la declaración de la función mediante function. Esta función calcula el promedio de los elementos de un vector y grafica dicho vector mediante el comando plot. % Calcula el promedio de los elementos de un vector y dibuja dicho vector % Sintaxis: promedio(x) donde x es el vector a promediar function p = promedio(x) n=length(x); p=0; for i=1:n p=p+x(i); end p=p/n; plot(x); Para ejecutar la función, se hace el llamado en la línea de comandos incluyendo el parámetro. La función promedio usa por parámetro un vector. Este vector debe ser definido previamente. >>A=[1 2 4 3 7 5 6 1 2 0 8 5]; >>promedio(A) ans = 3.6667 Matlab despliega las imágenes en una ventana de figuras. Al observar el contenido de dicha ventana luego de ejecutar la función promedio, se tiene:

Page 18: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

18  

Esta imagen es el resultado del comando plot(x) al ejecutar la función promedio. Matlab posee un conjunto de archivos-m incorporados (built-in). Puede agregársele archivos-m definidos por el usuario almacenando los mismos en el directorio principal de Matlab. Los comentarios incluidos en estos scripts y funciones se visualizan al usar el comando help seguido del nombre del archivo. >>help promedio calcula el promedio de los elementos de un vector y dibuja dicho vector Sintaxis: promedio(x) donde x es el vector a promediar. Para ver el contenido de un archivo-m se usa el comando type seguido del nombre del archivo.

6. SEÑALESPERIODICAS

La generación de señales periódicas tales como ondas cuadradas y triangulares es una actividad muy fácil de realizar en Matlab. Consideremos primero la generación de una onda cuadrada de amplitud A, frecuencia fundamental w (medida en radianes por segundo) y ciclo útil rho. Recordemos que el ciclo útil es la fracción de cada periodo en donde la señal es positiva.

Para generar dicha señal se puede usar el siguiente conjunto de comandos:

A = 1; w = 10 * pi; rho = 0.5; t = 0:0.001:1; sq = A*square(w*t+rho); plot(t,sq);

El resultado se puede observar en la siguiente gráfica:

0 2 4 6 8 10 120

1

2

3

4

5

6

7

8

Page 19: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

19  

En la segunda línea, pi es una función interna de Matlab que calcula el número más cercano a la constante PI en formato de coma flotante. El último comando es usado para ver la señal generada. El comando plot dibuja líneas conectando los valores sucesivos de la señal y así da la apariencia de una señal en tiempo continuo.

Consideremos ahora la generación de una onda triangular de amplitud A, frecuencia fundamental w y ancho Wdt. El periodo de la onda triangular será T con el máximo valor de la señal ocurriendo en t = WT . El comando básico para generar esta señal es:

A * sawtooth(w * t + Wdt)

El listado complete de comandos sería:

A = 1; w = 10 * pi; Wdt = 0.5; t = 0:0.001:1; tri = A*sawtooth(w * t + Wdt); plot(t,tri);

0 0.2 0.4 0.6 0.8 1-1.5

-1

-0.5

0

0.5

1

1.5

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-1.5

-1

-0.5

0

0.5

1

1.5

Page 20: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

20  

El resultado se puede visualizar en la siguiente gráfica.

Como se menciono anteriormente, una señal generada en Matlab es inherentemente de naturaleza discreta. Para visualizar una señal en tiempo discreto se puede hacer uso del comando stem. Específicamente stem( n , x ), bosqueja los datos contenidos en el vector x como una señal de tiempo discreto con los valores de tiempo definidos por el vector n. Los vectores n y x deben tener dimensiones compatibles, es decir deben tener el mismo número de elementos. El siguiente ejemplo genera una señal cuadrada en tiempo discreto de amplitud igual a la unidad, ciclo útil igual a 50% y una frecuencia angular igual a /4:

A = 1; omega = pi / 4; rho = 0.5; n = -10:10; x = A*square(omega*n +rho); stem(n,x);

El resultado se puede ver en la siguiente gráfica

7. SEÑALESEXPONENCIALES

Las señales exponenciales se pueden clasificar según su comportamiento en decrecientes y crecientes. El comando en Matlab para generar una señal exponencial decreciente es:

B * exp(-a*t);

Para generar una señal exponencial creciente se usa el comando:

B * exp( a * t);

En ambos casos el parámetro a es positivo. El siguiente ejemplo muestra la generación de una señal exponencial decreciente:

-10 -8 -6 -4 -2 0 2 4 6 8 10-1.5

-1

-0.5

0

0.5

1

1.5

Page 21: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

21  

B = 5; a = 6; t = 0:0.001:1; x = B * exp( -a * t ); % señal exponencial decreciente. plot( t, x ); Siendo el resultado como sigue:

Para la generación de una señal exponencial creciente se puede usar el siguiente ejemplo:

B = 1; a = 5; t = 0:0.001:1; x = B * exp( a * t ); plot( t, x ) ;

Existen casos particulares en los que la base de la operación de exponenciación no es el número irracional e, puede ser cualquier otro número. Para estos casos se usa una notación diferente la cual está basada en la utilización del símbolo ^. Observando el ejemplo que sigue se nota que r es un número mientras que n es un vector, por lo tanto se usa una combinación del símbolo exponenciación con el carácter “.” Lo cual significa que a cada valor del vector le será aplicada la función.

El siguiente ejemplo genera la señal nx n Br

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

0.5

1

1.5

2

2.5

3

3.5

4

4.5

5

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

50

100

150

Page 22: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

22  

B = 1; r = 0.85; n = -10:10; x = B * r .^ n; stem( n , x );

8. SEÑALESSINUSOIDALES.

Matlab también contiene funciones trigonométricas que pueden ser usadas para generar señales senosoidales. Una señal coseno de amplitud A, frecuencia w0 (medida en radianes por segundo) y ángulo de fase phi (en radianes) se obtiene usando el comando:

A * cos (w0 * t + phi);

Alternativamente se puede usar la función seno para generar una señal senosoidal usando el siguiente comando:

A * sin (w0 * t + phi );

En seguida se muestran ejemplos para cada uno de las señales respectivamente:

A = 4; w0= 20 * pi; phi = pi / 6; t = 0:0.001:1; coseno = A * cos( w0 * t + phi); plot(t,coseno) ;

-10 -8 -6 -4 -2 0 2 4 6 8 100

1

2

3

4

5

6

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-4

-3

-2

-1

0

1

2

3

4

Page 23: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

23  

A = 0.5; w0 = 20 * pi; phi = pi / 2; t = 0:0.001:1; seno = A * sin( w0 * t + phi); plot(t,seno);

9. SEÑALESSENOISOIDALESCONAMORTIGUACIÓNEXPONENCIAL.

En todos los comandos de generación de señales descritos anteriormente, se ha generado la amplitud deseada de las señales, realizando una multiplicación por un escalar A. Esta operación se describe usando el símbolo asterisco “*”. Supongamos que se desea multiplicar una señal senosoidal por una señal exponencial para producir como resultado una señal con amortiguación exponencial. La siguiente ecuación describe mejor el supuesto caso:

0( ) sin( )exp( )x t A t at

Debido a que tanto la componente senoidal de la señal como la exponencial son vectores, el procedimiento para la generación de la señal final requiere de una multiplicación de dos vectores elemento por elemento. En Matlab este tipo de multiplicación se representa usando el símbolo punto (.) seguido por el símbolo asterisco (*). Así el comando para generar la ecuación anterior sería;

A * sin( w0 * t + phi) .* exp ( -a * t);

Y un ejemplo completo sería:

A = 60; w0 = 20 * pi; phi = 0; a = 6; expsen = A * sin( w0 * t + phi) .* exp ( -a * t); plot(t,expsen); Dando como resultado la siguiente gráfica:

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-0.5

-0.4

-0.3

-0.2

-0.1

0

0.1

0.2

0.3

0.4

0.5

Page 24: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

24  

La versión discreta de la misma señal se puede obtener haciendo uso de los comandos mostrados anteriormente de la siguiente manera:

A = 10; a = -0.1; w0 = 2 * pi / 12; phi = 0; n = -10 : 10; x = A * sin( w0 * n + phi); y = exp( a * n); z = x .* y; stem(n,z)

10. GENERACIONDESEÑALESIMPULSO,ESCALONYRAMPA.

En el lenguaje de Matlab, el comando ones(M,N) genera una matriz de unos de tamaño M x N, y el comando zeros(M,N) es una matriz de ceros del mismo tamaño. Se puede hacer uso de estas dos matrices para generar dos señales comúnmente usadas.

10.1. SEÑALESCALON:

Una señal escalón de amplitud uno, puede ser generada con el siguiente comando.

U = [zeros(1, 10), ones(1, 11)];

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-40

-30

-20

-10

0

10

20

30

40

50

60

-10 -8 -6 -4 -2 0 2 4 6 8 10-15

-10

-5

0

5

10

15

20

25

Page 25: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

25  

Se puede graficar de dos formas para visualizar la señal de forma continua con el comando plot, mientras que la versión discreta se grafica con el comando stem

Los comandos y los resultados para ambos tipos de señal se muestran a continuación:

u=[zeros(1,10),ones(1,11); t= -1:0.1:1; plot(t,u) u=[zeros(1,10), ones(1,11)]; n=-10:10; stem(n,u)

De los comandos anteriores es de notar que para poder usar las funciones plot() y stem(), es requisito que los vectores (t y u) ó (n y u) tengan iguales dimensiones. Por esta razón el vector u se forma como una composición de diez ceros y 11 unos, debido a que los arreglos t y n, tienen dimensión 21 dado que incluyen un elemento central el cual es el número cero. Para probar este hecho, se puede hacer uso de otra función de Matlab llamada size() que devuelve como resultado un vector con las dimensiones de la matriz que se le pasa como parámetro así:

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-0.5

0

0.5

1

1.5

-10 -8 -6 -4 -2 0 2 4 6 8 10-0.5

0

0.5

1

1.5

Page 26: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

26  

>> size(n)

ans =

1 21

>> size(u)

ans =

1 21

>> size(t)

ans =

1 21

10.2. SEÑALIMPULSO:

La versión discreta de la señal impulso se puede también generar con ayuda de las funciones zeros() y ones(), realizando una composición como sigue:

delta = [ zeros( 1 ,10 ), 1 , zeros( 1 ,10 ) ]; n = -10:10; stem(n,delta);

Una versión continua podría evidentemente generarse usando la misma técnica que se usó en el apartado anterior, sin embargo es necesario aumentar el número de muestras a fin de maximizar la pendiente de la señal, en seguida se verán dos ejemplos con diferentes número de muestras en el mismo intervalo de tiempo, como se puede ver la correspondencia entre las dimensiones de los vectores se mantienen así que al aumentar el tamaño de muestras del vector que representa el tiempo es necesario aumentar el valor de ceros y de unos con el cual se está creando la señal.

En el ejemplo se puede ver que a mayor numero de muestras, la pendiente de la señal se hace mayor y la aproximación a la señal verdadera es más cercana.

delta=[zeros(1,10),1,zeros(1,10)]; t=-1:0.1:1; plot(t,delta)

-10 -8 -6 -4 -2 0 2 4 6 8 10-0.5

0

0.5

1

1.5

Page 27: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

27  

delta = [ zeros( 1 , 1000 ), 1 , zeros( 1 , 1000 ) ]; t=-1:0.001:1; plot(t,delta)

10.3. SEÑALRAMPA

Para generar la señal rampa, tan solo es necesario recordar que esta función puede ser creada, como la composición de una recta Y(x) = x a partir de cero y de la recta Y(x) = 0 para valores de x menores de cero, así la versión discreta y continua se muestran a continuación:

n1=0:30; rampa1=n1; rampa = [zeros(1,30),rampa1]; n=-30:30; stem(n,rampa)

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 10

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-0.5

0

0.5

1

1.5

Page 28: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

28  

t1=0:0.1:10; rampa1=t1; rampa=[zeros(1,101),rampa1]; t2=-10:0.1:0; t=[t2,t1]; plot(t,rampa)

11. EJERCICIOS:

1. Desarrollar un conjunto de comandos Matlab para aproximar las siguientes señales periódicas en tiempo continuo, dibujando 5 ciclos de cada una:

a. Onda Cuadrada, de amplitud 5 Volts, frecuencia fundamental 20 Hz y amplitud de ciclo del 60%.

b. Señal diente de sierra, amplitud 5 Volts y frecuencia fundamental 20Hz

2. La solución a una ecuación diferencial está dada por la siguiente expresión:

0.5( ) 10 5t tx t e e

-30 -20 -10 0 10 20 300

5

10

15

20

25

30

-10 -8 -6 -4 -2 0 2 4 6 8 100

1

2

3

4

5

6

7

8

9

10

Page 29: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

29  

Usando Matlab, grafique la solución de la ecuación en el siguiente intervalo [0,5] con una frecuencia de muestreo de 100 Hz

3. Repita el problema número dos para la siguiente expresión:

0.5( ) 10 5t tx t e e

4. Una señal senoidal con amortiguación exponencial está definida por la siguiente expresión:

( ) 20*sin(2 *1000 )exp( )3

x t t at

Donde el parámetro a es variable y toma valores sobre el siguiente conjunto: 500, 750, 1000. Usando Matlab, investigar el efecto de variar dicho parámetro en la señal en el intervalo [-2,2].

12. REPRESENTACIONESDEFOURIERPARALASSEÑALES

Existen cuatro representaciones distintas de Fourier, cada una aplicable a diferentes tipos de señales. Estas cuatro clases están definidas por las propiedades de periodicidad de una señal y si el tiempo es de tipo continuo o discreto. Las señales periódicas tienen representación en series de Fourier. La Serie de Fourier (FS) aplica a señales periódicas de tiempo continuo mientras que la Serie Discreta de Fourier (DTFS) aplica a señales periódicas de tiempo discreto. Las señales no periódicas tienen representación en forma de transformada. Si la señal es continua en el tiempo y no periódica, la representación es llamada Transformada de Fourier (FT). Si la señal es discreta en el tiempo y no periódica entonces la representación usada es la transformada de Fourier en tiempo discreto (DTFT). La siguiente tabla ilustra la relación entre las propiedades de tiempo de una señal y la representación de Fourier adecuada.

Tiempo Periódicas No periódicas

Continuas Series de Fourier

( FS )

Transformada de Fourier

( FT )

Page 30: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

30  

Discretas

Series discretas de Fourier

( DTFS )

Transformada discreta de Fourier

( DTFT)

La siguiente tabla muestra las relaciones matemáticas utilizadas para calcular las representaciones de Fourier.

Tipo de Señales

Periódicas No periódicas

Continuas

Series de Fourier

0

0

( )

( )

1( )

jk t

k

jk t

T

x t X k e

X k x t e dtT

de donde x(t) tiene un periodo T

y 0

2

T

Transformada de Fourier

1( ) ( )

2

( ) ( )

j t

j t

x t X j e d

X j x t e dt

Discretas

Series discretas de Fourier

0

01

jk n

k N

jk n

n N

x n X k e

X k x n eN

x[n] y X[k] tienen periodo N y

0

2

N

Transformada discreta de Fourier

1[ ] ( )

2

( ) [ ]

j j n

j j n

n

x n X e e d

X e x n e

de

donde ( )jX e tiene un periodo de 2

La Transformada Discreta de Fourier (DTFS)

La DTFS es la única representación de Fourier que es de valor discreto tanto en el tiempo como en la frecuencia y de esta manera implícitamente conveniente para una implementación computacional en Matlab. Las expresiones utilizadas para esta representación son fácilmente implementables en Matlab como archivos. Sin embargo los comandos built-in de Matlab fft y ifft pueden también ser utilizados para evaluar la DTFS. Dado un vector llamado x de longitud N representando un periodo de una señal periódica x[n]. El comando:

>> X=fft(x)/N

Page 31: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

31  

Produce un vector llamado X de longitud N que contiene los coeficientes de la DTFS. Matlab asume que el periodo evaluado en la señal es desde 0 hasta N-1, de manera que el primer elemento de x y X corresponden a x[0] y X[0] respectivamente, mientras que los últimos elementos corresponden a x[N-1] y X[N-1]. Nótese que la división por N es completamente necesaria, debido a que el comando fft evalúa la siguiente expresión sin realizar la división por N.

01 jk n

n N

X k x n eN

Similarmente, dados los coeficientes de una DTFS en un vector llamado X el comando:

>>x=ifft(X)*N

Produce un vector x que representa un periodo de la señal en el tiempo. Nótese que el comando ifft debe estar multiplicado por N para evaluar la siguiente ecuación.

0jk n

k N

x n X k e

Los comandos fft e ifft son computados usando un algoritmo rápido o numéricamente eficiente, conocido como “Fast Fourier Transform”.

Considere el siguiente ejemplo:

1 3[ ] 1 sin

12 8x n n

Determinar los coeficientes DTFS para la siguiente señal:

La señal tiene un periodo de 24, de manera que tan solo se hace necesario definir un periodo y evaluar sobre este periodo la DTFS. Los comandos usados para realizar dicho cálculo son:

>> n = 0:23; >> x = ones(1,24) + sin( (n * pi / 12) + (3 * pi / 8 ) ); >> X = fft(x)/24;

El resultado teórico del ejemplo es el siguiente:

Page 32: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

32  

(3 /8)

(3 /8)

12

1 0[ ]

12

0

j

j

ek

j

kx n k

ek

j

otro caso

El resultado obtenido mediante los comandos presentados anteriormente es:

X = Columns 1 through 5 1.0000 0.4619 - 0.1913i 0.0000 + 0.0000i -0.0000 + 0.0000i -0.0000 + 0.0000i Columns 6 through 10 -0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 + 0.0000i -0.0000 - 0.0000i Columns 11 through 15 -0.0000 - 0.0000i -0.0000 - 0.0000i 0 -0.0000 + 0.0000i -0.0000 + 0.0000i Columns 16 through 20 -0.0000 + 0.0000i 0.0000 - 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i -0.0000 + 0.0000i Columns 21 through 24 -0.0000 - 0.0000i -0.0000 - 0.0000i 0.0000 - 0.0000i 0.4619 + 0.1913i

Como se puede ver, tres componentes tienen valor diferente de cero.

Un uso común de la transformada de Fourier, es encontrar las componentes frecuenciales de una señal en el dominio del tiempo que está contaminada con ruido. Considérese dos señales senoidales que tienen frecuencias fundamentales de 50Hz y 120Hz, luego considérese estas señales contaminadas con ruido aleatorio. Los comandos para generar una señal con las especificaciones anteriormente mostradas son los siguientes:

t = 0:0.001:0.6; x = sin ( 2 * pi * 50 * t ) + sin ( 2 * pi * 120 * t ); y = x + 2 * randn ( size ( t ) ); plot( 1000 * t (1:50), y (1:50) )

Page 33: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

33  

Es de gran dificultad identificar las componentes de frecuencia mirando la señal original. Sin embargo al realizar la conversión de esta señal al dominio de la frecuencia, la identificación de estas componentes se hace más sencilla. La conversión de la señal al dominio de la frecuencia se hace calculando la Transformada Rápida de Fourier, tomando para el cálculo los primeros 512 puntos de la señal. El espectro de potencia es una medida de la potencia a varias frecuencias, y este puede ser calculado con los siguientes comandos.

Pyy = y .* conj (y) / 512;

Para realizar la gráfica se puede tener en cuenta que la información que aparece en el arreglo Pyy es por propiedades de la transformada, simétrica con respecto a la frecuencia media, es decir que si tenemos 512 puntos de muestra, la señal que esta almacenada en el arreglo es simétrica con respecto a la muestra 256, por lo tanto dibujar las ultimas 256 muestras del arreglo será completamente innecesario. De manera que para visualizar el espectro de potencia los comandos deben ser como se muestran a continuación:

f = 1000*(0:256)/512; plot(f,Pyy(1:257))

Para ver todas las muestras y entender la característica de simetría descrita anteriormente se pueden utilizar los siguientes comandos:

0 10 20 30 40 50-5

-4

-3

-2

-1

0

1

2

3

4

5

0 100 200 300 400 5000

0.01

0.02

0.03

0.04

0.05

0.06

0.07

0.08

0.09

Page 34: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

34  

f = 1000*(0:511)/512; plot(f,Pyy)

Del espectro de potencia se puede visualizar que las componentes con mayor frecuencia se encuentran a los 50 y 120 Hz respectivamente. Comprobando así que las señales de las cuales se formo la señal contaminada con ruido tienen estas frecuencias fundamentales.

Los computadores digitales son ideales para la implementación de descripciones en el dominio del tiempo de sistemas discretos, porque naturalmente el computador almacena y manipula secuencias de números. Por ejemplo, la suma de convolución describe la relación entre la entrada y la salida de un sistema de tiempo discreto, y es fácilmente evaluada en un computador como la suma de productos de números. En contraste, los sistemas de tiempo continuo, son descritos en términos de funciones continuas, las cuales no son fácilmente representadas o manipuladas en un computador digital. Por ejemplo, la salida de un sistema en tiempo continúo esta descrita por la integral de convolución. La evaluación de la integral de convolución con un computador requiere el uso de integración numérica o de técnicas de manipulación simbólica, ambas fuera del alcance de este tutorial. Por lo tanto la exploración con Matlab se centra en el estudio de sistemas en tiempo discreto.

Una segunda limitación en la exploración de señales y sistemas es la que se impone por la memoria finita o por la capacidad de almacenamiento finita que es inherente en un computador digital. Por lo tanto se manejaran únicamente señales de duración finita. Por ejemplo si la respuesta al impulso de un sistema tiene duración infinita y la entrada es de duración infinita, entonces la suma de convolución equivale a la suma de un infinito número de productos. Aun si fuese posible almacenar señales de longitud infinita en el computador, la suma infinita podría no ser calculada en una cantidad finita de tiempo. Debido a esta limitación, el comportamiento de un sistema en respuesta una señal de longitud infinita podría a menudo ser inferida de su respuesta a una señal de longitud finita que presente ciertas particularidades.

0 200 400 600 800 10000

0.02

0.04

0.06

0.08

0.1

0.12

Page 35: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

35  

13. CONVOLUCIÓN

Es de recordar que la suma convolución expresa la salida de un sistema de tiempo discreto en términos de la entrada y la respuesta al impulso del sistema. Matlab tiene una función llamada conv que evalúa la convolución de señales de tiempo discreto de duración finita. Si x y h son vectores representado señales, entonces el siguiente comando de Matlab genera un vector llamado y representando la convolución de la señales representadas por x y h.

y = conv(x, h)

El número de elementos en el vector y es dado por la suma del número de elementos en x y h menos uno. Nótese que se debe conocer el tiempo de origen de las señales representadas por x y h con el fin de determinar el tiempo de origen de la convolución. En general, si el

primer elemento de x corresponde al tiempo n=kx y el primer elemento de h corresponde a

n=kh, entonces el primer elemento de y corresponde al tiempo n= kx+kh.

Para ilustrar este hecho, considere el siguiente ejemplo:

Asuma el sistema LTI el cual tiene la siguiente respuesta al impulso.

1 1

2 0

0

n

h n n

otro caso

Determine la salida de este sistema en respuesta a la siguiente entrada.

2 2

3 1

2 2

0

n

nx n

n

otro caso

Aquí el primer elemento diferente de cero en la respuesta al impulso del sistema ocurre en el tiempo n = -1 y el primer elemento de la entrada x ocurre en el tiempo n = 0. La anterior convolución se puede calcular en Matlab de la siguiente manera:

>> h = [1, 2, 1]; >> x = [2, 3, -2]; >> y = conv(x,h) y = 2 7 6 -1 -2 >> n = -1:3; >> stem(n,y);

Page 36: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

36  

El primer elemento en el vector y corresponde al tiempo n = 0 + (-1 ) = -1.

En el siguiente ejemplo, se determinará la salida de un sistema con respuesta al impulso dada por:

[ ] [ ] [ 10]h n u n u n

Y entrada

[ ] [ 2] [ 7]x n u n u n

Se puede en este caso usar el comando conv para calcular la respuesta del sistema. En este caso, la respuesta al impulso consiste de diez unos consecutivos comenzando en el tiempo n = 0, y la entrada consiste de cinco unos consecutivos comenzando en el tiempo n = 2. Estas señales pueden ser definidas en Matlab usando los siguientes comandos:

>> h = ones(1,10); >> x = ones(1,5);

La salida se obtiene y es graficada usando los siguientes comandos:

>> n = 2:15; >> y = conv(x, h); >> stem(n, y);

-1 -0.5 0 0.5 1 1.5 2 2.5 3-2

-1

0

1

2

3

4

5

6

7

2 4 6 8 10 12 14 160

0.5

1

1.5

2

2.5

3

3.5

4

4.5

5

Page 37: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

37  

En este ejemplo, el primer elemento del vector y corresponde al tiempo n = 2 + 0 como se muestra en la siguiente figura.

14. RESPUESTAS EN ESTADO ESTABLE A ENTRADAS ESCALÓNUNITARIO

La respuesta escalón, es la salida de un sistema en respuesta a una señal de entrada escalón unitario. Esta respuesta es infinita en general. Sin embargo, es posible evaluar los primeros p valores de la respuesta escalón usando la función conv.

Si la respuesta al impulso es cero para los tiempos n<kh, entonces el cálculo se realiza convolucionando los primeros p valores de h[n] con una señal paso de longitud p. Es decir se construye un vector h’ con los primeros p valores diferentes de cero de la respuesta al impulso h, luego se define una señal paso de duración p con el siguiente comando u=ones(1,p), y entonces se evalúa la siguiente convolución s = conv(u,h). El primer

elemento de s corresponde a el tiempo kh y los primeros p valores de s representan los primeros p valores de la respuesta paso. Los valores sobrantes de s no corresponden a la respuesta paso.

Por ejemplo se podría determinar los 50 primeros valores de la respuesta paso del sistema con la siguiente respuesta al impulso:

[ ] ( ) [ ]nh n a u n

Con a = 0.9 los comandos de Matlab serían:

>> h = (-0.9).^[0:49]; >> u = ones(1,50); >> s= conv(u, h);

El vector s tienen 99 valores, los primeros 50 corresponden a la respuesta impulso y es mostrada en la siguiente figura usando el siguiente comando:

>>stem([0:49],s(1:50));

0 10 20 30 40 50

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Page 38: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

38  

En este ultimo comando se pasan a la función stem dos parámetros diferentes a los mostrados en los anteriores ejemplos, el primero es un vector anónimo de 50 posiciones desde 0 hasta 49 que representa el tiempo, se dice que el vector es anónimo puesto que no se le ha definido algún nombre. El segundo parámetro es el vector s que se había calculado anteriormente, pero en este caso se agrega la fracción de código (1:50) que indica a Matlab que debe usar tan solo los elementos de s que están almacenados desde la posición 1 hasta la 50.

15. DISTRIBUCIONESDEPROBABILIDAD

La siguiente tabla muestra las distintas distribuciones de probabilidad disponibles en Matlab tanto para variables continuas como para variables discretas.

Continuas Discretas

Beta Binomial

Exponencial Uniforme Discreta

Valor Extremo

Gamma Geométrica

Valor Extremo generalizada

Pareto Generalizada

Lognormal Hiper-Geométrica

Normal Binomial Negativa

Rayleigh Poisson

Uniforme

Chi-square

Chi-square no central

Weibull

En esta sección se provee una revisión de algunas distribuciones de probabilidad comúnmente usadas. Se cubrirán dos distribuciones discretas muy importantes: La binomial y la Poisson.

En Matlab existen dos sufijos que ayudan a clasificar las funciones entre aquellas que son funciones de densidad de probabilidad y las que son funciones de distribución acumulativas. La función de densidad de probabilidad usa el sufijo PDF de las siglas del ingles (Probability Density Function). La función de distribución acumulativa usa el sufijo CDF de las siglas del ingles (Cumulative Distribution Function).

Page 39: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

39  

Funciones de densidad de probabilidad

Para distribuciones discretas, la PDF es la probabilidad de observar un resultado particular. Para distribuciones continuas la probabilidad de observar un valor particular es cero. Para obtener estas probabilidades se debe integrar sobre un intervalo de interés, por ejemplo la probabilidad de que el grosor de un video cassete este entre 1 y 2 mm, es la integral de la función PDF apropiada desde uno hasta dos.

Una función PDF tiene dos propiedades teóricas:

La función es positiva o cero para cualquier resultado. La integral de una función PDF sobre su rango completo de valores es uno.

Funciones de distribución acumulativas

Si f en una función de densidad de probabilidad para una variable aleatoria X, la función de distribución acumulativa o CDF asociada llamada F es:

( ) ( ) ( )F x P X x f t dt

El valor de una CDF de un valor x, es decir F(x), es la probabilidad de observar algún resultado que sea menor o igual que x.

Una función CDF tiene las siguientes propiedades.

El rango de la función es de 0 hasta 1.

Si y>x, entonces el CDF de y es mayor o igual que el del CDF de x

Distribución Binomial.

Se tiene un experimento, cuyo resultado pueda ser identificado como “éxito” o “fracaso”. Si X=1 denota un resultado de éxito y X=0 denota un resultado de fracaso, entonces se puede escribir una función de probabilidad como se muestra a continuación:

(0) ( 0) 1

(1) ( 1)

f P X p

f P X p

Donde p representa la probabilidad de un resultado exitoso. Una variable aleatoria que se rige a través de esta función de probabilidad donde se cumple que 0 < p < 1 es llamada una variable aleatoria de Bernoulli.

Ahora, supóngase que se repite este experimento n veces, donde cada intento es independiente (el resultado de un intento no influye en el resultado del otro) y donde el

Page 40: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

40  

experimento resulta en éxito con una probabilidad p. Si X denota el número de éxitos en los n intentos, entonces X se rige por una distribución Binomial con parámetros (n, p).

Para calcular la probabilidad binomial, se usa la siguiente fórmula:

( ; , ) ( ) (1 ) ; 0,1,...,x n xnf x n p P X x p p x n

x

Obsérvese el siguiente ejemplo el cual hace uso del Toolbox de Estadística de Matlab:

Existe un 20% de oportunidad que un adulto Americano sufra de un desorden psiquiátrico. Aleatoriamente se muestrean 25 adultos Americanos. Si X representa el número de personas las cuales tienen un desorden psiquiátrico, entonces X es una variable aleatoria Binomial con parámetros (25, 0.20). Se está interesado en la probabilidad de que máximo 3 de las personas encuestadas tengan tal desorden.

Para resolver este problema se puede hacer el uso de la función binocdf, para determinar P( X ≤ 3 ) de la siguiente manera:

>>prob = binocdf(3,25,0.2);

También se puede calcular la suma de los valores individuales de la función de probabilidad desde X=0 hasta X=3 así:

>>prob2=sum(binopdf(0:3,25,0.2));

Ambos comandos retornan la probabilidad de 0.234

Los siguientes comandos generan una grafica de una pdf binomial para n=10 y p= 1/2

>> x = 0:10; >> y = binopdf(x,10,0.5); >> plot(x,y,'+')

Distribución de Poisson.

0 2 4 6 8 100

0.05

0.1

0.15

0.2

0.25

Page 41: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

41  

Una variable aleatoria X es una variable aleatoria que se rige por la distribución de Poisson con un parámetro λ, con λ>0, si satisface la siguiente expresión:

( ; ) ( ) 0,1,...!'

x

f x P X x e xx

La distribución de Poisson puede ser usada en muchas aplicaciones. Ejemplos de estas situaciones en las cuales se involucra una variable aleatoria discreta son:

El numero de errores tipográficos en una página. El número de vacantes en una compañía durante un mes. El numero de defectos en una longitud de cable.

La distribución de Poisson es a menudo usada para aproximar la Binomial. Cuando n es largo y p es pequeño de manera que n*p es un numero moderado entonces el numero de éxitos que ocurren pueden ser aproximados por una variable aleatoria de Poisson con el parámetro λ=n*p.

El siguiente ejemplo muestra el uso de las funciones de Matlab para el cálculo de probabilidades con la distribución de Poisson.

Mientras se estuvo preparando este texto, se realiza la revisión ortográfica con un asistente de ayuda El asistente arrojo los resultados y se determino que los errores por página se rigen por la distribución de Poisson con parámetro λ=0.25. En seguida se calcula la probabilidad de que una página tenga al menos dos errores:

0.25 0.25( 2) 1 { ( 0) ( 1)} 1 0.25 0.0265P X P X P X e e

Esta probabilidad se puede calcular con la función posscdf de la siguiente manera.

Nótese que la siguiente expresión muestra la forma general de una función de distribución acumulativa para una variable aleatoria discreta.

( ) ( ); 1,2,...i

ix a

F a f x i

Luego la expresión P(X=0) + P(X=1) es la función de distribución acumulativa en la cual el parámetro a de la ecuación anterior es igual a 1. Luego el comando para el cálculo de la probabilidad será el siguiente:

prob = 1- poisscdf(1,0.25);

El siguiente listado de comandos muestra el uso de la función poisspdf

>> x = 0:15; >> y = poisspdf(x,5);

Page 42: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

42  

>> plot(x,y,'+')

0 5 10 150

0.02

0.04

0.06

0.08

0.1

0.12

0.14

0.16

0.18

Page 43: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

43  

APÉNDICEA. INICIANDOMATLAB

Después de ejecutar el programa Matlab desde el sistema operativo empleado, por ejemplo haciendo doble clic sobre el icono de Matlab en ambientes Windows, aparece el indicador de comandos el cual está listo para recibir instrucciones en lenguaje Matlab. Este indicador es de la siguiente forma:

>>

Al iniciar el uso de Matlab están disponibles dos comandos de ayuda y demostración. Para ejecutarlos se escribe el comando en la línea de comandos después del símbolo >> y se presiona la tecla Enter. Por ejemplo el comando:

>>help

permite obtener una ayuda sobre los diferentes comandos de Matlab y

>>demo

hace una demostración de las diferentes aplicaciones de Matlab. Para cerrar o finalizar el uso de Matlab se usa el comando quit.

>>quit

A.1. COMANDOSDEPROPOSITOGENERALENMATLAB

A.1.1. MANEJODECOMANDOSYFUNCIONESHelp - Documentación de ayuda en línea. what - Listado de los directorios (carpetas) con archivos M-, MAT- y MEX. type - Listado de archivos M. lookfor - Búsqueda por palabras clave en la información de ayuda de los archivos M. which - Para localizar funciones y archivos M. demo - Ejecuta ejemplos de demostración incluidos en Matlab. path - Busqueda de la ruta de funciones y archivos M en Matlab.

A.1.2. MANEJODEVARIABLESYDELESPACIODETRABAJO(WORKSPACE)

Who - List current variables. whos - List current variables, long form. load - Retrieve variables from disk. save - Save workspace variables to disk. clear - Clear variables and functions from memory. pack - Consolidate workspace memory. size - Size of matrix.

Page 44: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

44  

length - Length of vector. disp - Display matrix or text.

A.1.3. TRABAJANDO CON ARCHIVOS Y EL SISTEMAOPERATIVO

cd - Change current working directory. dir - Directory listing. delete - Delete file. getenv - Get environment value. ! - Execute operating system command. unix - Execute operating system command & return result. diary - Save text of Matlab session.

A.1.4. CONTROLDELAVENTANADECOMANDOScedit - Set command line edit/recall facility parameters. clc - Clear command window. home - Send cursor home. format - Set output format. echo - Echo commands inside script files. more - Control paged output in command window.

A.1.5. COMANDOSPARAINICIARYSALIRDEMATLABquit - Terminate Matlab. startup - M-file executed when Matlab is invoked. Matlabrc - Master startup M-file.

A.1.6. INFORMACIONGENERALinfo - Information about Matlab and The MathWorks, Inc. subscribe - Become subscribing user of Matlab. hostid - Matlab server host identification number. whatsnew - Information about new features not yet documented. ver - Matlab, SIMULINK, and TOOLBOX version information.

A.1.7. FUNCION DE OPERADORES Y CARACTERESESPECIALES

Char Name HELP topic + Plus arith - Minus arith * Matrix multiplication arith .* Array multiplication arith ^ Matrix power arith .^ Array power arith \ Backslash or left division slash / Slash or right division slash ./ Array division slash kron Kronecker tensor product kron

Page 45: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

45  

: Colon colon ( ) Parentheses paren [ ] Brackets paren . Decimal point punct .. Parent directory punct ... Continuation punct , Comma punct ; Semicolon punct % Comment punct ! Exclamation point punct ' Transpose and quote punct = Assignment punct == Equality relop < > Relational operators relop & Logical AND relop | Logical OR relop ~ Logical NOT relop xor Logical EXCLUSIVE OR xor

A.1.8. COMANDOSLOGICOSexist - Check if variables or functions are defined. any - True if any element of vector is true. all - True if all elements of vector are true. find - Find indices of non-zero elements. isnan - True for Not-A-Number. isinf - True for infinite elements. finite - True for finite elements. isempty - True for empty matrix. issparse - True for sparse matrix. isstr - True for text string. isglobal - True for global variables.

A.2. COMANDOS DE LA HERRAMIENTA DE SISTEMAS DECONTROL(CONTROLSYSTEMTOOLBOX)

A.2.1. CONSTRUCCIONDEMODELOSappend - Append system dynamics. augstate - Augment states as outputs. blkbuild - Build state-space system from block diagram. cloop - Close loops of system. connect - Block diagram modeling. conv - Convolution of two polynomials. destim - Form discrete state estimator from gain matrix. dreg - Form discrete controller/estimator from gain matrices. drmodel - Generate random discrete model.

Page 46: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

46  

estim - Form continuous state estimator from gain matrix. feedback - Feedback system connection. ord2 - Generate A,B,C,D for a second-order system. pade - Pade approximation to time delay. parallel - Parallel system connection. reg - Form continuous controller/estimator from gain matrices. rmodel - Generate random continuous model. series - Series system connection. ssdelete - Delete inputs, outputs, or states from model. ssselect - Select subsystem from larger system.

A.2.2. CONVERSIONDEMODELOSc2d - Continuous to discrete-time conversion. c2dm - Continuous to discrete-time conversion with method. c2dt - Continuous to discrete conversion with delay. d2c - Discrete to continuous-time conversion. d2cm - Discrete to continuous-time conversion with method. poly - Roots to polynomial conversion. residue - Partial fraction expansion. ss2tf - State-space to transfer function conversion. ss2zp - State-space to zero-pole conversion. tf2ss - Transfer function to state-space conversion. tf2zp - Transfer function to zero-pole conversion. zp2tf - Zero-pole to transfer function conversion. zp2ss - Zero-pole to state-space conversion.

A.2.3. REDUCCIONDEMODELOSbalreal - Balanced realization. dbalreal - Discrete balanced realization. dmodred - Discrete model order reduction. minreal - Minimal realization and pole-zero cancellation. modred - Model order reduction.

A.2.4. REALIZACIONDEMODELOScanon - Canonical form. ctrbf - Controllability staircase form. obsvf - Observability staircase form. ss2ss - Apply similarity transform.

A.2.5. PROPIEDADESDEMODELOScovar - Continuous covariance response to white noise. ctrb - Controllability matrix. damp - Damping factors and natural frequencies. dcgain - Continuous steady state (D.C.) gain. dcovar - Discrete covariance response to white noise. ddamp - Discrete damping factors and natural frequencies.

Page 47: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

47  

ddcgain - Discrete steady state (D.C.) gain. dgram - Discrete controllability and observability gramians. dsort - Sort discrete eigenvalues by magnitude. eig - Eigenvalues and eigenvectors. esort - Sort continuous eigenvalues by real part. gram - Controllability and observability gramians. obsv - Observability matrix. printsys - Display system in formatted form. roots - Polynomial roots. tzero - Transmission zeros. tzero2 - Transmission zeros using random perturbation method.

A.2.6. RESPUESTAENELTIEMPOdimpulse - Discrete unit sample response. dinitial - Discrete initial condition response. dlsim - Discrete simulation to arbitrary inputs. dstep - Discrete step response. filter - SISO z-transform simulation. impulse - Impulse response. initial - Continuous initial condition response. lsim - Continuous simulation to arbitrary inputs. ltitr - Low level time response function. step - Step response. stepfun - Step function.

A.2.7. RESPUESTAALAFRECUENCIAbode - Bode plot (frequency response). dbode - Discrete Bode plot (frequency response). dnichols - Discrete Nichols plot. dnyquist - Discrete Nyquist plot. dsigma - Discrete singular value frequency plot. fbode - Fast Bode plot for continuous systems. freqs - Laplace-transform frequency response. freqz - Z-transform frequency response. ltifr - Low level frequency response function. margin - Gain and phase margins. nichols - Nichols plot. ngrid - Draw grid lines for Nichols plot. nyquist - Nyquist plot. sigma - Singular value frequency plot.

A.2.8. LUGARDELASRAICESpzmap - Pole-zero map. rlocfind - Interactive root locus gain determination. rlocus - Evans root-locus.

Page 48: Tutorial Matlab - Computación Aplicada a Sistemas Eléctricos de Potencia

ComputaciónAplicadaaSistemasEléctricosdePotencia 

48  

sgrid - Draw continuous root locus wn,z grid. zgrid - Draw discrete root locus wn,z grid.

A.2.9. SELECCIÓNDEGANANCIAacker - SISO pole placement. dlqe - Discrete linear-quadratic estimator design. dlqew - General discrete linear quadratic estimator design. dlqr - Discrete linear-quadratic regulator design. dlqry - Discrete regulator design with weighting on outputs. lqe - Linear-quadratic estimator design. lqed - Discrete estimator design from continuous cost function. lqe2 - Linear quadratic estimator design using Schur method. lqew - General linear-quadratic estimator design. lqr - Linear-quadratic regulator design. lqrd - Discrete regulator design from continuous cost function. lqry - Regulator design with weighting on outputs. lqr2 - Linear quadratic regulator design using Schur method. place - Pole placement.

A.3. SOLUCIONDEECUACIONESare Algebraic Riccati equation solution. dlyap Discrete Lyapunov equation solution. lyap Continuous Lyapunov equation solution. lyap2 Lyapunov equation solution using diagonalization.

A.4. DEMONSTRACIONESCtrldemo Introduction to the Control Toolbox. boildemo LQG design of boiler system. jetdemo Classical design of jet transport yaw damper. diskdemo Digital control design of hard disk controller. kalmdemo Kalman filter design and simulation.