Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Í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
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”
- 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.
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
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.
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
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
También puede modificarse el formato de visualización a través de las opciones de menú: File/Preferences/General
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
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.
Asignación de variables
>> 4 ans = 5
>> 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.
>> 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.
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:
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
A los operadores básicos se agregan los siguientes operadores para matrices o arrays:
– 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
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:
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
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 :
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).
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 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.
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.
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.
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.
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’)
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
^{ } 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'
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
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.
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];
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)’);
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
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.
Análisis de datos
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
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.
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
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
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.
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).
– input: Muestra una cadena de caracteres por pantalla y espera a que el usuario introduzca un valor, que
generalmente será asignado a una variable.
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.
Permiten programar una serie de operadores para la ejecución del flujo de una secuencia de instrucciones.
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
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.
while => Mientras que se cumpla la condición se ejecutarán los comandos dentro del bucle
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
Transformada de Laplace
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.
1/s^2 exp(-t)
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 . 𝑠 𝑚 + … + 𝑎𝑚
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
10.𝑠+5
Ejemplo: Dado la función transferencia como cociente de polinomios 𝑀(𝑠) =
2.𝑠2 +8.𝑠+2
5.(𝑠+0.5)
𝑀(𝑠) = (𝑠+3.732)).(𝑠+0.2679)
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)
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
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
>>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
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 = %exponenciales
5/2 - (5*exp(-2*t)*(exp(3^(1/2)*t)/2 + exp(-3^(1/2)*t)/2))/2
>>simplify (ct)
ans=
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
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
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.
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.
ANALISIS LINEAL
Paso de la trama de respuesta del sistema dinámico; datos de respuesta a paso
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
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.
https://la.mathworks.com/help/control/ref/tf.html?s_tid=srchtitle
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
% 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
>> 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
% Gráficos
>>grid on
>>subplot(2,2,1)
>>pzplot(ms) %Diagrama de polos y ceros de M(s)
>>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
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.
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 ),
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.
Los parámetros de la simulación se pueden modificar desde la barra de menú con Simulation-> Configuration
parameters.
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')
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.
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.
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)
>> 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.
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.
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:
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
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