Está en la página 1de 44

INTRODUCCIÓN AL USO DE MATLAB

Prof: Ing. Walter Golob


Ayte: Ing. Hernán Goin
Sistemas de Control de Procesos
Introducción al uso de MatLab

Índice

Introducción a Matlab 3
Instalación 3
Entorno de trabajo 5
Introducción y formato de datos 6
Operadores ,Variables y constantes especiales 9
Funciones Elementales 10

Polinomios 11
Gráficos en 2D 15
Análisis de datos 21
Variables simbólicas 22
Matlab Simulink 35

Parámetros de simulación y bloque Scope 38


Subsistemas y máscaras 42
Vínculo entre Simulink & entorno base de Matlab 44

Prof. Ing. Hernán Goin 2 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Introducción

Matlab es una herramienta de software matemático que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de
programación propio de alto nivel (Lenguaje M, “similar al C++”).
La potencialidad de la herramienta permite realizar entre otras cosas

 Cálculo matemático
 Desarrollo de algoritmos
 Adquisición y/o Análisis de Datos
 Modelización y Simulación
 Gráficos
 Desarrollo de GUI - (Interfaces Gráficas de Usuario)

En líneas generales, Matlab es una herramienta interactiva basada en matrices para cálculos científicos y de ingeniería. De
hecho, el término Matlab procede de Matrix Laboratory).
Constituye un entorno abierto, para el cual numerosas paquetes específicos adicionales (Toolboxes) han sido desarrollados.
Debido a la versatilidad del entorno, se pretende realizar una introducción al uso básico de Matlab, orientando al estudio de
sistemas de control.
Desde el punto de vista de control, Matlab se puede considerar un entorno matemático de simulación que puede utilizarse
para modelar y analizar sistemas. Permitirá el estudio de sistemas continuos, discretos, lineales y no lineales, mediante
descripción interna y externa, en el dominio temporal y frecuencial.
Para el caso que nos ocupa utilizaremos fundamentalmente Simulink y el Control System Toolbox. Estos paquetes
específicos adicionales están constituidos por un conjunto de funciones y/o complementos, que pueden ser llamadas desde el
programa y mediante las cuales se pueden realizar multitud de operaciones.
Las referencias al Control System Toolbox se realizarán directamente en los ejemplos que se describen en esta guía.
Las mismas se centrarán fundamentalmente en aquellos aspectos y funciones que más interés tengan desde el punto de vista
de control, instando al alumno a que busque en el manual de usuario información adicional

Instalación

Una vez instalado Matlab, el directorio de archivos y carpetas posee el siguiente aspecto.
“C:\Program Files\MATLAB\R2017a\toolbox”

Prof. Ing. Hernán Goin 3 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

El núcleo fundamental de Matlab se encuentra en los subdirectorios BIN y MATLAB.


En BIN se encuentran los programas ejecutables. El subdirectorio MATLAB contiene archivos “ .m “ (son archivos escritos
a base de comandos de Matlab y que realizan una función determinada), que contienen las funciones básicas para el
funcionamiento de Matlab. En este sentido, es necesario comentar que Matlab cuenta con dos tipos básicos de funciones:

- Funciones denominadas built-in functions: Son funciones que Matlab tiene incorporadas internamente. No son
accesibles al usuario.
- Funciones llamadas m functions: Son funciones cuyo código es accesible. Las que se encuentran en el subdirectorio
MATLAB son las básicas para el funcionamiento del sistema. Como se desprende del ´árbol de directorios, los
toolboxes se suelen instalar en forma de subdirectorios. En ellos se encuentran también funciones .m orientadas al
control de sistemas.
Además, se pueden incorporar otros toolboxes (signal processing, image processing, robust control, non-linear
control, system identification, etc), e incluso funciones propias del usuario.

Algunas de las carpetas más relevantes del directorio Matlab son:

matlab\general - Comandos de propósito general


matlab\ops - Operadores y caracteres especiales
matlab\lang - Constructores del lenguaje de programación
matlab\elmat - Matrices elementales y manipulación matricial
matlab\elfun - Funciones matemáticas elementales
matlab\specfun - Funciones matemáticas especiales
matlab\matfun - Funciones matriciales - ´algebra lineal numérica
matlab\datafun - Análisis de datos y transformada de Fourier
matlab\polyfun - Interpolación y polinomios
matlab\funfun - Funciones de funciones y métodos para ODE
matlab\sparfun - Funciones para matrices dispersas
matlab\graph2d - Gráficos en dos dimensiones
matlab\graph3d - Gráficos en tres dimensiones
matlab\specgraph - Gráficos especializados
matlab\graphics - Manipulación de gráficos
matlab\uitools - Herramientas de interfaz gráfica de usuario (GUI)
matlab\strfun - Cadenas de caracteres
matlab\iofun - Funciones para entrada/salida de ficheros
matlab\timefun - Hora y fecha
matlab\datatypes - Tipos de datos y estructuras
matlab\winfun - Ficheros de interfaz con Windows (DDE/ActiveX)
matlab\demos - Ejemplos y demostraciones
simulink\simulink - Simulink
simulink\blocks - Librería de bloques de Simulink
simulink\simdemos - Ejemplos y demostraciones de Simulink
toolbox\control - Paquete de Control de Sistemas
toolbox\local - Librería de funciones locales

Prof. Ing. Hernán Goin 4 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Entorno de trabajo

Más allá de la versión instalada de Matlab, en su entorno se pueden ver las siguientes ventanas
.
Barra de
Barra de menú Search documents R2017a
Herramientas

Command Window
Ventana de comandos

Command History:
Current Directory Listado histórico de las
Información del Directorio actual últimas instrucciones
ejecutadas .

Workspace:
Espacio de trabajo
donde se guardan las
variables y resultados
presentes en memoria

Funciones y símbolos relacionados con el entorno

En el centro del entorno, se abre la ventana de comandos en la que aparece el prompt o línea de comandos (“>>”).
En la parte superior, el menú y la barra de herramientas conforme a la solapa del menú seleccionado, mientras que en el
margen derecho una ventana para búsqueda de documentación o “help” muy completo de matlab.
Realizada la búsqueda en esta última ventana, se abrirán los resultados en una ventana emergente en la que es posible
navegar. También es posible obtener ayuda, desde línea de comandos. Para obtener información sobre cualquiera de las
funciones se introduce “>>help nombre_función.
Ejemplo: si ingresamos el comando ” >>help impulse” aparecerá una breve explicación, en la misma ventana de comandos,
de la función, su uso y su prototipo - argumentos y retorno/s (impulse es una función que calcula la respuesta impulso de
un sistema y que se encuentra en el control system toolbox).
Introduciendo sólo el comando “>>help”, aparecerán (HELP topics) todas las citadas built-in functions, tanto las contenidas
en el subdirectorio MATLAB, como otras contenidas en subdirectorios eventualmente añadidos por el usuario.

Una cuestión importante a tener en cuenta es que matlab distingue entre mayúsculas y minúsculas. En este sentido, los
nombres de función se introducirán en minúsculas.

Sobre la izquierda está la ventana que exhibe el directorio actual de trabajo, donde se guardarán los archivos. La ruta o
“path” se muestra en la parte superior de la misma. Se recomienda crear una carpeta personal donde almacenar dicha
información. También es posible, a través de la línea de comandos, navegar en el directorio, borrar archivos o carpetas
utilizando comandos del DOS como dir o ls, cd, delete, etc.

En la parte inferior izquierda se encuentra el “workspace” o espacio de trabajo, la cual mostrará todas las variables y
valores asignados. Cabe destacar que en Matlab, las variables no se declara el tipo como en el lenguaje C. Sólo se instancian
las variables mediante la asignación de un valor. Ej: “>>a = 3”
En la variable “ans” queda almacenado el último resultado, tal como es en una calculadora científica.

Prof. Ing. Hernán Goin 5 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Es posible que desee borrar una variable del workspace. Esto puede realizarse ya sea seleccionando en dicho espacio la
variable y “suprimir” o bien mediante línea de comandos “>>clear nombre_de_la_variable”. Debe tener cuidado, a que de
ingresar sólo el comando “>>clear” borrará todas las variables instanciadas.

Otra alternativa para visualizar sólo las variables instanciadas, es mediante los comandos “>>who” o “>>whos”. Estos
comandos mostrarán un listado de variables con sus atributos, respectivamente. No su valor.

Dicho “workspace” se podrá guardar, a través del icono “save workspace” o mediante el atajo “ctrl s”, en un archivo de
extensión “.mat” para luego ser recuperado una vez cerrada la sesión.

Por último, la ventana “command history” muestra un historial cronológico de los comandos ingresados por la ventana.
Estos pueden ser reingresados, mediante acceso rápido, desplazándose sobre el historial con las teclas “▲▼” (up- down)
También es posible borrar el historial o comandos en pantalla desde la barra de herramientas. (icono: clear commands)

Es posible que al abrir Matlab en una primera instancia, el entorno, no muestre todas las ventanas o bien no se encuentren
ubicadas tal como muestra la figura. El entorno puede ser organizado y personalizado a través del ícono “layout”

Introducción de datos.

 Es posible introducir varios comandos en una misma línea de la ventana de comandos, separados por coma o punto y
coma.
 ”Limpiar” el contenido de la ventana de comandos mediante la instrucción >>clc.
 El símbolo % sirve para introducir comentarios. Todo lo escrito desde ese símbolo hasta el final de la línea será
ignorado por el intérprete de Matlab.
 Si desea guardar toda la sesión en un archivo, basta usar el comando >>diary nombre archivo.
Dicho archivo contendrá los comandos introducidos y los correspondientes resultados. Cuando no se quiera seguir
almacenando la información se introducirá >>diary off.
 Si se desean almacenar o guardar:
o todas las variables de memoria con los valores actuales, utilizar comando >>save nombre_archivo. Se guardará
en el directorio de trabajo actual con el nombre introducido y con extensión .mat. en formato binario. Si no se
da el nombre del fichero, se crea uno llamado matlab.mat.
o En caso que se desee guardar en un archivo con formato ascii, se introducirá en el comando un modificador:
save -ascii nombre_archivo.
Si sólo se quieren guardar una serie de variables, se introducirá >>save nombre_archivo nombre-variables,
separadas por espacios.
Para recuperar los ficheros generados con el comando save se utilizara >>load nombre_archivo..
Formato de visualización y presentación de resultados

Tipo de Formato Descripción Ejemplo

format short Formato coma fija con 4 dígitos después de la coma (es el 3.1416
formato que viene por defecto)
format long Formato coma fija con 14 o 15 dígitos después de la coma 3.14159265358979

format short e Formato coma flotante con 14 o 15 dígitos después de la 3.1416e+000


coma
format long e Formato coma flotante con 14 o 15 dígitos después de la 3.141592653589793e+000
coma
format short g La mejor entre coma fija o flotante con 4 dígitos después de 3.1416
la coma
format long g La mejor entre coma fija o flotante con 14 o 15 dígitos 3.14159265358979
después de la coma
format short eng Notación científica con 16 dígitos significantes y un 3.14159265358979e+000
exponente de 3
format bank Formato coma fija con 2 dígitos después de la coma 3.14
format hex Hexadecimal 400921fb54442d18
format rat Aproximación racional 355/113
format + Positivo, negativo o espacio en blanco +

