Upload
independent
View
9
Download
0
Embed Size (px)
Citation preview
Introducción a Matlab
Departamento de Electrónica - Universidad de Alcalá
Introducción a Matlab
Índice
� Introducción� Primeros pasos� Programación en Matlab� Control System Toolbox� Simulink� Ejercicios
Introducción a Matlab
Índice
� Introducción� ¿Qué es Matlab?� Entorno de Desarrollo� Ayuda y documentación
� Primeros pasos� Programación en Matlab� Control System Toolbox� Simulink� Ejercicios
Introducción a Matlab
Introducción¿Qué es MATLAB?
� MATrix LABoratory: lenguaje de programación para computación técnica
� Consiste en diferentes elementos:� Lenguaje de programación de alto nivel� Herramientas del entorno de desarrollo� Librería de funciones matemáticas desde las más básicas a otras
más complejas� Gráficos 2D, 3D y GUIs� Interfaces externos (C y Fortrand)
� Simulink� Múltiples librerías (Simulink, SimPowerSystem)
� Paquetes de funciones especializadas � Control system toolbox� Symbolic math toolbox
Introducción a Matlab
IntroducciónEntorno de desarrollo � Facilita el uso de las diferentes funciones de MATLAB� Elementos del “Matlab Desktop” (pueden cambiar su posición)
� Otras herramientas: debugger, analizador de código, navegador de ayuda, etc.
Workspace
Directorio actual
Editor
Ventana de comandos
Los ficheros que contienen scripts o funciones de Matlab deben llevar la
extensión .m
Introducción a Matlab
IntroducciónAyuda y documentación
� Ayuda de Matlab� Ventana de comandos: >>help [nombreFunc] o >>lookfor [nombreFunc]
Llamada a la ayuda de la función
Información y ejemplos de uso
Tipos de datos que soporta
Funciones relacionadas
Introducción a Matlab
IntroducciónAyuda y documentación
� Ayuda de Matlab� Ventana de comandos: >>help [nombreFunc] o >>lookfor [nombreFunc]� Navegador de ayuda (abrir pulsando “F1”)
Nombre de la función
Información y ejemplos de uso
Funciones relacionadas
Introducción a Matlab
IntroducciónAyuda y documentación
� Ayuda de Matlab� Ventana de comandos: >>help [nombreFunc] o >>lookfor [nombreFunc]
� Navegador de ayuda (abrir pulsando “F1”)
� Matlab Getting Started Guide� disponible para su descarga a través del navegador de ayuda (.pdf)
� Numerosos documentos disponibles en Internet
Introducción a Matlab
Índice� Introducción
� Primeros pasos� Representación de datos� Operaciones aritméticas� Operaciones lógicas y relacionales� Representación de gráficos
� Programación en Matlab� Control System Toolbox� Simulink
Introducción a Matlab
Primeros pasosRepresentación de datos
� Datos en forma de matrices (array rectangular de números)� Matrices: dimensión mxn
� Escalares: dimensión 1x1� Vectores: dimensión 1xn (vector fila) o mx1 (vector columna)
� Definición de matrices y vectores
Introducción a Matlab
Primeros pasosRepresentación de datos
� Datos en forma de matrices (array rectangular de números)� Matrices: dimensión mxn
� Escalares: dimensión 1x1� Vectores: dimensión 1xn (vector fila) o mx1 (vector columna)
� Definición de matrices y vectores� Acceso a los elementos de una matriz o vector
� Índices que indican la fila y columna del elemento� Los índices empiezan en 1!
� “:” indican todos los elementos de la fila/columna
Introducción a Matlab
Primeros pasosRepresentación de datos
� Datos en forma de matrices (array rectangular de números)� Matrices: dimensión mxn
� Escalares: dimensión 1x1� Vectores: dimensión 1xn (vector fila) o mx1 (vector columna)
� Definición de matrices y vectores� Acceso a los elementos de una matriz o vector
� Índices que indican la fila y columna del elemento� Los índices empiezan en 1!
� Notación “:” � inicio:paso:fin
� Matrices especiales:� Matriz de ceros: zeros(m,n)� Matriz de unos: ones(m,n)� Matriz identidad: eye(m,n)
Introducción a Matlab
Primeros pasosOperaciones aritméticas
� Operan sobre matrices, vectores o escalares� Si se pone un ‘.’ la operación se realiza elemento a elemento
Producto matricial (con B transpuesta)
Producto elemento a elemento
Introducción a Matlab
Primeros pasosOperaciones lógicas y relacionales
� Operan sobre matrices, vectores o escalares� En caso de matrices o vectores, la operación se hace elemento a
elemento, devolviendo una matriz/vector binario
Introducción a Matlab
Primeros pasosRepresentación de gráficos
� Múltiples funciones para la representación de vectores y matrices � en 2D (plot, stem, semilogx, semilogy, loglog, etc) � y 3D (mesh, surf, etc)
� Posibilidad de editar las figuras creadas� añadir títulos (title) , etiquetar los ejes (xlabel, ylabel), incorporar
leyendas (legend)…� modificar los colores, añadir/eliminar gráficas, etc.
� Ejemplos� 2D� 3D
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
010
2030
4050
0
20
40
60-10
-5
0
5
10
Introducción a Matlab
Primeros pasosRepresentación de gráficos
� Múltiples funciones para la representación de vectores y matrices en 2D: plot, stem, semilogx, semilogy, loglog, etc
� Función básica de representación:� plot([X],Y,[LineSpec],[’PropertyName’],[‘PropertyValue’],…);
� Y � valores a representar � LineSpec � color y formato de la línea y los markers (ej. ‘.-xk’)
� Otras propiedades:� ‘LineWidth’: grosor de la línea� ‘MarkerSize’: tamaño de los markers
� ‘MarkerEdgeColor’, ‘MarkerFaceColor’: color(es) de los markers
� Etc.
� Múltiples funciones para la representación de vectores y matrices en 2D: plot, stem, semilogx, semilogy, loglog, etc
� Función básica de representación:� plot([X],Y,[LineSpec],[’PropertyName’],[‘PropertyValue’],…);
� Ejemplo:
>>X = linspace(0,2*pi,200); >>Y = sin(X.^2);>>figure(1); >>subplot(2,2,1); >>plot(X,Y); >>subplot(2,2,2); >>plot(X,Y,'--r');>>subplot(2,2,3); >>plot(X,Y,'-og','LineWidth',2);>>subplot(2,2,4); >>plot(X,Y,'-^k','LineWidth',2,'MarkerSize',12);
0 2 4 6 8-1
-0.5
0
0.5
1
0 2 4 6 8-1
-0.5
0
0.5
1
0 2 4 6 8-1
-0.5
0
0.5
1
0 2 4 6 8-1
-0.5
0
0.5
1
Introducción a Matlab
Primeros pasosRepresentación de gráficos
Introducción a Matlab
Primeros pasosRepresentación de gráficos
� Múltiples funciones para la representación de vectores y matrices en 3D:� Representación de rejillas: mesh(Z), mesh(X,Y,Z,[C]);� Representación de superficies: surf(Z), surf(X,Y,Z,[C]);� Ambas admiten pares: ‘PropertyName’, ‘PropertyValue’
� Ejemplo:>>Z = peaks;>>figure(1); >>mesh(Z);>>figure(2);>>surf(Z);
010
2030
4050
0
20
40
60-10
-5
0
5
10
010
2030
4050
0
20
40
60-10
-5
0
5
10
Introducción a Matlab
Primeros pasosRepresentación de gráficos
� Diferentes comandos para editar las figuras creadas:� añadir títulos (title) , � etiquetar los ejes (xlabel, ylabel), � incorporar leyendas (legend)…� modificar los colores (colormap)� modificar las escalas de los ejes: (axis), etc.
� También pueden utilizarse las herramientas gráficas:
Introducción a Matlab
Índice� Introducción� Primeros pasos
� Programación en Matlab� Sentencias de control� Funciones y scripts (ficheros .m)� Medida de tiempos de ejecución� Depuración de código
� Control System Toolbox� Simulink� Ejercicios
Introducción a Matlab
Programación en MatlabSentencias de Control� Control de flujo del programa
� Tanto en los ficheros .m como en la línea de comandos� No es necesario poner llaves {} � importante tabular correctamente� Finalizan con la sentencia end
� Control condicional: if-elseif-else, switch-case
� Control de bucles: for, while, continue, break
� Finalización de programas: return
� Funciones:� Comienzan con la palabra function
� El fichero .m puede incluir otras funciones� Al finalizar su ejecución las variables locales se eliminan
� Scripts� El fichero .m incluye sólo el código del script� Al finalizar su ejecución las variables permanecen en el workspace
� Ejemplo
Introducción a Matlab
Programación en MatlabFunciones y scripts (ficheros .m)
� Diferentes funciones de medida de tiempo en Matlab� cputime, clock, tic-toc
� Permiten el análisis del rendimiento de programas� Se recomienda el uso de tic-toc frente a cputime (puede inducir a
errores en algunas arquitecturas)
� Ejemplo: obtención y representación del tiempo consumido en elcálculo de los autovalores y autovectores de una matriz en función desu tamaño
Introducción a Matlab
Programación en MatlabMedida de tiempos de ejecución
20 25 30 35 40 45 500.5
1
1.5
2
2.5
3
3.5
4
4.5
5
5.5x 10
-3
Dimensión de la matrizT
iem
po (
segu
ndos
)
Obtención del tiempo total usando cputime
Obtención del tiempo consumido por “eig”
� Permite detectar errores de sintaxis o ejecución en ficheros .m� Se inicia al alcanzar un breakpoint en la ejecución, y el prompt
cambia a k>>
� Evaluación de variables o fragmentos de código (F9)
� Variables en el workspace � whosIntroducción a Matlab
Programación en MatlabDepuración de código
Botón Descripción Tecla(s) Función
Set breakpoint: poner un punto de ruptura f12 dbstop
Clear breakpoint: quitar un punto de ruptura f12 dbclear
Step: continuar la ejecución hasta la siguiente líneade código (sin entrar en subfunciones) f10 dbstep
Step in: continuar la ejecución hasta la siguientelínea de código. Si la línea incluye una subfunción, separa en la primera línea de código de la misma.
f11 dbstep in
Step out: continuar la ejecución hasta la siguientelínea de código. Si estamos en una subfunción, separa en la línea siguiente a la llamada a la misma
shift+f11 dbstep out
Continue debugging: continuar la ejecución hasta elsiguiente breakpoint. f5 dbcon
Quit debug mode: salir del modo de depuración shift+f5 dbquit
Introducción a Matlab
Índice� Introducción� Primeros pasos� Programación en Matlab
� Control System Toolbox� Representación de sistemas lineales� Análisis de la respuesta temporal de sistemas LTI� Interconexión de sistemas
� Simulink� Ejercicios
Introducción a Matlab
Toolbox de controlIntroducción
� Conjunto de funciones para la ingeniería de control de sistemas (continuo y discreto)
� >>help control � listado de funciones � Representación de sistemas lineales en diferentes formatos
� Función de transferencia� Cero-polo� Fracciones parciales� Espacio de estados
� Análisis de la respuesta � Temporal: al impulso, escalón, etc.� Frecuencial: respuesta en frecuencia y diagramas de boode
� Interconexión de sistemas
Introducción a Matlab
Toolbox de controlRepresentación de sistemas lineales
� Representación de sistemas lineales en diferentes formatos� Función de transferencia:
� Numerador y denominador en formato polinómico� Para agrupar dos polinomios en una única variable � tf
� Si queremos multiplicar polinomios � conv
� Cero-polo:� Fracciones parciales:� Espacio de estados:
Introducción a Matlab
Toolbox de controlRepresentación de sistemas lineales
� Representación de sistemas lineales en diferentes formatos� Función de transferencia: numerador, denominador o función tf� Cero-polo:
� ganancia (k), ceros (z) y polos (p) � Ceros y polos en formato polinómico
� Fracciones parciales:� Espacio de estados:
( )( )( )( )( )432
142)(
2
+++++=sss
sssH
Introducción a Matlab
Toolbox de controlRepresentación de sistemas lineales
� Representación de sistemas lineales en diferentes formatos� Función de transferencia: numerador, denominador o función tf� Cero-polo: ganancia (k), ceros (z), polos (p)� Fracciones parciales (residuos):
� Espacio de estados:
( ) ( )2
5
5
3)(
++
+=
sssH
Introducción a Matlab
Toolbox de controlRepresentación de sistemas lineales
� Representación de sistemas lineales en diferentes formatos� Función de transferencia: numerador, denominador o función tf� Cero-polo: ganancia (k), ceros (z), polos (p)� Fracciones parciales (residuos): � Espacio de estados:
� Matrices A, B, C y D o función ss
� Ejemplo Motor DC
uxy
uxt
x
DC
BA
+=
+=∂∂
Introducción a Matlab
Toolbox de controlRepresentación de sistemas lineales
� Representación de sistemas lineales en diferentes formatos� Función de transferencia: numerador, denominador o función tf� Cero-polo: ganancia (k), ceros (z), polos (p)� Fracciones parciales (residuos): � Espacio de estados: matrices A, B, C, D o función ss
� Conversión entre formatos
� Conversión entre tiempo continuo y discreto:� En formato función de transferencia (tf): c2d, d2c.� En el espacio de estados: c2dm, d2cm.
Formato origen Función Formato destino
Polinómico (tf) [num den] = residue(r,p,k) Residuos
Residuos [r p k] = residue(num,den) Polinómico (tf)
Polinómico (tf) [z p k] = tf2zp(num,den) Cero-polo (zp)
Cero-polo (zp) [num den] = zp2tf(z,p,k) Polinómico (tf)
Introducción a Matlab
Toolbox de controlAnálisis de la respuesta temporal de sistemas LTI
� Respuesta al escalón: función step� y = step(sys,[t]) ó y = step(num,den,[t])
� Respuesta al impulso: función impulse� y = impulse(sys,[t]) ó y = impulse(num,den,[t])
� Respuesta a una entrada arbitraria: función lsim� lsim(sys,u,t)� t tiempo en que se toman las muestras para la simulación � vector con
valores monótonamente crecientes y regularmente espaciados.� u valores de la señal de entrada � matriz con tantas filas como muestras
(length(t)) y una columna por cada entrada al sistema.
� Si no asignamos el resultado a ninguna variable, se representa la salida obtenida� Para personalizar la gráfica resultante: las funciones stepplot, impulseplot
o lsimplot permiten definir el formato (ej. stepplot(sys, ‘.r’) representa la respuesta al escalón, en línea roja punteada )
� Ejemplo:
( )364.2
362 ++
=ss
sH
Introducción a Matlab
Toolbox de controlAnálisis de la respuesta temporal de sistemas LTI
� Ejemplo: ( )
364.2
362 ++
=ss
sH
0 1 2 3 4 5 6 7 80
1
2Step Response
Time (sec)
Am
plitu
de
0 1 2 3 4 5 6 7 8-5
0
5Impulse Response
Time (sec)
Am
plitu
de
0 5 10 15 20 25 300
5
10Linear Simulation Results
Time (sec)
Am
plitu
de
Introducción a Matlab
Toolbox de controlAnálisis de la respuesta frecuencial de sistemas LTI
� Respuesta en frecuencia de un sistema: función freqresp� [resp,outfreq] = freqresp(sys,infreq)
� Diagrama de bode (magnitud y fase) de la respuesta en frecuencia: función bode� [mag, fase, w] = bode(sys)� Si no asignamos el resultado a ninguna variable, se representa la salida
obtenida
� Ejemplo:� >>bode(num,den)
( )364.2
362 ++
=ss
sH
-50
-40
-30
-20
-10
0
10
Mag
nitu
de (
dB)
10-1
100
101
102
-180
-135
-90
-45
0
Pha
se (
deg)
Bode Diagram
Frequency (rad/sec)
Introducción a Matlab
Toolbox de controlInterconexión de sistemas
� Conexión en serie: � sys3 = series(sys1,sys2)
� Conexión en paralelo: � sys3 = parallel (sys1,sys2)
� Concatenación: � sys3 = append(sys1,sys2)
� Conexión de realimentación: � sys3 = feedback(sys1,sys2,1)� sys3 = feedback(sys1,sys2,-1)
sys1 sys2
Sys3Sys3
sys1
sys2
Sys3
sys1
sys2
Sys3
sys1
sys2
+-
Introducción a Matlab
Toolbox de controlInterconexión de sistemas (ejemplo)
+ - S1
+ - S2
s+2 s +1 2
F1
10
G1
s s+2 F2
1 s
F3
+ +
S3
R(s) C(s)
Introducción a Matlab
Índice� Introducción� Primeros pasos� Programación en Matlab� Operaciones con matrices� Symbolic Math Toolbox� Control System Toolbox
� Simulink� Introducción� Creación del modelo� Simulación del modelo� Librería SimPowerSystems
� Ejercicios
Introducción a Matlab
SimulinkIntroducción
� Herramienta integrada en Matlab que permite introducir y simular sistemas de forma gráfica.� Para acceder a simulink puede escribirse >>simulink en la línea de
comandos o utilizar el icono en la barra de Matlab.
� Incorpora diferentes librerías con elementos predefinidos para facilitar su uso.
� El trabajo en Simulink se realiza en dos etapas: � Creación del modelo� Simulación del modelo
� Los modelos se almacenan en ficheros con extensión .mdl
Introducción a Matlab
SimulinkCreación del modelo
� Crear un nuevo modelo � Colocar y conectar entre sí los bloques
� Los bloques se encuentran en la ventana de librerías, organizados en grupos (sources, sinks, continuous, discrete, math operations, etc)
� Crear un nuevo modelo � Colocar y conectar entre sí los bloques
� Los bloques se encuentran en la ventana de librerías, organizados en categorías (sources, sinks, continuous, discrete, math operations, etc)
� Para colocar un bloque basta con arrastrarlo de la ventana de librerías al espacio de trabajo.
� La conexión de bloques se hace haciendo click en el primero, y arrastrando el ratón al segundo (mientras se mantiene el botón pulsado).
Introducción a Matlab
SimulinkCreación del modelo
� Crear un nuevo modelo � Colocar y conectar entre sí los bloques� Configurar los bloques
� La configuración de los bloques se realiza haciendo doble click sobre ellos, e introduciendo los datos en la ventana que aparece.
� En la configuración de los bloques de simulink pueden utilizarse variables que estén definidas en el workspace.
� Guardar con extensión .mdl
Introducción a Matlab
SimulinkCreación del modelo
Introducción a Matlab
SimulinkSimulación del modelo
� Configuración de los parámetros de la simulación (Simulation � Configuration parameters…)� Simulation time: inicio y fin de la simulación. Suficientemente grande para
que el sistema alcance el régimen permanente.
� Solver options: define cómo se realiza el muestreo de señales para lasimulación.
Introducción a Matlab
SimulinkSimulación del modelo
� Configuración de los parámetros de la simulación (Simulation � Configuration parameters…)� Simulation time: inicio y fin de la simulación. Suficientemente grande para
que el sistema alcance el régimen permanente.� Solver options: define cómo se realiza el muestreo de señales para la
simulación.� Error debido al muestreo: diferencia entre la señal real y la muestreada� Si Tstep ↑↑ � Error↑, Tsimulación↓� Si Tstep ↓↓ � Error↓, Tsimulación↑
0 0.2 0.4 0.6 0.8 1-2
-1
0
1
2Señal de entrada
tiempo(sg)
Am
plitu
d
Tstep = 0.15
Tstep = 2·10-7
Tstep = 0.02
0 0.2 0.4 0.6 0.8 1-10
-5
0
5
10Señal de salida
tiempo(sg)
Am
plitu
d
Compromiso
Introducción a Matlab
SimulinkSimulación del modelo
� Configuración de los parámetros de la simulación (Simulation � Configuration parameters…)
� Lanzamiento de la simulación: � Usando el acceso directo: � Mediante el comando sim(nombre_modelo.mdl)
Introducción a Matlab
Índice� Introducción� Primeros pasos� Programación en Matlab� Control System Toolbox� Simulink
� Ejercicios
� Realice un script en Matlab que permita realizar una serie de operaciones con dos matrices (A y B) que se introducirán por teclado. Para ello:� Solicite al usuario las dimensiones de las matrices en formato [filas cols], (si se
introduce un único número, la matriz será cuadrada)� Genere dos matrices (A y B) de las dimensiones elegidas. Para rellenar las matrices,
escriba una función en Matlab (en un fichero diferente) que reciba como parámetro las dimensiones deseadas [filas cols], y devuelva la matriz rellena.
function Matriz = IntroducirMatriz(Dimensiones); � La función debe pedir datos al usuario para cada posición de la matriz. En caso de
que el usuario escriba ‘r’, la matriz se rellenará de valores aleatorios� Calcule y muestre por pantalla:
� Las matrices generadas A y B� La transpuesta e inversa de cada una de las matrices� El valor del determinante y el rango de cada una de las matrices� El producto de A y B (matricial y elemento a elemento)� Un vector fila obtenido concatenando la primera fila de cada una de las matrices� Un vector columna obtenido concatenando la primera columna de cada una de las
matrices
� En caso de que no sea posible realizar alguno de los cálculos solicitados, debido a las dimensiones de la matriz, indíquelo por pantalla.
� Algunas funciones útiles: det, help, input, inv, pinv, rand, randn, rank, size.
Introducción a Matlab
Ejercicio 1Matrices y vectores. Operaciones aritméticas
� Realice un script en Matlab que permita realizar obtener y representar el tiempo consumido para el cálculo del rango y el determinante de una matriz en función de su tamaño (entre 1x1 y 25x25). Tenga en cuenta que: � La matriz se rellenará con valores aleatorios. � El tiempo necesario para cada operación debe obtenerse por separado. � Los tiempos de procesamiento para el cálculo del rango y del
determinante se representarán en la misma gráfica, utilizando para ello diferentes colores.
� Además, deben añadirse etiquetas a los ejes, y una leyenda indicando que representa cada línea en la figura.
� Algunas funciones útiles: det, help, rand, randn, rank, tic, toc, title, xlabel, ylabel.
Introducción a Matlab
Ejercicio 2Tiempo de cómputo y representación gráfica
Introducción a Matlab
Ejercicio 3Interconexión de sistemas y respuesta temporal
� Dado el diagrama de bloques de la figura, y las funciones de transferencia de cada bloque, utilice las funciones de la toolbox de control para: � Obtener la función de transferencia del sistema completo� Obtener y representar la respuesta al impulso del sistema. � Obtener y representar la respuesta del sistema ante una entrada escalón.� Obtener y representar la respuesta del sistema ante una rampa entre t=0
y t=15segundos en pasos de 0.1 segundos.
3.02
2.0
11
1.04
5.0325.0
12
102
11
2
2
+=
+=
==
+++=
++=
s
sH
sH
G
Gss
sG
ssG
G1
G3
G2
H1
H2
G4
++- + +-
++
++
Introducción a Matlab
Ejercicio 4Simulink
� Implemente el diseño de la figura en Simulink. � Utilice variables en los bloques, cuyos valores se definirán en un script de
configuración, desde el que también se lanzará la simulación.
� Obtenga la respuesta del sistema a una entrada de tipo escalón de amplitud 2, que comience en t = 0.5s. � Mediante un bloque “step”� Utilizando un bloque “from workspace”
� Represente la salida del sistema� Utilizando un bloque “scope”� Mediante un bloque “to workspace”
3.02
2.0
11
1.04
5.0325.0
12
102
11
2
2
+=
+=
==
+++=
++=
s
sH
sH
G
Gss
sG
ssG