25
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

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