Prof. Ing. Hernán Goin 6 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

format compact Deja menor número de líneas en blanco en la visualización


de los resultados, permitiendo dar cabida a más información
previa en la ventana de comandos. .
format loose Es el modo por defecto, se dejan más líneas de separación
en la visualización

También puede modificarse el formato de visualización a través de las opciones de menú: File/Preferences/General

 Para detener la ejecución de un comando, se usa Ctrl-C

 La salida del sistema se efectúa al introducir quit ´o exit, o simplemente cerrando la ventana de comandos. 6
Introducción de datos. Uso de la ventana de com

 Resolución: Si desea, a través del comando >>eps puede ver el mínimo número a ser representado.

 Si la instrucción o comando introducido finaliza con “;” se mostrará el resultado en la ventana de comandos

» instrucción ( ) o bien » instrucción ; ( )

Elementos de Matlab

El elemento básico en Matlab es la matriz compleja de doble precisión, estructura que abarca realmente todo tipo de
datos tales como:

 escalares tales como números reales o complejos => Matlab los almacena como matrices de 1x1
 hasta vectores de tamaños arbitrarios; => Un vector es una matriz de n elementos de una sola fila o columna
 matrices de tamaños arbitrarios. => Matriz de Filan x Colm

Implícitamente se usa la notación matricial para introducir números, polinomios y funciones de transferencia, de la forma que
se explicara más adelante.

Si asignamos un valor a una variable, ésta toma el tamaño de lo asignado

Prof. Ing. Hernán Goin 7 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Asignación de variables

Elemento Utilización Respuesta Matriz

Escalar >> a = 2 a=2 1x1

>> 4 ans = 5

>> b = [1 2 3] % una fila, 3 colum b= 1 2 3 1x3


>> b = [ 1: 3] % una fila de 3 elementos espaciados en “1”
>> c = [1 : 0.5 : 3] % una fila de 5 elementos de 1 a 3, espaciados 0.5 b= 1 1.5 2 2.5 3 1x5
Vector
>> d = [1; 2 ; 3] % una columna, 3 filas d= 3x1
1
2
3

>> d = [1 2 ; 3 4 ] d=
1 2
3 4
Matriz >> d ( 1 , 2) =5 % asignar a un elemento d= 2x2
% de la matriz 1 5
3 4

Como Matlab considera a todo elemento como una matriz compleja de doble precisión podemos ver que:

- En una variable escalar: es una matriz cuya estructura es de 1x1 (una fila por una columna)
- Un vector: es una matriz de una fila o bien de una columna. Nótese que la matriz se define entre corchetes. Cada
elementos de la fila se ingresan separado por espacios o con el carácter ” ,” si el vector es de una fila. Si el vector es
de una columna los elementos se separan con el caracter “ ; ”.
- En una matriz se definen entre corchetes las filas, con los elementos espaciados, separadas por el carácter “ ; ”.
.
Uno de los elementos más potentes de Matlab, que es el símbolo “ : “, que permite generar una secuencia, y en
particular permitirá referenciar varios elementos de una matriz.

Veamos algunos ejemplos en los que se usa este operador:

>> v = [1:0.1:10 ] Generará una secuencia en el rango de 1 hasta 10, donde cada elemento estará separado del
anterior en 0.1.

>> v = [1:10 ] Si se obvia el valor central, la separación entre cada dos elementos de la secuencia será 1.

>> v ( i , j) Es posible referenciar un elemento de la matriz, colocando entre paréntesis los ´índices del elemento al
que se quiere acceder.
Es posible usar una secuencia que facilite la indexación de múltiples elementos:

>> v (1,2:3) Dará como resultado los elementos de las columnas 2 y 3 pertenecientes a la primera fila.

>> v ( :,2) daría como resultado todos los elementos pertenecientes a la segunda columna.
Otra forma de generar datos secuencialmente es usando los comandos linspace y logspace, siendo su formato :

>> t = linspace (n1,n2,n); El comando linspace genera un vector desde cuyos elementos “n” estarán equiespaciados
en el rango definido entre n1 y n2

>> w = logspace (n1,n2,n); El comando, logspace produce también un vector de n elementos, pero sus valores están
espaciados logarítmicamente desde 10n1 a 10n2.

Prof. Ing. Hernán Goin 8 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Operadores , Variables y constantes especiales

Así como las palabras reservadas propias de cualquier lenguaje, las cuales en general se muestran con un color diferente en el
entorno, existen una serie de variables predefinidas en Matlab:

Variables y funciones especiales

variable Descripción Ejemplo


ans Contiene la respuesta (answer) del último comando ejecutado, cuando el >> 2+3
resultado de dicho comando no se asigna explícitamente a ninguna variable. ans = 5

eps Da el valor de la precisión con la que la maquina realiza las operaciones en >> eps
punto flotante. Típicamente, esta precisión es del orden de 10−17. ans = 2.22044604…e-
16
pi Número π >> pi
ans = 3.14159265359
ioj √−1. Constante imaginaria. >> i
ans =0.00.. +
1.000…i
inf ∞. Se trata de un valor excesivamente grande para ser almacenado. >>1/0 ans =inf
NaN Not a number. Es el resultado que se proporciona si durante una operación se >> inf*0
produce una indeterminación, del tipo 0 · ∞, 0 0 , ∞ ∞ , etc. ans =NaN

clock Devuelve en un vector el año, mes día hora minutos y segundos, en ese orden >>clock
date Devuelve array de dia-mes-año >>date
calendar Devuelve el calendario del mes actual >>calendar
etime Devuelve el intervalo de tiempo en segundos entre dos clock >>t1=clock
>>etime(clock,t1)
tic / toc Los comandos "tic" y "toc" permiten calcular el tiempo de la ejecución de un
programa para identificar cuellos de botella y visualizar mejoras en el
desempeño.

Operadores y funciones

Inicialmente veremos cómo realizar cálculos matemáticos sencillos, tal como en una calculadora científica, con el fin de
comprender su operatoria

Operadores matemáticos básicos:

Operador Utilización Ejemplo


+ Suma >> 2+3 ans = 5
- Resta >> 2-3 ans = -1
* Multiplicación >> 2*3 ans =6
/ División >> 2/3 ans =0.6667
Potenciación >> 2^3 ans =8

A los operadores básicos se agregan los siguientes operadores para matrices o arrays:

Operadores entre arrays o vectores:

Operador Utilización Ejemplo


.* Multiplicación término a término >> [ 2 3] .* [ 2 4 ] ans = [4 12]
./ División término a término >> [ 2 3] ./ [ 2 4 ] ans = [1 0.7500]
.^ Potenciación término a término >> [ 2 3] .^ 2 ans = [4 9]

Las operaciones comunes con matrices son:


– Suma: +
– Resta: -

Prof. Ing. Hernán Goin 9 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

– Multiplicación: *
– División derecha / (x = b/A es la solución del sistema de ecuaciones x ∗ A = b. Es decir calcula la inversa de la matriz A y
multiplica b por la derecha por dicha inversa)

– División izquierda \ (x = A \ b es la solución de A ∗ x = b. Es decir, igual que en el caso anterior, pero realiza la
multiplicación de la inversa con b por la izquierda)
– Potenciación ^. Este operador permite, en particular, implementar otra forma de realizar la inversión de una matriz: A^(-1).
– Conjugada traspuesta ’

Cabe mencionar la potencia de los operadores /, \, y ^, puesto que si la matriz A no es cuadrada, automáticamente se realiza
el cálculo de su pseudoinversa, lo que equivaldría a resolver el sistema de ecuaciones correspondiente por mínimos
cuadrados. Las mismas operaciones que se han enumerado se pueden realizar elemento a elemento, anteponiendo un punto a
cualquiera de los operandos anteriores. Como ejemplo, el siguiente comando realizaría el producto de cada elemento de la
matriz A con su correspondiente de la matriz B (para que dicho producto sea realizable, obviamente, dichas matrices deben
tener las mismas dimensiones): A .* B

A modo ilustrativo, ya que existe un sinnúmero, estas son algunas de las funciones para operar con matrices:
– Funciones típicas de matrices:
• det: determinante de una matriz
• inv, pinv: inversa y pseudoinversa
• eig: obtención de autovalores
• rank: rango de la matriz
• norm: norma de una matriz (norma 2, norma 1, norma infinito, norma de Frobenius)
• trace: traza de la matriz
• diag: produce un vector conteniendo los elementos de la diagonal de una matriz, o si recibe un vector como
parámetro, genera una matriz diagonal.
• tril: devuelve la matriz triangular inferior de una matriz dada
• triu: devuelve la matriz triangular superior de una matriz dada
– Funciones para generar matrices:
• eye(n): produce una matriz identidad de dimensión n × n
• zeros(n,m): genera una matriz de ceros de dimensión n × m
• ones(n,m): genera una matriz de unos de dimensión n × m
• rand(n,m): permite generar una matriz de valores aleatorios, entre 0 y 1, de dimensión n × m
• A = [A11,A12;A21,A22]: podemos producir una nueva matriz por bloques, mediante su composición a partir de
submatrices ya existentes

Funciones elementales:

A continuación se describen algunas funciones elementales de Matlab para la manipulación de variables. (mas info. help)

Funciones Trascendentales

Función Utilización Ejemplo

exp(x) Exponencial de x >> exp(1) ans =2.7183


log (x) Logaritmo Natural >> log(2.7183) ans =1.0000
log10 (x) Logaritmo en base 10 >> log10(350) ans =2.5441
sqrt (x) Raíz cuadrada. >> sqrt (4) ans =2
abs(x) Permite calcular tanto el valor absoluto de un escalar >> abs(8) ans =8
real como el módulo de un escalar complejo o de un >> abs (2+2i) ans= 2.828427124746
vector. >> abs(-2) ans = 2

Resolución
round(x) Redondeo de x al entero más cercano >>round (1.555) ans = 2
fix(x) Redondeo de x hacia 0 >>fix (-12.555) ans = 12
floor(x) Redondeo de x al hacia -∞ >>floor(-12.555) ans = -13
ceil(x) Redondeo de x al hacia ∞ >>ceil (1.555) ans = 2
rem(a,b) Resto de la división a / b >>rem (3,2) ans =1
sign(x) Ddevuelve una matriz, del mismo tamaño que x, donde
cada elemento es:

Prof. Ing. Hernán Goin 10 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

1 si el elemento de x es mayor que 0. >>sign( 1 2; 0 -5) ans =


0 si el elemento de x es igual a 0. 1 1
-1 si el elemento correspondiente de x es menor que 0. 0 -1
x./abs(x) si x es complejo >>sign (2+2i) ans= 0.7071 + 0.7071 i

Funciones Trigonométricas estándar e hiperbólicas

Función Utilización Ejemplo

sin(x) Seno de x en radianes >> sin(pi /4) ans =0.707106781186


cos(x) Coseno de x en radianes >> cos(0) ans =1.0000
tan (x) Tangente de x en radianes >> tan( pi /4) ans =1.0000
asin (x) Arco Seno de x en radianes >> asin (0.70710) ans =0.785398163397
acos (x) Arco Coseno de x en radianes >> acos (1) ans = 0
atan (x) Arco Tangente de x en radianes >> atan (1) ans =0.785398163397

sinh(x) Seno hiperbólico de x >> sinh(3) ans)=10.0179


cosh(x) Coseno hiperbólica de x >> cosh(3) ans=10.0677
tanh (x) Tangente hiperbólica de x >>tanh(3) ans=0.9951
asinh() Arco Seno hiperbólico
acosh() Arco Coseno hiperbólico
atanh() Arco Tangente hiperbólico

Nota: si el argumento está dado en grados, las funciones a utilizar para seno, coseno y tangente son: sind() , cosd() , tand()

Polinomios

Antes de ver cómo trabajar con polinomios con Matlab, recordemos algunos conceptos
El polinomio es una expresión algebraica que constituye la suma o la resta ordenadas de un número finito de
términos o monomios. Está constituido por una suma finita de productos entre variables y constantes
llamados coeficientes. Los exponentes de las variables, son valores definidos naturales incluido el cero y cuyo
valor máximo indica el grado del polinomio.

f(x) = a0. x n + a1. x n-1 + a3.x n-3 + a2 .x n-2 + . . . + an-2 .x 2 + an-1 .x + an = 𝑓(𝑥) = ∑𝑛𝑖=0 𝑎𝑖 . 𝑥 𝑖

Siendo: Variable: x
Coeficientes: ai , con i = 0 .. n Polinomio de grado 2: Polinomio de grado 4:
f(x) = x2 - x - 2= (x+1)(x-2). f(x) = 1/14 (x+4)(x+1)(x-1)(x-3) + 0.5.
Grado: n

Algunos ejemplos son:

Polinomio de grado 3: Polinomio de grado 5:


f(x) = x3/5 + 4x2/5 - 7x/5 - 2 f(x) = 1/20 (x+4)(x+2)(x+1)(x-1)(x-3) + 2.
=1/5 (x+5)(x+1)(x-2).

Prof. Ing. Hernán Goin 11 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Teorema del Resto

Al sustituir la variable del polinomio por un número se obtiene una expresión numérica cuyo resultado es el valor numérico
del polinomio en ese punto.
Por ejemplo, dado el polinomio: p(x)=5x3−4x2+5x−1 donde p(1)=5⋅13−4⋅12+5⋅1−1=5.
Se dice que el valor del polinomio en el punto 1 es 5, es decir, p(1)=5.

El teorema del resto es un resultado interesante que relaciona el valor numérico de un polinomio con la división de
polinomios, y afirma que al dividir un polinomio cualquiera p(x) entre (x−a), siendo a un número, el resto de dicha división
es precisamente p(a).
Así, en el caso del ejemplo anterior, podemos asegurar que el resto de la división de p(x)=5x 3−4x2+5x−1 entre (x−1) es :

5.𝑥 3 −4.𝑥 2 +5.𝑥−1


= 5. 𝑥 2 + 𝑥 + 6 cuyo resto es 5 = p(1)
𝑥−1

Por otra parte, sabemos que un polinomio es divisible por otro polinomio cuando la división entre ellos es exacta, es decir,
cuando el resto de la división es 0. Utilizando el teorema del resto, podemos asegurar que un polinomio p(x) es divisible por
(x−a), si p(a)=0. Al valor a que cumple dicha condición se le denomina raíz del polinomiop(x).
Así pues, una raíz de un polinomio p(x) es un valor numérico a que cumple que p(a)=0.

 El teorema del resto permite afirmar que estas dos afirmaciones son equivalentes: a es una raíz del polinomio p(x).
p(x) es divisible entre (x−a).

Por ejemplo, el polinomio: p(x) = x2−1 tiene dos raíces


en x=1, ya que p(1)=0.
en x=-1, ya que p(-1)=0
Así pues, puede asegurarse que dicho polinomio es divisible entre (x−1). y por ( x+1)
Por lo tanto, como p(x)=x2−1 es divisible entre x−1, su división debe tener resto 0.
Si realizamos la división:
(𝑥 2 − 1)
=𝑥+1
(𝑥 − 1)

Y pasando el denominador al otro miembro, nos queda que: p(x) = x2 −1 = (x+1).(x−1).

Una raíz doble aparece dos veces en el listado de raíces de un polinomio. Por ejemplo, q(x)=(x+1) 2 tiene una raíz doble, que
es -1. Es decir, si un polinomio tiene una raíz doble a, significa que el polinomio es divisible por (x−a) 2.

El Teorema del residuo

Generalmente cuando un polinomio es dividido entre un binomio hay un residuo.


Considere la función polinomial f ( x ) = x 2 - 8 x + 6. Divida el polinomio entre el binomio ( x – 2).
Podemos realizar la división en cualquier método.

Método 1: División larga Método 2: División sintética


2
x - 8 x + 6 x-2
.
x2 - 2x x-6
-6x + 6 2 1 -8 6 f ( 2 ) = 22 – 8.2 + 6
-6x + 12 2 -12 f ( 2 ) = -6
- 6 1 -6 -6
El residuo es -6.

El valor de f (2) es el mismo que el residuo cuando el polinomio es dividido entre el binomio (x – 2). Esto ilustra el teorema
del residuo.

Si un polinomio f ( x ) es dividido entre (x – a) , el residuo es la constante f ( a ), y f ( x )= q(x) .(x-a) + f(a) , donde q ( x ) es un


polinomio con un grado menor que el grado de f ( x ).

En otras palabras, el dividendo es igual al cociente por el divisor más el residuo.

Prof. Ing. Hernán Goin 12 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Operaciones y funciones en Polinomios con Matlab.

La representación en Matlab es a través de un vector. Debe de considerarse asignar en el vector:

- Los coeficientes ordenados en forma decreciente por su grado


- Completitud: deben estar TODOS los coeficientes, aún si su valor = 0 (estructura posicional)

Ej: >>a = [ 1 1 1] % representa: x 2 + x + 1


>> a = [ 2 0 1 3] % representa: 2 .x 3 + 0. x 2 + x + 3

Operaciones con polinomios

Operación Operador Ejemplo Observaciones

Suma resta + >>[ 3 2 1 0 ] +[0 3 1 1 ] ans= 3 5 2 1 Se suma o resta elemento a


- >>[ 3 2 1 0 ] -[ 0 0 3 1 ] ans= 3 2 -2 -1 elemento de mismo
orden.Deben ser del mismo
tamaño. Completar con “0”
Producto y cociente:

Polinomio x escalar * >>[ 3 2 1 0 ] * 3 % (3x3 + 2x2 + x). 3 Distributiva: se multiplica o


Polinomio / escalar / ans = 9 6 3 0 % 9x3 + 6x2 + 3x divide término a término

Producto de Polinomios conv(p1,p2) >>conv( [ 0 0 1 1 ], [ 3 2 1 0 ] ) No es necesario que sean de


igual largo
ans = 0 0 3 5 3 1 0 %3x4 + 5x3 + 3x2 + x + 0

División de polinomios deconv(p1,p2) >> [ c, r] = deconv( [3 5 3 1 0], [ 3 2 1 0 ] ) El resultado se devuelve en


c = 1.0000 1.0000 % “c” es el COCIENTE 2 vectores (cociente y
r = 1.0e-015 * % “r” es el resto de la división resto)
0 0 0 0.1110 0

Funciones útiles para operar con polinomios

Operación Función Ejemplo Observaciones

Raíces roots(p) >> roots( [ 8 4 2 1 ] El usuario deberá verificar si la precisión


ans = -0.5000 satisface
0.0000 + 0.5000i (ver Métodos Numéricos OD45 –OD23)
0.0000 - 0.5000i
Reconstruir polinomio poly (r) >> r1 = roots( [ 4 2 1 ] ) ( [ 4 2 1 ] )
con sus raíces r1 =-0.2500 + 0.4330i Es la función inversa a roots()
-0.2500 + 0.4330i Nótese que para factorizarlo hay que
-0.2500 - 0.4330i multiplicar por el coeficiente del término
de mayor orden
>> poly( r1 )
ans = 1.0000 0.5000 0.2500
Evaluar un polinomio polyval (p , x) >>polyval ( [ 4 2 1 ],2 ) Determina qué valor toma el polinomio
ans = 21 cuando la variable independiente (x)
toma un valor
Args: polinomio y escalar
Derivar un polinomio polyder(p) >> polyder ( [ 4 2 1 ])
ans =
8 2
Integrar un polinomio polyint(p) >> polyint ([4,2])
ans =
2 2 0

Prof. Ing. Hernán Goin 13 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

[r,p,k]residue( n,d ) >>b = [-4 8]; Arg: pol. numerador y denominador


>>a = [1 6 8]; Retorno: Coeficientes de cada término,
polos más constante
>>[r, p, k] = residuo (b, a)
Expansion en r = -12
Fracciones parciales 8
p = -4
-2
k=
[]

Convierte de >>[num, den] = residuo (r, p, k)


fracciones parciales a [n,d]residue( r,p,k ) Arg: Coeficientes de cada término,
num = -4 8 polos más constante
coeficientes de den= 1 6 8 Retorno: coeficientes pol. numerador y
polinomios denominador

Residuos: la función “residue” sirve para hallar los residuos de una función racional en los polos de la misma (o coeficientes
de su expansión en fracciones simples), bajo el supuesto de que los polos sean simples. Además, dicha función calcula
también los polos y el término directo

Números complejos

Los números complejos son una extensión de los números reales. El conjunto de los números complejos se designa con la
notación ℂ, siendo el conjunto de los números reales ℜ se cumple que 𝕽 𝒄 ℂ ( Los reales están contenidos en el conjunto
de los complejos ). Los números complejos incluyen todas las raíces de los polinomios, a diferencia de los reales.

La noción de número complejo aparece ante la imposibilidad de los números reales de abarcar a las
Raíces de orden par del conjunto de los números negativos.
Los números complejos pueden, por lo tanto, reflejar a todas las raíces de los polinomios, algo que
los números reales no están en condiciones de hacer.

Todo número complejo puede representarse como la suma de un número real y un número imaginario
(que se indica con la letra i), o en forma polar.

Forma binómica -> Z =a + j b =a +i b


= 𝜌. (Cos(φ) + i Sen(φ)) a través de funciones trigonométricas

Forma polar -> 𝑍 = 𝜌. 𝑒 𝑗𝜑 donde 𝜌 = √𝑎2 + 𝑏 2


𝑏
𝜑 = 𝑎𝑟𝑐𝑡𝑔 ( )
𝑎

Expresarlo de una u otra forma, facilitará la operación algebraica.

Funciones con números complejos

Función Utilización Ejemplo

real (x) Devuelve la parte real de un complejo >> real (2+2i) ans= 2
imag (x) Devuelve la parte imaginaria de un complejo >>imag (2+5i) ans =5
angle(x) Devuelve el argumento de un complejo, en radianes >> angle (2+2i) ans= 0.78539816339
conj(x) Devuelve el número complejo conjugado >> zc=conj(2+2i) zc =2-2i
abs(x) Devuelve el módulo de un escalar complejo o el módulo >> abs (2+2i) ans= 2.828427124746
de un vector.

Prof. Ing. Hernán Goin 14 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Gráficos en 2D

Para hacer gráficas con MatLab en un plano, es necesario tener dos vectores. Uno de ellos poseerá los valores de la variable
independiente, y el otro con los valores que tomará la función a ser graficada. (variable dependiente)
La función básica utilizada es plot (x, y), donde “x” e “y” son los vectores mencionados.
Para asignar una secuencia de valores de “x”, se podrá utilizar el operador ” : ” ya mencionado o bien a través de la función
linspace (min, max, cant), cuyos argumentos serán el rango de valores (nin y max) y la cantidad de puntos equidistantes.

Funciones para Gráficas en 2D

Función Utilización Argumentos ‘S’


Color Estilo Marcas
plot (x ,y, ‘S’) Grafica el par ordenado dado por los vectores ”x” e ”y” b blue ‘-‘ Solid o v
interpolando sus puntos. El argumento ‘S’ es una cadena g green ‘--‘Dashed + >
de caracteres que modifican la traza, colores. Por defecto, r red ‘: ‘ Dotted * <
la traza será una línea sólida. (ver semilogx( ), loglog( ) ) c cyan ‘-.’ Dash-dot . p
Para graficar un vector complejo >plot (real(y) , img(y)) m magenta ‘none’ x h
Es posible hacer varios graficas en un mismo plano, y yellow s
separando con “,” los argumentos de cada vector- k black d
plot (x,y,’s ‘ , x,y1,’s1’ , x,y2,’s2’-----) w white ^
Propiedades de la traza: Ancho y color
Marcas: 'LineWidth', 2 'Color', [R G B]
indicar tipo de marca - índice/s del punto/s con un vector ’Marker’,’o’ ’Marker’, [ y1 y2 __ ]
y sus propiedades adicionales ’MarkerEdgeColor’,’r’
’MarkerFaceColor’,’k’, ’MarkerSize’,10

subplot (m,n,p) Divide la figura actual en una cuadrícula m-b y-n y crea ejes en la posición especificada por p.
Ej: >>ax=subplot(2,3,1) %crea una cuadricula de 2x3 para gráficos en una misma figura
m =cantidad de filas, n =cantidad de columnas, p=posición de los ejes (enumera de izq. a derecha y de arriba hacia
abajo). Es muy común almacenar el retorno de subplot para que sea más amigable la modificación de alguna
gráfica en particular “axi”. (axis con el índice de posición)

ezplot(fsym) Grafica funciones simbólicas. Si se desea acotar el rango de c/u de los ejes se le pasará además como argumento a
la función ezplot (fsym, [Xmin,Xmax,Ymin,Ymax])
hold on Si deseo hacer varias trazas en una misma gráfica:
hold off Mantiene los gráficos en los ejes actuales para que los nuevos
hold all trazados añadidos a los ejes no eliminen los trazados existentes.
hold (ax,_)
grid on Una vez “ploteada” la gráfica Muestra y/o oculta la grilla en línea punteada.
grid off Minor traza una grilla mas estrecha
grid minor
axis (limits) Para definir la escala de los ejes >> axis ( [xmin xmax ymin ymax] )
Si existen “subplots” >>axis ( [ax1 ax2] , [0 10 -1 1] ) % Donde ax1 y ax2 son los subplots

axes(name,value) Modifican la apariencia de los ejes o controlan la manera en que se muestran los datos usando uno o más
argumentos. Por ejemplo, 'FontSize', 14 establece el tamaño de fuente para el texto de los ejes. Para obtener una
lista de propiedades, consulte Propiedades de ejes.
xlabel() Coloca etiquetas a cada eje con propiedades. Ej: xlabel('Population','FontSize',12,'FontWeight','bold','Color','r')
ylabel() De existir subplot especificar: xlabel (ax1,'Population')
title(‘txt’) Inserta un título en la gráfica o en un subplot
title(ax,’txt’)
legend('show') De existir varias trazas en un mismo gráfico, coloca una leyenda en la que identifica cada una de ellas
legend(label1,...,labelN)
legend(labels,Name,Value)
gtex (‘txt’) Permite agregar un texto a la figura
text (x,y,’txt’) Permite colocar un texto en el par coordenado x e y. Se repetirá el texto si x e y son vectores

Nota: legend ('leyenda 1','leyenda 2', ...) →añade la leyenda de eje, por cada serie de datos mostrada
legend off | toggle
legend(..., 'location',’posicion’)

Prof. Ing. Hernán Goin 15 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Posición
North = center top South = center bottom east = right center west = left center
northeast = right top (default) Northwest = left top Southeast = right bottom
southwest = left bottom Best = Menor conflict +Outside: Margen - Ej: BestOutside

El uso de caracteres especiales y modificadores está disponible por el Interprete establecido en 'tex'.
Símbol Símbol Símbol Símbol Símbol Símbol
Caracter Caracter Caracter Caracter Caracter Caracter
o o o o o o

\alpha α \pi \exists ∃ \upsilo υ \sim ~ \propto ∝


π
n
\angle ∠ \rho ρ \ni ∍ \phi \leq ≤ \partial ∂
\ast * \sigma σ \cong ≅ \chi χ \infty ∞ \bullet •
\beta β \varsigm
ς \approx ≈ \psi ψ \clubsuit ♣ \div ÷
a
\gamma γ \tau τ \Re ℜ \omega ω \diamondsuit ♦ \neq ≠
\delta δ \equiv ≡ \oplus ⊕ \Gamma Γ \heartsuit ♥ \aleph ℵ
\epsilon ɛ \Im ℑ \cup ∪ \Delta Δ \spadesuit ♠ \wp ℘
\zeta ζ \otimes \subsete ⊆ \Theta Θ \leftrightarro ↔ \oslash ∅
⊗ w
q
\eta η \cap ∩ \in ∈ \Lambda Λ \leftarrow ← \supseteq ⊇
\theta Θ \supset ⊃ \lceil ⌈ \Xi Ξ \Leftarrow ⇐ \subset ⊂
\varthet ϑ \int \cdot · \Pi Π \uparrow ↑ \o ο

a
\iota ι \rfloor ⌋ \neg ¬ \Sigma Σ \rightarrow → \nabla ∇
\kappa κ \lfloor \times x \Upsilo ϒ \Rightarrow ⇒ \ldots ...

n
\lambda λ \perp ⊥ \surd √ \Phi Φ \downarrow ↓ \prime ´
\mu µ \wedge ∧ \varpi ϖ \Psi Ψ \circ º \0 ∅
\nu ν \rceil ⌉ \rangle 〉 \Omega Ω \pm ± \mid |
\xi ξ \vee \langle 〈 \forall ∀ \geq ≥ \copyrigh ©

t

Modificadores Descripción Ejemplo

^{ } Superscript 'text^{superscript}'
_{ } Subscript 'text_{subscript}'
\bf Bold font '\bf text'
\it Italic font '\it text'
\sl Fuente Oblicua '\sl text'
\rm Normal font '\rm text'
\fontname{specifie Font name — especificar el nombre de la fuente. '\fontname{Courier}
r} text'
\fontsize{specifie Especifica el tamaño de la Fuente en unidades puntos '\fontsize{15} text'
r}
\color{specifier} Font color — Especificar color: red, '\color{magenta} text'
green, yellow,magenta, blue, black,white, gray,darkGreen,
orange, or lightBlue.
\color[rgb]{specif color de Fuente personalizado — RGB '\color[rgb]{0,0.5,0.5
ier} } text'

Los ejemplos a continuación ilustran el uso de algunas de estas funciones-

Prof. Ing. Hernán Goin 16 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Cabe destacar que el hecho de utilizar la función “plot(---)”, abre una ventana emergente, “Figura 1”con un par de
ejes cartesianos. Se podrán abrir, si uno desea, otras ventanas anteponiendo la instrucción: >>Figure n°

Gráfico 1:

Este primer ejemplo muestra una manera de graficar dos señales en un mismo par de ejes cartesianos,
colocando título general, escalado y etiquetas a los ejes haciendo uso de caracteres especiales(ω). Se ha
introducido una leyenda alusiva a las trazas, las cuales se ha modificado su color y estilo. Además se ha utilizado
la herramienta de la ventana de la figura “brush select/data”, para identificar un punto de interés en una de las
trazas.
Graficar las siguientes tensiones alternas en una mismaFigura, siendo: 𝑣1(𝜔.𝑡) = 10𝑣. sin(𝜔. 𝑡)
𝜋
𝑣1(𝜔.𝑡) = 5𝑣. sin (𝜔. 𝑡 + )
2

>> wt=[0:pi/100:2*pi]; % asigno a la variable independiente 201valoresen el rango de 0 a 2.pi


>> v1=10*sin(wt); % genero en un vector v1, (variable dependiente) para cada punto de wt
>> v2=5*sin(wt+pi/2); % genero en un vector v2, (variable dependiente) para cada punto de wt

>> plot (wt,v1,wt,v2); % grafico ambas funciones


>>grid on % activo grilla
>> title('Tensiones Alternas','fontsize',15, 'fontname','cambria','color',[1 0 1]) %Titulo . tamaño y tipo de letra - color
>> axis([0 6.28 -12 12]); %Escala de ambos ejes
>>xlabel('\bf\sl\color{blue}\omega .t'); %Etiquetq ele x
>> ylabel ('\bf\color{blue} v[volt]'); %Etiqueta eje Y
>> legend('v1','v2'); %leyenda arriba a la derecho x default

Otra forma de realizar dos trazas de funciones en una misma gráfica es haciendo uso de hol on y hold off.
>> v1=10*sin(wt);
>> plot(wt,v1)
 El gráfico se crea por etapas >>hold on % hasta hold off, grafica en la
 Es útil cuando los datos a dibujar >> v2=5*sin(wt+pi/2); misma figura
no están disponibles al mismo tiempo >> plot(wt,v1)
>> axis([0 6.28 -12 12]);
>>hold off

La función plot (x, y. ‘s’) admite el pasaje de argumentos, luego de x, y con las propiedades de la gráfica. Por ej:

>>plot(wt,v1,'-.b','LineWidth',2,'Marker','o','Markerindices',[51],'MarkerEdgeColor','r','MarkerFaceColor','k','MarkerSize',4)

Nótese el agregado de una marca de tamaño circular , en la posición de v1(52) del vector, de color rojo con
marco negro y tamaño 4. Esta herramienta sirve para identificar un punto en la traza. En este caso vmax.

Prof. Ing. Hernán Goin 17 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Gráfico 2:

Este segundo ejemplo ilustra como graficar dos señales de diferente magnitud, haciendo uso de la función
plotyy(----). La necesidad de establecer ejes de ordenadas, escalas y etiquetas diferentes para cada una de las
trazas mencionadas. La introducción de cambios de atributos al título, etiquetas y grilla.
Además se ha utilizado la función “gtext(….)”, la que permite colocar un texto en cualquier parte de la figura,
haciendo uso del ratón para su localización y de “text(---)” que añade un texto en el par coordenado.

Graficar la tensión y corriente en una misma figura, siendo: 𝑣1(𝜔.𝑡) = 10𝑣. sin(𝜔. 𝑡)
𝜋
𝑖2(𝜔.𝑡) = 5𝑚𝐴. sin (𝜔. 𝑡 + )
2
wt=[0:pi/100:2*pi];
v1=10*sin(wt);
i2=5*sin(wt+pi/2);
wt=[0:pi/100:2*pi];

[AX,H1,H2] =plotyy(wt,v1,wt,v2,'plot'); % el ultimo argumento se puede


axis(AX(2),[0 6.28 -10 10]);
axis(AX(1),[0 6.28 -12 12 ]);
H1.LineStyle = '--';
grid MINOR

xlabel(‘\bf\sl\color{blue}\omega .t’);
ylabel (AX(1),’\bf\color{blue} V[volt]’);
ylabel (AX(2),’\bf\color{blue} I[mA]’);
legend(‘v’,’I’,’Location’,’southwest’,’Orientation’,’horizontal’);
title(‘Tension y Corriente Alternas’,’fontsize’,15,’color’,[0 0 1],’fontname’,…
‘cambria’);

text(0.1,10,’Vmax’)
gtext(‘v1=10*sin(wt)’);

Prof. Ing. Hernán Goin 18 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Gráfico 3:

En ciertas circunstancias, es necesario incorporar varias gráficas en una misma Figura para establecer
comparaciones y comportamientos de diferentes puntos de vista de un sistema. Es decir, considerar distintas
variables del mismo.
Para tal fin es de suma utilidad la función “subplot (n ,b, p)”, en cuyo prototipo divide la figura actual en una
cuadrícula m por n y crea ejes en la posición especificada por p. MATLAB® numera las subtramas o posiciones
por fila. La primera subtrama es la primera columna de la primera fila, la segunda subtrama es la segunda
columna de la primera fila, y así sucesivamente. Si los ejes existen en la posición especificada, entonces este
comando hace que los ejes sean los ejes actuales.

A modo de ejemplo: Realizar las tensiones, corrientes y potencias sobre determinados elementos que componen
un circuito, siendo:
𝜋
𝑣1(𝜔.𝑡) = 10𝑣. sin(𝜔. 𝑡) 𝑖1(𝜔.𝑡) = 5𝑚𝐴. sin (𝜔. 𝑡 + )
2
𝜋 𝜋
𝑣2(𝜔.𝑡) = 8𝑣. sin (𝜔. 𝑡 + ) 𝑖2(𝜔.𝑡) = 15𝑚𝐴. sin (𝜔. 𝑡 + )
4 4

wt=[0:pi/100:2*pi];
v1=10*sin(wt);
v2=8*sin(wt+pi/4);
i1=5*sin(wt+pi/2);
i2=15*sin(wt+pi/4);
p1=v1.*i1;
p2=v2.*i2;

subplot(3,1,1)
hold on
plot(wt,v1,'-
.b','LineWidth',1.5,'Marker','o','Markerindices',[51],'MarkerEdgeColor','r','MarkerFaceColor'
,'k','MarkerSize',4)
plot(wt,v2,'--
k','LineWidth',1,'Marker','o','Markerindices',[25],'MarkerEdgeColor','r','MarkerFaceColor','k
','MarkerSize',4)

grid on
title('Tension Alternas','fontsize',11,'color',[0 0 1],'fontname','arial');
xlabel('\bf\sl\color{black}\omega .t','Fontsize',10);
ylabel ('\bf\color{black} V[volt]','Fontsize',10);
axis([0 6.28 -12 12]);
legend('v1','v2','Location','BestOutside');
text(0.1,10,'VMax')

subplot(3,1,2)
hold on
plot(wt,i1,'-.b','LineWidth',1.5)
plot(wt,i2,'--k','LineWidth',1)
grid on
title('Corrientes Alternas','fontsize',11,'color',[0 0 1],'fontname','arial');
xlabel('\bf\sl\color{black}\omega .t','Fontsize',10);
ylabel ('\bf\color{black} I[A]','Fontsize',10);
axis([0 6.28 -15 15]);
legend('i1','i2','Location','BestOutside');

subplot(3,1,3)
hold on
plot(wt,p1,'-.b','LineWidth',1.5)
plot(wt,p2,'--k','LineWidth',1)
grid minor
title('Potencia','fontsize',11,'color',[0 0 1],'fontname','arial');
xlabel('\bf\sl\color{black}\omega .t','Fontsize',10);
ylabel ('\bf\color{black} watt[w]','Fontsize',9);
axis([0 6.28 -40 150]);
legend('p1','p2','Location','BestOutside');

hold off

Prof. Ing. Hernán Goin 19 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

En la Figura adjunta se puede visualizar las tres gráficas pretendidas.


Se ha generado una cuadricula de tres filas y una columna, con la función “subplot( )”, donde en cada una de
ellas se insertó, mediante el uso de “plot( )”, la gráfica correspondiente de Tensión, corriente y potencia. Nótese
que la función de ésta última, surge como producto, elemento a elemento, de sendas matrices de tensión y
corriente.

También se ha utilizado las funciones hold on/ off, para superponer las trazas en cada una de las gráficas.
Otro detalles es el cambio de atributo en la leyenda, que la coloca fuera del plano gráfico.

Estos tres ejemplos desarrollados, solo muestran algunas de las herramientas disponibles.
Matlab, además, posee funciones para la realización de graficas en 3D e inclusive gráficas animadas.
Para más información, consulte la ayuda

En la primera gráfica se ha colocado sendas marcas en el valor máximo de cada señal. Para tal fin es necesario
conocer la posición en el vector de dicho par coordenado. Por tal motivo Matlab incorpora funciones que nos
permiten analizar los datos. Esto nos permitirá colocar marcas en valores característicos de la función.

Prof. Ing. Hernán Goin 20 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Análisis de datos

Analizar datos estadísticos en MATLAB es sencillo.


Se trata de funciones que operan con vectores. Si se aplican a matrices operan columna a columna. Permiten realizar análisis
sobre el conjunto de datos contenido en los vectores correspondientes, tales como calcular su valor mínimo, máximo, media,
mediana, desviación típica, suma de los elementos de dicho vector, etc. min, max, mean, median, std, sum, prod,etc.
Funciones para análisis de datos estadísticos

Función Ejemplo

Máximo y mínimo  max (x) : si x es vector encuentra el valor más grande, si x es matriz crea un vector que
max (x) contiene el elemento máximo de cada columna Devuelve la parte real de un complejo
min (x)  [a , b]=max (x): encuentra el valor más grande de x y su posición.
 max(x,y): si x y y tienen las mismas dimensiones devuelve una matriz cada entrada es el
máximo de las entradas correspondientes de x y y.
Si las entradas son complejas entonces hace uso del módulo para comparar y después el ángulo.
Además ignora los NaNs
De manera análoga ocurre con la función min
 range (x): Rango de los datos

Suma y Producto Con frecuencia es útil sumar todos los elementos en una matriz o multiplicar todos los elementos
cumsum(x) juntos.
cumprod(x)  cumsum(x) si x es vector devuelve un vector del mismo tamaño que x con las sumas
acumuladas, si x es matriz entonces calcula la suma acumulada de los elementos en cada
columna  cumprod(x) análoga a cumsum pero para el producto.

Ordenamiento  sort(x): Ordena los elementos de un vector x en orden ascendente u ordena los elementos en
cada columna de una matriz x en orden ascendente.
 sort (x, 'descend') Ordena en forma descendente y funciona de manera análoga a sort.
 sortrows(x) Ordena las filas en una matriz sobre la base de los valores en la primera columna.
 sortrows(x,n) Ordena las filas en una matriz sobre la base de los valores en la n-ésima
columna.
 Para determinar el tamaño de una matriz usamos : size y length
Media, Existen muchas formas de encontrar el valor “Medio” en un conjunto de datos.
moda  mean(x) En estadística, la media de un grupo de valores probablemente es lo que la mayoría
y llamaría el promedio: la suma de todos los valores, divididos por el número total de valores.
mediana  median(x): El otro tipo de promedio es la mediana, o el valor medio. Existe un número igual
de valores tanto más grandes como más pequeños que la mediana.
 mode(x): Por último tenemos a la moda que es el dato que más se repite.
Observaciones:
- Si x es un vector devuelve la media, mediana o moda del vector.
- Si x es matriz regresa un vector fila que contiene el valor medio, mediana o moda de
cada columna de una matriz x.
- Si x es una hipermatriz nos devuelve una matriz con las operaciones aplicadas por
columna. O podemos especificar en qué dimensión queremos que realice el análisis.
Varianza y desviación La desviación estándar y la varianza son medidas de cuánto varían los elementos de un conjunto
estándar de datos unos con respecto a otros.
Dos conjuntos de datos pueden tener el mismo valor promedio (media) , sin embargo, las
variaciones pueden ser muy distintas. Por lo general, mediciones como la desviación estándar y
la varianza son significativas sólo con grandes conjuntos de datos.
Para definir la desviación media y la varianza hacemos uso de la media:
2 2
∑𝑁
𝑘=1 𝑥𝑘 ∑𝑁
𝑘=1(𝑥𝑘−𝜇 ) ∑𝑁
𝑘=1(𝑥𝑘−𝜇 )
𝜇= 𝑁
𝜎2 = 𝑁−1
𝜎=√ 𝑁−1

 mean(x): Calcula la media aritmética o promedio


 median(x): Calcula la mediana
 mode(x): Calcula la moda de la muestra
 var(x,1): Calcula la varianza muestral de acuerdo a la definicion
 std (x,1): Calcula la desviación estándar muestral con la definición
 mad(x) Desviación absoluta respecto a la media

Prof. Ing. Hernán Goin 21 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Variables y funciones simbólicas.

Para la realización de cálculos de manera simbólica con Matlab, se deberán definir previamente los símbolos o
funciones con los que se operarán.
Con el comando “sym object”,se creará un tipo de dato del tipo objeto simbólico. A través de dicho comando
podré crear funciones simbólicas.
Con el comando “syms object”, podré crear variablessimbólicas.

Las variables o funciones definidas adquieren el tipo de objeto simbólico.


Con variables simbólicas se podrán hacer todo tipo de cálculo: matricial, diferencial, integral; así como también,
resolver ecuaciones diferenciales e inclusive obtener transformadas de Fourier, Laplace o Z

Ejemplos:

>> syms s
>> G1s=1/(s+1);
>> G2s=2*s/(s^2+2*s+1);
>> syms a t %defino a y t como “variables” simbólica >> Gs=G1s+G2s % suma defunciones simbolic
>> yt=a*t^2 % yt se convirtió en una función Gs=
simbólica 1/(s+1)+ 2*s/(s^2+2*s+1)
>>pretty (Gs)
yt =
1 2s
a*t^2 ----- + ------------
s + 1 s2 + 2 s + 1
>> pretty(yt) %le damos aspecto matemático
>>Gs=simplify (Gs) % expresar como división de
2 polinomio
at Gs =
(3*s + 1)/(s + 1)^2

>> pretty (Gs)


3s+1
--------
(s + 1)2

>>[num den]= numden(Gs) % num den son simbolic


>>

Prof. Ing. Hernán Goin 22 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Programando en Matlab

Matlab permite a la hora de programar una serie de operadores para la ejecución del flujo de una secuencia de
instrucciones. La sintaxis es parecida a la del lenguaje “C++”de programación. Todos estos operadores se
pueden usar tanto en la ventana de comandos, o en un archivo.m. para ser ejecutados y/o realizar “debbuger”

Archivos .m

Hasta ahora la forma de ejecutar sentencias fue ingresando c/u de ellas a través de la ventana de comandos >>
Pero esta forma de trabajo es repetitiva tediosa al momento de repetir un conjunto de sentencias de forma
repetitiva. Para ello, matlab puede ejecutar programas que se encuentren almacenados en archivos ASCII que
de extensión .m. Cabe aclarar que deben de estar guardados en el directorio de trabajo.
Hay dos tipos de archivo .m: script files y function files

Scripts

Para crearlos basta con hacer archivo->new->script


Los script, son archivos .m en los que se escriben secuencialmente comandos de matlab que se ejecutarán en
orden al introducir el nombre de archivos .m (sin extensión) desde la ventana de comando. La otra forma de
ejecutarlo es desde la ventana de script, haciendo click en el icono RUN desde la ventana. Además se podrán
colocar breakpoints (“marcas” en la línea donde quiero que se detenga su ejecución). Esto permitirá evaluar su
comportamiento en partes de mi programa. Este proceso se denomina depurar o “debugger.

Funciones

Son también archivos .m, pero a diferencia de los anteriores, se le pueden pasar argumentos y pueden devolver
resultados. Por tanto utilizan variables globales que se pasan por valor. La mayoría de los archivos contenidos
en los toolboxes son funciones.

La sintaxis de todas las funciones almacenadas en archivos .m es:

function [out1,out2,...] = nombre_fichero (in1,in2,...)

% Comentarios descriptivos de la función para el help


comandos de MATLAB

return;

Como se mencionó, una función puede tener múltiples argumentos de entrada y salida.

A modo de comentario, existen una serie de comandos útiles a la hora de programar en matlab.
Siendo alguna de ellas:

– pause: Para la ejecución hasta que se pulsa una tecla. También podrá ser usado para pausar la ejecución
durante un numero de segundos determinado, en lugar de esperar a que se pulse una tecla: pause(n).

– disp: Muestra una cadena de caracteres por pantalla.

– input: Muestra una cadena de caracteres por pantalla y espera a que el usuario introduzca un valor, que
generalmente será asignado a una variable.

Prof. Ing. Hernán Goin 23 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Operadores lógicos y relacionales

Los Operadores lógicos y relacionales permiten la comparación de escalares (o de matrices elemento a


elemento). Si el resultado de la comparación es verdadero, devuelven un 1, en caso contrario devuelven un 0.
Siendo los operadores elementales:

< menor que <= menor o igual == igual


> mayor que >= mayor o igual ∼= no igual

Es importante no dejar espacios entre los operadores formados por dos símbolos. Si los datos a comparar son
matrices, la comparación se hace elemento a elemento, devolviendo una matriz binaria.

Bucles y estructuras condicionales

Permiten programar una serie de operadores para la ejecución del flujo de una secuencia de instrucciones.

if - end => Salto condicional de flujo:

Los comandos entre if y end, se ejecutaran si la condición evaluada es verdad (uno). De caso contrario (falso), se
saltearan los comandos o ejecutará aquellos comandos bajo el else.

% evaluando una condición verdadera % evaluando condición verdadera/ falsa % evaluando múltiples condiciones

if condición if condición1 if condición1


comandos Comandos Comandos
end else elseif condición2
Comandos Comandos
end elseif condición3
Comandos
else
Comandos
end

En la condición a ser evaluada se utilizarán los operadores relacionales. (ej. de condición: if a<b )
No es necesario utilizar la condición alza (else). Así mismo, es posible realizar la evaluación de multiples
condiciones encadenadas.

for – end =>La sentencia for repite un conjunto de sentencias o comandos un número predeterminado de
veces.

%el formato es….. %los comandos se ejecutaran 10 veces, donde %bucles anidados. La variable j
donde vector es un el vector i contiene los elementos 1, 2,3,4----10. es la que varía más
vector con los Por cada ciclo del lazo se incrementa el índice rápidamente (por cada valor de
distintos valores que del vector i i, j toma todos sus posibles
tomará la variable i valores)
for i= vector for i= 1:10 for i=1:m
for j=1:n
Comandos Comandos sentencias
end
end end end

La sentencia for de MATLAB es muy diferente y no tiene la generalidad de la sentencia for de C/C++/Java.

Prof. Ing. Hernán Goin 24 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

while => Mientras que se cumpla la condición se ejecutarán los comandos dentro del bucle

%formato ….. %Mientras i sea menor que 10, se ejecutaran los


comandos
I=0;
while condición while i<10
comandos i++;
end end

Switch => Ejecuta un grupo determinado de sentencias, seleccionables en función de una variable o expresión
determinada

%formato …..se ejecutara solo el case si : % Mostrara textos diferentes de forma condiciona,
expression==valor es true dependiendo del valor ingresado por el símbolo del
sistema

switch expression %expresion de igualdad o escalar n= input ( ‘Ingrese un numero:’ );


case valor1 switch n
case -1
sentencias
disp ( ‘uno negativo’ );
case valor2
case 0
sentencias
disp ( ‘cero:’ );
case valor3
case 1
sentencias
disp ( ‘ uno positivo’ );
………………………
otherwise % si no es ningún caso; por
otherwise % por "default"
"default"
sentencias
disp ( ‘ otro numero’ );
end
end

Prof. Ing. Hernán Goin 25 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Transformada de Laplace

La transformada de Laplace resulta una herramienta indispensable en la resolución de ecuaciones diferenciales,


que reflejan el comportamiento de un sistema lineal y con condiciones iniciales nulas; tal como los abordados en
control clásico. Matlab contiene funciones para tal fin, así como también complementos o “toolboxes”.de control.

Transformada de Laplace Transformada inversa de Laplace

laplace ( f, t, s ) Calcula la transformada de Laplace de la >>syms t


expresión f = f (t) con respecto a la variable t en >> laplace (exp(-a*t)) ans= 1/(a + s)
el punto s.
Nótese que previamente se declaró la variable >>syms t
simbólica “t” a ser considerada en la >> laplace (exp(-a*t),t,0) ans= 1/ a
transformada
Como argumento de la función ‘ laplace’ se le
indica respecto de que variable simbólica deseo
transformar, ya que la función matemática f(t)
podrí contener otras variables simbólicas. Si se
omite dicho argumento, realiza la transformada
respecto de la única variable simbólica existente

ilaplace(fs) calcula la transformada de Laplace inversa, >>syms s


>>ilaplace(1/(s+1)) ans=exp(-t)

Nota: las funciones Pretty () y Simpliy() ; presenta el resultado utilizando la simbologia matematica simplificada
La función rewrite( ), reescribe la expression obtenida en función de de una expression determinada, de ser
possible.

Transformada de Laplace Transformada inversa de laplace

>> syms t >> syms s


>> ft= t >>cs = (s+1) / (s^2 +2*s + 1)
>> laplace (ft) >> ilaplace (cs)
ans = ans =

1/s^2 exp(-t)

Prof. Ing. Hernán Goin 26 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Función Transferencia

Una función de transferencia (“M(s)”) es un modelo matemático que a través de un cociente relaciona la
respuesta de un sistema (modelada), con una señal o estímulo de entrada. La misma puede ser expresada como
un cociente de polinomios como sumatoria de términos ordenados por su orden, o bien como la productoria de
su factorización (s-si)n, donde “si” son las singularidades o raíces del mismo y “n” el orden de multiplicidad de la
misma.

𝐶(𝑠) 𝑁𝑢𝑚 𝑏0 . 𝑠 𝑛 + 𝑏0 . 𝑠 𝑛 + … + 𝑏𝑛
𝑀(𝑠) = = = o
𝑅(𝑠) 𝐷𝑒𝑛 𝑎0 . 𝑠 𝑚 + 𝑎0 . 𝑠 𝑚 + … + 𝑎𝑚

∑𝑛0 𝑏𝑖. . 𝑠 𝑖 𝐾. ∏𝑛0(𝑠 − 𝑧𝑖 )


= =
∑𝑛0 𝑎𝑗. . 𝑠 𝑗 ∏𝑚
0 (𝑠 − 𝑝𝑖 )

10.𝑠+5 5.(𝑠+0.5)
Ejemplo: 𝑀(𝑠) = 2 = 𝑀(𝑠) = (𝑠+3.732)).(𝑠+0.2679)
2.𝑠 +8.𝑠+2

“La función de transferencia de un sistema lineal e invariante en el tiempo (LTI), se define como el cociente
entre la transformada de Laplace de la salida y la transformada de Laplace de la entrada, bajo la suposición de
que las condiciones iníciales son nulas.”

La función de transferencia puede ser considerada como la respuesta a una excitación impulsiva. (δ(s) = 1)

Las características de la función de transferencia dependen únicamente de las propiedades físicas de los
componentes del sistema, no de la señal de entrada aplicada
Por consiguiente, la función transferencia será expresada como cociente de dos polinomios en variable compleja
de Laplace (dominio de la frecuencia “s”).
El grado del polinomio del denominador será el orden del sistema y sus raíces se las denomina polos de
la función transferencia. Mientras que a las raíces del numerador se las denomina ceros.

 Las raíces del polinomio del numerador Num(S) son los ceros del sistema ( zi).
 Las raíces del polinomio del denominador Den(S) son los polos del sistema ( pj).
 El orden del sistema se corresponde con el grado del polinomio del denominador "Den(s)"
 El orden del polinomio del denominador debe ser mayor o igual al del numerador. m > n

Es posible representar en un plano complejo, el diagrama o constelación de polos y ceros, colocando:

"o" un círculo en las coordenadas del cero Zi


"x" una cruz en las coordenadas del polo pj
De ser un polo múltiple, se graficará de la forma " (X)n, donde "n" es el orden del polo.
K=? Ganancia del sistema

10.𝑠+5
Ejemplo: Dado la función transferencia como cociente de polinomios 𝑀(𝑠) =
2.𝑠2 +8.𝑠+2

Factorizando por sus singularidades y graficando el diagrama de polos ceros

5.(𝑠+0.5)
𝑀(𝑠) = (𝑠+3.732)).(𝑠+0.2679)

-Posee un cero en z1= -0.5


- polos complejos conjugados 𝑝1 = −3.732
𝑝2 = −0.2679
K=5

Prof. Ing. Hernán Goin 27 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Si se desea conocer la respuesta del sistema a una entrada del tipo escalón unitario, done R(s)= 1/s, bastaría
con hallar la c(t) , aplicando la transformada inversa de Laplace a la c(s)

1
Dónde: si r(t) = 1.u(t) => 𝑅(𝑠) = ℒ[𝑟(𝑡) ] =
𝑠

1 5.(𝑠+0.5)
𝐶(𝑠) = 𝑅(𝑠) . 𝑀(𝑠) = 𝑠 . (𝑠+3.732)).(𝑠+0.2679)

Su transformada inversa será:

𝑐(𝑡) = ℒ−1 [𝐶(𝑠) ] = [2.5 − 1.25. (𝑒 −0.2619.𝑡 + 𝑒 −3.732.𝑡 )]. 𝑢(𝑡)

Si graficamos el diagrama de polos y ceros de la M(s) y la respuesta al escalón c(t), hallada obtenemos:

j c

2.5

-3.732 -0.5 -0.268 σ

0 20
t

Para resolver lo analizado en el ejemplo con matlab, utilizaremos variables simbólicas para la confección de la
función a anti-transformar para luego graficarla

% con Matlab

>>syms s t % se declaran variables simbólicas

% Para declarar la función a aplicar la transformada inversa de Laplace C(s)


>>num=[10 5] % declaro un vector con los coeficientes del polinomio del numerador
num =
10 5

>>den=[2 8 2 ] % declaro un vector con los coeficientes del polinomio del numerador

>> roots(den) % si queremos conocer las raíces de num y den – utilizar la funcioón roots (num)

ans =

-3.7321
-0.2679

>> roots(num)

ans =

-0.5000

Prof. Ing. Hernán Goin 28 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

>>snum = poly2sym(num, s) % Obtengo el polinomio del numerador con ‘s’ como


%variable simbólica, guardando en snum
snum =

10*s + 5

>>sden = ((s)* poly2sym(den, s)) % Obtengo el polinomio del denominador con ‘s’ como
%variable simbólica. Nótese que se multiplico al mismo
sden = %por ‘s’ debido a la excitación del tipo escalón

s*(2*s^2 + 8*s + 2)

>>ct= ilaplace(snum/sden) % transformada inversa de Laplace

ct = %Nótese que el resultado obtenido, está en función


%del coseno hiperbólico
5/2 - (5*exp(-2*t)*cosh(3^(1/2)*t))/2

>>ct=rewrite(ct, 'exp') %la función rewrite, reescribe la expresión, en función de

ct = %exponenciales
5/2 - (5*exp(-2*t)*(exp(3^(1/2)*t)/2 + exp(-3^(1/2)*t)/2))/2

>>simplify (ct)
ans=

5/2 - (5*exp(-t*(3^(1/2) + 2)))/4 - (5*exp(t*(3^(1/2) - 2)))/4

>>pretty(ct) %la presenta en formato matemático amigable

ans=
/ exp(sqrt(3) t) exp(-sqrt(3) t) \
exp(-2 t) | -------------- + --------------- | 5
5 \ 2 2 /
- - ------------------------------------------------
2 2
>>deno=roots(den)
>>nume=roots(num)
>>hold on
>>plot(real(deno),imag(deno),'x','LineWidth',1.5) %grafica polos y ceros
>>plot(real(nume),imag(nume),'o','LineWidth',1.5)
>>hold off
>>figure
>>ezplot(ct,[0,20,0,3]) %grafica la función simbólica obtenida

Prof. Ing. Hernán Goin 29 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Matlab Control Toolbox

Matlab contiene un “toolbox” con una cantidad de funciones dedicadas al análisis de sistemas de control, que
nos facilitan la labor de la especialidad.

Características principales

 Modelos de función de transferencia, de espacio de estados, de ceros, polos y ganancia, y de respuesta en


frecuencia de sistemas lineales
 Diagramas de respuesta escalón, diagramas Nyquist y otras herramientas del dominio del tiempo y del
dominio de la frecuencia para analizar la estabilidad y el rendimiento
 Ajuste automático de sistemas de control PID, de ganancia programada y SISO/MIMO arbitrarios
 Diagramas del lugar geométrico de las raíces, diagramas de Bode, LQR, LQG y otras técnicas de diseño
clásicas y de espacio de estados
 Conversión entre representaciones de modelos, discretización de modelos de tiempo continuo y
aproximaciones de orden bajo de los sistemas de orden alto.

Algunas de las funciones son:

 tf : Se utiliza tf para crear modelos de función de transferencia de valor real o complejo, o para
convertir modelos de sistema dinámicos a forma de transferencia de función.

Las funciones de transferencia son una representación en el dominio de la frecuencia de sistemas


lineales invariantes en el tiempo.
Por ejemplo, considere un sistema dinámico SISO de tiempo continuo representado por la función de
transferencia sys(s) = N(s)/D(s), donde s = jw y N(s)y D(s)se denominan numerador y
denominador polinomios, respectivamente. El tf objeto modelo puede representar las funciones de
transferencia SISO o MIMO en tiempo continuo o discreto.

Sintaxis
sys = tf(numerator,denominator) %para tiempo continuo
sys = tf(numerator,denominator,ts) %para tiempo discreto donde ts es tiempo de muestra

s = tf('s')crea una variable especial s que puede usar en una expresión racional para crear un
modelo de función de transferencia de tiempo continuo. Usar una expresión racional a veces puede ser
más fácil e intuitivo que especificar coeficientes polinomiales.

z = tf('z',ts)crea una variable especial zque puede usar en una expresión racional para crear un
modelo de función de transferencia de tiempo discreto. Para dejar el tiempo de muestreo sin especificar,
establezca tsel argumento de entrada en -1.

Prof. Ing. Hernán Goin 30 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Funciones del objeto


Las siguientes listas contienen un subconjunto representativo de las funciones que puede usar con
los tf modelos.

ANALISIS LINEAL
Paso de la trama de respuesta del sistema dinámico; datos de respuesta a paso

step step(sys,Tfinal) => Simula la respuesta al escalón desde t = 0 a t = Tfinal.


Expresar Tfinalen las unidades de tiempo del sistema, especificadas
en TimeUnitpropiedad de sys
Gráfico de respuesta al impulso del sistema dinámico; datos de respuesta al
impulse
impulso
lsim Simular la respuesta de tiempo del sistema dinámico a entradas arbitrarias
bode Diagrama de Bode de la respuesta de frecuencia, o datos de magnitud y fase
nyquist Diagrama de Nyquist de respuesta de frecuencia
nichols Carta de Nichols de respuesta en frecuencia
bandwidth Ancho de banda de respuesta de frecuencia

ANALISIS de ESTABILIDAD
pole Polos del sistema dinámico
zero Ceros y ganancia del sistema dinámico SISO
Gráfico de polo cero del modelo de sistema dinámico con opciones de
pzplot personalización de trazado
margin Margen de ganancia, margen de fase y frecuencias de cruce

TRANSFORMACION del MODELO


Crear modelo de ganancia de polo cero; convertir al modelo de ganancia de polo
zpk
cero
ss Crear modelo de espacio de estado, convertir a modelo de espacio de estado
c2d Convertir el modelo de continuo a tiempo discreto
d2c Convertir el modelo de tiempo discreto a continuo
d2d Volver a muestrear el modelo de tiempo discreto

MODELO de INTERCONEXION
feedback Conexión de retroalimentación de dos modelos.
connect Diagrama de bloques de interconexiones de sistemas dinámicos.
series Conexión serie de dos modelos.

parallel Conexión paralela de dos modelos.

DISEÑO DEL CONTROLADOR


pidtune Algoritmo de ajuste PID para modelo de planta lineal
Diagrama de locus de la raíz del sistema dinámico. Cabe aclarar que en un sistema
rlocus realimentado, para hallar el lugar de raíces, la sintaxis es: rlocus(gh); donde gh es la
ganancia a lazo abierto
lqr Diseño de regulador lineal-cuadrático (LQR)

lqi Diseño lineal-cuadrático-gaussiano (LQG)


lqg Control lineal-cuadrático-integral
kalman Diseño de filtro de Kalman, estimador de Kalman.

https://la.mathworks.com/help/control/ref/tf.html?s_tid=srchtitle

Prof. Ing. Hernán Goin 31 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Con el fin de ilustrar la utilización de algunas de estas funciones, veamos el siguiente ejemplo:

10.𝑠+5
Dado la función transferencia como cociente de polinomios 𝑀(𝑠) =
2.𝑠2 +4.𝑠+8 j

10.(𝑠+0.5)
Factorizado por sus singularidades 𝑀(𝑠) = 2.(𝑠+1−𝑗√3)).(𝑠+1+𝑗√3) √3

- Posee un cero en z1= -1


- polos complejos conjugados 𝑝1 = −1 + 𝑗√3 -1 -0.5 σ
𝑝2 = −1 − 𝑗√3

% con Matlab

>> num=[10 5]; %declaro un vector con los coeficientes del polinomio del numerador
>> den=[2 8 2]; %declaro de forma análoga los coeficientes del denominador
>> ms=tf (num,den) %Obtengo la función transferencia como objeto de sistema

ms =

10 s + 5
---------------
2 s^2 + 8 s + 2

Continuous-time transfer function.

>> pole(ms) %se podrán obtener los polos los ceros de nuestra función transferencia,
ans = %mediante las funciones pole() , zero()
%también se podrán obtener hallando las raíces del numerador y
-1.0000 + 1.7321i %denominador con la función:
-1.0000 - 1.7321i % roots( num) y roots (den); ya que se trata de las raíces de polinomios

>> zero(ms)

ans =

-0.5000

>> zpk(ms) %También se podrá obtener la unción transferencia factorizada por la


%productoria con zpk(ms)
ans =
%Nota: Si las singularidades son complejas, dejara expresado el polinomio
5 (s+0.5)
------------------
(s^2 + 2s + 4)

Continuous-time zero/pole/gain model.

% Gráficos

>>grid on

>>subplot(2,2,1)
>>pzplot(ms) %Diagrama de polos y ceros de M(s)

Prof. Ing. Hernán Goin 32 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

>>subplot(2,2,2)
>>step(ms) %Respuesta al escalón
>>stepinfo(ms) %información de la respuesta al escalón
ans =

RiseTime: 0.1118
SettlingTime: 4.7828
SettlingMin: 0.4507
SettlingMax: 1.6950
Overshoot: 171.2078
Undershoot: 0
Peak: 1.6950
PeakTime: 0.7368

>>subplot(2,2,3) %Diagrama de bode


>>bode(ms)

>>subplot(2,2,4) %Diagrama de Nyquist


>>nyquist(ms)

Prof. Ing. Hernán Goin 33 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Matlab Simulink

Simulink es un entorno de programación visual, que funciona sobre el entorno de programación Matlab.
Es un entorno de programación de más alto nivel de abstracción que el lenguaje interpretado Matlab (archivos
con extensión .m). Simulink genera archivos con extensión .mdl (de "model").
En las imágenes, se puede apreciar el diagrama en bloques de un rádar, en el cual se muestra que uno de sus
bloques de procesamiento de señal, es un filtro Kalman realizado en un script de Matlab.
Luego, se puede apreciar un sistema de control automático, junto a su modelización y finalmente un sistema de
un automóvil, vinculando la simulación a un entorno de realidad virtual.

Simulink viene a ser una herramienta de simulación de modelos o sistemas, con cierto grado de abstracción de
los fenómenos físicos involucrados en los mismos.
Es ampliamente usado en ingeniería electrónica en temas relacionados con el procesamiento digital de
señales (DSP), involucrando temas específicos de ingeniería biomédica, telecomunicaciones, entre otros.
También es muy utilizado en ingeniería de control y robótica.
Con el correr de los años se han incorporado herramientas vinculadas al negocio de finanzas, ya que
básicamente se desarrollan representaciones de modelos vinculados a comportamientos matemáticos.

Es un entorno de diagrama de bloques para la simulación multidominio y diseño basado en modelos. Es


compatible con el diseño a nivel de sistema, la simulación, la generación automática de código y la prueba y
verificación continua de sistemas integrados.

Simulink proporciona un editor gráfico, bibliotecas de bloques personalizables y solucionadores para modelar y
simular sistemas dinámicos. Se integra con MATLAB ® , lo que le permite incorporar los algoritmos de MATLAB
en modelos y exportar los resultados de simulación a MATLAB para su posterior análisis.

Se lo puede abrir desde línea de comandos de Matlab “>>simulink” o bien a través del icono asociado en la
barra de herramientas.

Las imágenes muestran el entorno de simulink abierto desde de Matlab. La ventana de la derecha inicialmente
presenta un documento en blanco, sobre el cual se arrastrarán los diferentes bloques de mi sistema que serán
tomados desde la biblioteca nativa del entorno. El diagrama o modelo confeccionado, deberá guardarse en la
carpeta de trabajo (archivo de extensión .slx o .mdl ),

Prof. Ing. Hernán Goin 34 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Al desplegarse el explorador de biblioteca (library brouser), se podrá observar que las herramientas están
divididas por aplicaciones de las diferentes especialidades de ingeniería. Existen un sinnúmero de bibliotecas
asociadas a simulink. En este apartado, sólo se hará mención de las prestaciones de la biblioteca “simulink
“nativa para la construcción de modelos de sistemas de control de procesos y a “Instrument control toolbox”, para
una posterior adquisición y análisis de datos en “tiempo real”. En particular, en simulink, inicialmente haremos
uso de: Commonly used blocks, Continuos, Math operations, Signal Routing, Sinks, Sources.

A modo meramente ilustrativo; supongamos tener un diagrama de bloques e un sistema realimentado


unitariamente

Prof. Ing. Hernán Goin 35 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

En este ejemplo ilustrado, se pretende realizar un diagrama de


bloques de un sistema de primer orden realimentado negativamente
unitariamente, de forma de analizar el comportamiento debido a una
excitación del tipo escalón unitario. Para ello visualizaremos en un
osciloscopio, la señal de entrada de excitación del sistema y la
respuesta a la misma por parte del sistema.
Los bloques incorporados, son arrastrados desde las bibliotecas y
configurados sus parámetros haciendo “doble click” sobre el mismo.
Luego se simulará, haciendo click sobre “Play” desde la barra de
herramientas. Finalizada la simulación, hacer doble click sobre el
osciloscopio

Prof. Ing. Hernán Goin 36 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Parámetros de simulación y bloque Scope

Los parámetros de la simulación se pueden modificar desde la barra de menú con Simulation-> Configuration
parameters.

 Ejecutar un modelo Simulink desde la ventana de comandos

Función sim: También es posible ejecutar un modelo Simulink desde la ventana de comandos o desde un fichero
M. La instrucción es sim. En nuestro ejemplo:

>>sim('untitled')

 Interacción con el workspace de MATLAB:

Desde un modelo SIMULINK, es posible usar funciones *.m, *.mat y variables del workspace de MATLAB. Los
bloques relacionados son los bloques From File, From Workspace (en la librería Sources), To File, To WorkSpace
(en la librería Sinks) y MATLAB Fcn (en la librería Functions & Tables). También es posible poner nombres de
variables del workspace dentro del modelo Simulink.

Prof. Ing. Hernán Goin 37 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Por ejemplo:Si un modelo Simulink con variables del workspace (a y Tfin)

Antes de ejecutar el modelo, estas variables deben tener asignado un valor:


>>a=0.5;
Tfin=10;
>>sim('untitled')

 Model Explorer: Esta utilidad se abre al clicar en el icono de la ventana de modelo. En concreto, el objeto Base
Workspace contiene las variables a las que pueden acceder todos los modelos Simulink.

Prof. Ing. Hernán Goin 38 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Bloque scope.

Es posible obtener los datos fruto de la simulación del scope, para ser accesibles desde el workspace. Entrando
desde la barra de menú del scope,acceder a view-> configuration properties. Seleccionar log data to workspace

Al simular la variable con las muestras de la simulación, estará disponible en el workspace para ser procesada
La opción Save data to workspace permite guardar en el workspace los valores representados en el Scope.
Hay tres formatos posibles: Structure with time, Structure y Array.

Formato Structure with time: Una vez realizada la simulación en Simulink, si el formato elegido es Structure with
Time, podemos comprobar que en el workspace de Matlab aparecen dos nuevas variables

La variable ScopeData es una estructura (struct array). Para ver su contenido, basta con hacer:

>> ScopeData

ScopeData =
time: [53x1 double]
signals: [1x1 struct]
blockName: 'untitled/Scope'

'time', 'signals' y 'blockName' son los tres campos (fields) que componen la estructura (struct) ScopeData.
Vemos que el campo 'signals' es, a su vez, otra estructura.

- Funciones fieldnames, isfield, getfield: Es posible consultar qué campos tiene ScopeData con ayuda de
fieldnames (esta función guarda el resultado en un cell array)

Prof. Ing. Hernán Goin 39 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

>> nombres=fieldnames(ScopeData)
nombres =
'time' 'signals'
'blockName'

También se puede ver si un determinado campo forma parte de una estructura: isfield(ScopeData,
'time'). Hay dos maneras de acceder al contenido de los campos. Una es mediante “puntos” y la otra
mediante la función
getfield: >> ScopeData.signals
ans =
values: [53x1 double]
dimensions: 1
label: ''
title: 'Respuesta indicial'
plotStyle: 0

>> ScopeData.signals.dimensions
ans =
1
>> y=getfield(ScopeData,'signals')

y=
values: [53x1 double]

Así, al representar los datos, podemos ver que las instrucciones son equivalentes:

y1=getfield(ScopeData,'signals','values');
y2=ScopeData.signals.values;
plot(tout,y1,tout,y2,'--')

Formato Structure: Si en el Scope se selecciona el formato Structure, en el Workspace aparecen las variables
ScopeData y tout, pero la diferencia con el formato anterior (Structure with time) es que el campo time de
ScopeData ahora está vacío.

Otra forma de ver el contenido de las variables es accediendo a través del workspace de la ventana principal de
matlab, e ingresando en las propiedades de cada una de las variables en cuestión.

Prof. Ing. Hernán Goin 40 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Subsistemas y máscaras

Creación de subsistemas: Es posible agrupar diversos bloques para crear subsistemas. Para ello basta con
seleccionar con el mouse todos los bloques de interés.

Una vez seleccionados, acceder a la creación del mismo a través de la barra de herramientas Diagram->
Subsystem & Model reference

Vemos como quedo conformado nuestro bloque SISO. Notar que automáticamente se crean, rotulan y numeran
los puertos de entrada y salida del submodelo y que, al hacer doble clic sobre el bloque subsistema, se abre una
nueva ventana de modelo que lo contiene:
Para volver hacia atrás, con las flechas del menú de herramientas de acceso rápido.

Además podrá adicionarle una máscara o imagen al bloque de identificación, como así también renonmbrarlo
por su función. Suponiendo que se tratase de un filtro, será:

Máscaras: Una vez creado un subsistema es posible personalizarlo. El editor de máscaras que se abre al hacer
Edit  Mask Subsystem… permite personalizar el icono del subsistema, poner unos comentarios de ayuda e
introducir, en su caso (normalmente en Funciones S), los valores de los parámetros necesarios; como así
también renonmbrarlo por su función.

Prof. Ing. Hernán Goin 41 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Haciendo click, con el botón derecho sobre el bloque del subsistema, seleccionar “mask”-> Add to image y
asociarla a la imagen. Suponiendo que el subsistema se tratase de un filtro:

Prof. Ing. Hernán Goin 42 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Vínculo entre Simulink & entorno base de Matlab

Es posible vincular un diagrama de bloques realizado en Simulink con Matlab, de forma de aprovechar las
potencialidades del entorno que me posibilita el desarrollo de algoritmos de análisis de sistemas expresados
como diagrama de bloques.
Para ello se utilizan Puertos de entrada y salida del diagrama, que me permitan capturar los datos.

 Bloque Outport

Bloquea las señales de enlace de un sistema a un destino fuera del sistema. Pueden conectar señales
que fluyen desde un subsistema a otras partes del modelo. También pueden suministrar salidas externas
en el nivel superior de una jerarquía de modelos.
El software Simulink ® asigna números de puerto de bloque de Outport de acuerdo con estas reglas:
 Enumera automáticamente los bloques de Outport dentro de un sistema o subsistema de nivel raíz,
comenzando con 1.
 Si agrega un bloque de Outport , se le asigna el siguiente número disponible.
 Si elimina un bloque de Outport , otros números de puerto se renumeran automáticamente para
garantizar que los bloques de Outport estén en secuencia y que no se omita ningún número.

Los bloques de salida en un subsistema representan salidas del subsistema. Una señal que llega a
un bloque de Outport en un subsistema fluye fuera del puerto de salida asociado en ese bloque de
subsistema. El bloque Outport asociado con un puerto de salida es el bloque cuyo parámetro de número
de puerto coincide con la posición relativa del puerto de salida en el bloque del subsistema. Por ejemplo,
el bloque Outport cuyo parámetro de número de puerto es 1enviar su señal al bloque conectado al
puerto de salida más alto en elbloque del subsistema .
Si vuelve a numerar el número de puerto de un bloque de Outport , el bloque se conecta a un puerto de
salida diferente. El bloque continúa enviando la señal al mismo bloque fuera del subsistema.

 Bloque Import

Inport bloquea los enlaces que envían señales desde fuera de un sistema al sistema.
El software Simulink ® asigna números de puerto de bloque Inport de acuerdo con estas reglas:
 Numera automáticamente los bloques de Inport dentro de un sistema o subsistema de nivel superior,
comenzando con 1.
 Si agrega un bloque de Inport , la etiqueta es el siguiente número disponible.
 Si elimina un bloque de Inport , otros números de puerto se renumeran automáticamente para
garantizar que los bloques de Inport estén en secuencia y que no se omita ningún número.
 Si copia un bloque de Inport en un sistema, su número de puerto no se vuelve a numerar a menos
que su número actual entre en conflicto con un inport que ya se encuentre en el sistema. Si el número
de puerto de Inport Block copiado no está en secuencia, renumerar el bloque. De lo contrario,
aparece un mensaje de error cuando ejecuta la simulación o actualiza el diagrama de bloques.

 Función linmod

linmod calcula un modelo lineal de espacio de estado linealizando cada bloque en un modelo
individualmente.
linmodobtiene modelos lineales a partir de sistemas de ecuaciones diferenciales ordinarias descritos
como modelos de Simulink. Las entradas y salidas se indican en los diagramas de bloques de Simulink
utilizando los bloques de Inport y Outport.
[num, den] = linmod('sys', x, u) devuelve el modelo linealizado en forma de función de transferencia

Prof. Ing. Hernán Goin 43 / 44


Sistemas de Control de Procesos
Introducción al uso de MatLab

Conociendo estos bloques, me permitirá vincular Simulink & el espacio de trabajo de Matlab:

A) En Simulink

Realizar el diagrama de bloques colocando bloque en la entrada y salida – in1 y out1 – que se
encuentran en la librería sources y sink respectivamente.
Luego guardarlo, por ejemplo: “mymodel.mdl”

B) Entorno de Matlab

>> [num , den ] = linmod (‘mymodel’) ; % Obtengo numerador y den.

>>ms = tf (num , den) % Obtengo la F.Transferencia

Nota: El archivo correspondiente al modelo debe estar guardado en el directorio de trabajo

Prof. Ing. Hernán Goin 44 / 44

También podría gustarte