2. Programación en MATLAB

download 2. Programación en MATLAB

of 43

Transcript of 2. Programación en MATLAB

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 1

    REGULACION AUTOMATICA

    2.1. Introduccin a la programacin en MATLAB. Tipos de ficheros2.2. El Editor/Debugger de MATLAB 2.3. Operadores relacionales y lgicos2.4. Comandos de entrada y salida2.5. Control del flujo de ejecucin del programa

    - Bucles FOR y WHILE- Bifurcaciones condicionales IF ELSEIF y SWITCH CASE- Sentencias de ruptura

    2.6. Programacin de scripts y funcionesApndice: Ficheros de datos

    PRACTICA NPRACTICA N 2:2:

    PROGRAMACION EN MATLABPROGRAMACION EN MATLAB

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 2

    REGULACION AUTOMATICA

    Cuando realizamos clculos simples, es habitual escribir las instrucciones directamente en la ventana de comandos. Sin embargo, cuando se van a realizar una serie deoperaciones ms complicadas y de forma repetitiva, se utilizan los llamados M-ficheros (M-Files), que son ficheros de texto donde tecleamos las instrucciones de MATLAB. Adems, existen otros tipos de ficheros en MATLAB que presentamos a continuacin.

    Ficheros en MATLAB :

    2.1. INTRODUCCION A LA PROGRAMACION EN MATLAB2.1. INTRODUCCION A LA PROGRAMACION EN MATLABFICHEROS EN MATLABFICHEROS EN MATLAB

    MATLAB puede utilizarse como un lenguaje de programacin de alto nivel que incluye estructuras de datos, funciones, instrucciones de control del flujo, manejo de las entradas y salidas y programacin orientada a objetos.En la confeccin de algoritmos, el tratamiento que hace MATLAB de los vectores y matrices permite vectorizar un gran nmero de clculos intermedios, mejorando considerablemente el nmero de operaciones a realizar y el tiempo de ejecucin. Por ello, puede decirse que MATLAB es un lenguaje de programacin de muy alto nivel.La MATLAB Compiler Suite es una herramienta bsica adicional que genera de forma automtica cdigo C/C++ a partir de los programas de MATLAB.

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 3

    REGULACION AUTOMATICA M-ficheros .m : Son ficheros de texto que se pueden crear con cualquier editor de texto,

    pero es recomendable utilizar el Editor de Matlab, ya que permite adems ejecutarlos paso a paso para ver si contienen errores. Deben llevar la extensin .m caracterstica de MATLAB.Existen 2 tipos:

    Tipos de Ficheros en MATLAB :

    2.1. INTRODUCCION A LA PROGRAMACION EN MATLAB2.1. INTRODUCCION A LA PROGRAMACION EN MATLABTIPOS DE FICHEROS EN MATLABTIPOS DE FICHEROS EN MATLAB

    Ficheros de datos .mat : Son ficheros que habitualmente contienen variables de MATLAB que se guardan de una sesin para otra. Se pueden generar con la instruccin save nombrefichero (por defecto le asignar la extensin .mat) y se pueden recuperar con la instruccin load nombrefichero.

    Programas MATLAB (Scripts): son una serie de instrucciones de MATLAB que se ejecutan secuencialmente lnea a lnea. Los scripts operan con datos existentes en el espacio de trabajo o bien con datos que se generan en el propio script.Para ejecutar un programa MATLAB simplemente se teclea su nombre en laventana de comandos y se pulsa Enter.

    Ficheros de funcin: son subprogramas que se utilizan para realizar clculos especficos. Operan sobre una serie de parmetros de entrada y devuelven una serie de parmetros de salida. La posibilidad de crear funciones a medida es una de las aplicaciones ms tiles de la programacin en MATLAB.Se caracterizan porque su primera lnea ejecutable comienza por la orden function.

    Ficheros externos .mex : Son ficheros compilados en C/C++ o en Fortran que pueden ser llamados como funciones de MATLAB.

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 4

    REGULACION AUTOMATICA

    Para crear un fichero con cdigo de programacin MATLAB (M-fichero), se puede hacer click en el botn de la barra de herramientas de MATLAB o bien seleccionaren el men la ruta File/New/M-file. Aparece la ventana del Editor/Debugger donde se pueden escribir los ficheros MATLAB, tecleando el programa lnea a lnea.

    Crear M-ficheros en MATLAB :

    2.2. EL EDITOR / DEBUGGER DE FICHEROS MATLAB2.2. EL EDITOR / DEBUGGER DE FICHEROS MATLABCREAR FICHEROS EN MATLABCREAR FICHEROS EN MATLAB

    El editor muestra con diferentes colores los diferentes tipos o elementos constitutivos de los comandos: en verde los comentarios (%), en azul los comandos de control de flujo, en rojo las cadenas de caracteres

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 5

    REGULACION AUTOMATICA

    Para abrir un fichero MATLAB ya existente, se puede hacer click en el botn de la barra de herramientas de MATLAB o bien seleccionar en el men la ruta File/Open

    Abrir y/o editar ficheros en MATLAB :

    2.2. EL EDITOR / DEBUGGER DE FICHEROS MATLAB2.2. EL EDITOR / DEBUGGER DE FICHEROS MATLABEDITAR FICHEROS EN MATLABEDITAR FICHEROS EN MATLAB

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 6

    REGULACION AUTOMATICA El editor permite ejecutar los ficheros paso a paso para ver si contienen errores

    (proceso de Debug o depuracin). El Debugger se activa con la ruta del menDebug/Run o bien haciendo click en el botn de la barra de herramientas del editor.Se pueden colocar breakpoints, que son puntos donde se detiene la ejecucin antes de ejecutar esa lnea, situando el cursor en dicha lnea y haciendo click en el botn . Asse pueden localizar fcilmente los errores del cdigo.

    Depurar ficheros en MATLAB :

    2.2. EL EDITOR / DEBUGGER DE FICHEROS MATLAB2.2. EL EDITOR / DEBUGGER DE FICHEROS MATLABDEPURAR FICHEROS EN MATLABDEPURAR FICHEROS EN MATLAB

    Abrir un M-fichero nuevo

    Abrir un M-fichero existente

    Guardar M-fichero

    Encontrar y reemplazar textoIr a una funcin

    Situar punto de corte para debugger (breakpoint)Eliminar punto de corte

    Avanzar un paso sin entrar en posibles funciones existentes en la lnea

    Salir de la funcin que se est ejecutando en este momento

    Avanzar un paso y si hay una llamada a una funcin, entra en dicha funcin

    Ejecutar hasta el siguiente punto de corte

    Terminar la ejecucin del Debugger

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 7

    REGULACION AUTOMATICA Para guardar por primera vez un M-fichero creado con el editor, se selecciona la opcin

    de men File/Save As o bien se hace click en el botn de la barra de herramientas del editor. Cualquiera de las 2 maneras, abre la caja de dilogo Guardar donde podemos archivar nuestro fichero con el nombre deseado y en la carpeta que se indique. Por defecto, tendr la extensin .m

    Guardar ficheros en MATLAB :

    2.2. EL EDITOR / DEBUGGER DE FICHEROS MATLAB2.2. EL EDITOR / DEBUGGER DE FICHEROS MATLABGUARDAR FICHEROS EN MATLABGUARDAR FICHEROS EN MATLAB

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 8

    REGULACION AUTOMATICA

    Los operadores relacionales establecen una comparacin entre 2 entidades, que en MATLAB pueden ser escalares, vectores o matrices. El lenguaje de programacin de MATLAB dispone de los siguientes operadores relacionales bsicos:

    Operadores relacionales :

    2.3. OPERADORES RELACIONALES Y L2.3. OPERADORES RELACIONALES Y LGICOSGICOSOPERADORES RELACIONALESOPERADORES RELACIONALES

    El resultado de realizar una operacin ser un 1 si es verdadera y un 0 si es falsa.Cuando los operadores relacionales se aplican a 2 vectores o matrices del mismo tamao, la operacin se realiza elemento a elemento y el resultado es otro vector o matriz de unos y ceros del mismo tamao, que recoge el resultado de la comparacin entre elementos.

    Operador Descripcin< Menor que

    > Mayor que

    >= Mayor o igual que

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 9

    REGULACION AUTOMATICA

    2.3. OPERADORES RELACIONALES Y L2.3. OPERADORES RELACIONALES Y LGICOSGICOSOPERADORES RELACIONALESOPERADORES RELACIONALES

    Ejemplo 2.1: Dadas las matrices

    =

    987654321

    A

    =

    977444531

    Ba) Realizar la comparacin igual queelemento a elemento

    b) Aplicar la operacin distinto queelemento a elemento

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 10

    REGULACION AUTOMATICA

    2.3. OPERADORES RELACIONALES Y L2.3. OPERADORES RELACIONALES Y LGICOSGICOSOPERADORES RELACIONALESOPERADORES RELACIONALES

    Ejemplo 2.2: En un diodo PN se introduce una onda senoidal de = 1 rad/seg . Dibujar la onda senoidal recortada de salida en el intervalo de tiempo de 0 a 12 segundos.

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 11

    REGULACION AUTOMATICA Son operadores binarios que se rigen por el lgebra de Boole. MATLAB

    dispone de los siguientes operadores lgicos bsicos:

    Operadores lgicos :

    2.3. OPERADORES RELACIONALES Y L2.3. OPERADORES RELACIONALES Y LGICOSGICOSOPERADORES LOGICOSOPERADORES LOGICOS

    Operador Descripcin& AND| OR~ NOT

    Los operadores lgicos pueden combinarse con los relacionales para poder comprobar el cumplimiento de condiciones mltiples.

    Cuando estos operadores lgicos se aplican a escalares se produce el resultado 1 0 si es verdadero o falso. Si se aplican a matrices (o vectores) del mismo tamao se crea otra matriz (o vector) del mismo tamao como resultado de realizar las comparaciones entre componentes correspondientes.

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 12

    REGULACION AUTOMATICA

    2.3. OPERADORES RELACIONALES Y L2.3. OPERADORES RELACIONALES Y LGICOSGICOSOPERADORES LOGICOSOPERADORES LOGICOS

    Ejemplo 2.3: Dado el vector V= (0 1 2 3 4 5 6 7 8 9)a) Especificar de forma lgica los elementos que son mayores que 2 y menores que 6b) Especificar de forma lgica los elementos que son menores o iguales que 1 o

    mayores o iguales que 8

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 13

    REGULACION AUTOMATICA

    Todos los M-ficheros admiten sentencias que permiten mantener una comunicacin con el usuario sobre la ventana de comandos. Entre las ms destacables estn:

    2.4. COMANDOS DE ENTRADA Y SALIDA2.4. COMANDOS DE ENTRADA Y SALIDACOMANDOS DE ENTRADACOMANDOS DE ENTRADA

    input : Permite introducir datos por pantalla, que pueden ser de tipo numrico o una cadena de caracteres.

    >> variable= input(mensaje a pantalla)

    Si el dato es numrico, la sintaxis de este comando es:

    que escribe en pantalla el mensaje y espera el valor de la variable. El usuario puede entonces teclear un valor numrico o bien una expresin numrica a partir de variables predefinidas.Si el dato es de tipo cadena de caracteres (string), entonces la contestacin debe ir entre comillas simples, o bien indicar en la sintaxis de este comando que va a leer una variable de tipo string:

    >> variable= input(mensaje a pantalla, s)

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 14

    REGULACION AUTOMATICA

    Ejemplo 2.4: Escribir un programa en Matlab que genere una matriz m n de nmeros aleatorios entre 0 y 100. La dimensin de la matriz debe ser elegida por el usuario

    2.4. COMANDOS DE ENTRADA Y SALIDA2.4. COMANDOS DE ENTRADA Y SALIDAEJEMPLOSEJEMPLOS

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 15

    REGULACION AUTOMATICA

    2.4. COMANDOS DE ENTRADA Y SALIDA2.4. COMANDOS DE ENTRADA Y SALIDACOMANDOS DE ENTRADACOMANDOS DE ENTRADA

    menu : Genera un men que permite al usuario elegir entre distintas opciones. Su sintaxis general es:

    >> opcion= menu(ttulo del men,opcion1,opcion2, ,opcionp)

    que guarda en la variable opcion el valor k , si se ha elegido opcionkEl men anterior aparece en una ventana con las opciones en forma de botn en el interfaz habitual de Windows.Ejemplo 2.5: Programar un men para elegir el mtodo de resolucin de un sistema de ecuaciones diferenciales, entre 3 opciones: Runge-Kutta, Gear o Adams

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 16

    REGULACION AUTOMATICA

    2.4. COMANDOS DE ENTRADA Y SALIDA2.4. COMANDOS DE ENTRADA Y SALIDACOMANDOS DE SALIDACOMANDOS DE SALIDA

    disp : Muestra un texto o una matriz de texto por pantalla. Su sintaxis general es:

    >> disp(mensaje a pantalla)Si queremos mostrar un mensaje que combine informacin numrica y texto, debemos utilizar el comando num2str(x) que convierte el valor de una variable numrica x en una cadena de caracteres.Si el mensaje se compone de varios trozos, todos los sucesivos trozos del mensaje deben disponerse de manera que formen una matriz (entre corchetes). fprintf : Permite escribir informacin numrica y texto en pantalla . Su sintaxis para escritura en pantalla es:

    >> fprintf(mensaje formato, x1, x2,)donde el argumento formato consiste en un carcter de conversin (precedido del smbolo %) y, opcionalmente, de un carcter de escape (precedido del smbolo \) .

    Carcter de conversin%d Variables enteras

    %e Variables reales en formato cientfico%f Variables reales de punto flotante

    %s Cadenas de caracteres

    Tras la escritura, ejecuta un retorno de carro\r

    Tras la escritura, pasa a una nueva lnea\nTras la escritura, ejecuta un tabulador\t

    Carcter de escape

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 17

    REGULACION AUTOMATICA

    2.4. COMANDOS DE ENTRADA Y SALIDA2.4. COMANDOS DE ENTRADA Y SALIDACOMANDOS DE SALIDACOMANDOS DE SALIDA

    Ejemplo 2.7: El nivel de un tanque se est registrando en una variable n. El nivel ha subido de manera que ha llegado al 90 % . Mostrar un mensaje por pantalla avisando de esta alarma.

    Ejemplo 2.6: Mostrar en pantalla un mensaje que informe que un sistema es inestable.

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 18

    REGULACION AUTOMATICA

    2.5. CONTROL DEL FLUJO DEL PROGRAMA2.5. CONTROL DEL FLUJO DEL PROGRAMABUCLESBUCLES

    En los ficheros de MATLAB, se pueden incluir sentencias que controlan el flujo de ejecucin del fichero.

    Condicin

    Sentencias

    false

    true

    Bucles : Los bucles permiten la repeticin de las mismas operaciones sobre datos distintos. En MATLAB existen 2 tipos de bucles con control al principio:

    bucles FORbucles WHILE

    Estas sentencias de control son las mismas que se emplean en los lenguajes de programacin de alto nivel, aunque la sintaxis difiere ligeramente. As pues, MATLAB dispone de sentencias para realizar bifurcaciones y bucles.

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 19

    REGULACION AUTOMATICA

    2.5. CONTROL DEL FLUJO DEL PROGRAMA2.5. CONTROL DEL FLUJO DEL PROGRAMABUCLES FORBUCLES FOR

    Bucles FOR : Esta sentencia permite ejecutar de forma repetitiva un comando o grupo de comandos un nmero de veces predeterminado.La estructura de los bucles FOR es la siguiente:

    for i= n1: incremento: n2Comandos a ejecutar

    endsiendo i el contador del bucle que debe ir desde el valor inicial n1 al valor final n2 con un paso dado por el incremento. Si no se especifica el incremento, se toma 1. Los comandos a ejecutar deben separarse por comas o por intros.

    Bucles FOR anidados : Los bucles FOR pueden anidarse por el usuario, ejecutndose primero los bucles ms internos y despus los ms externos.

    for i= n1:n2Comandos a ejecutar del bucle externo

    for j= m1:m2Comandos a ejecutar del bucle interno

    endOtros comandos a ejecutar del bucle externo

    end

    Condicin del contador

    Sentencias

    false

    true

    Incrementar contador

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 20

    REGULACION AUTOMATICA

    2.5. CONTROL DEL FLUJO DEL PROGRAMA2.5. CONTROL DEL FLUJO DEL PROGRAMABUCLES FORBUCLES FOR

    Ejemplo 2.8: Escribir un bucle que calcule los 5 primeros trminos de la sucesin

    1312

    +=

    nnan

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 21

    REGULACION AUTOMATICA

    2.5. CONTROL DEL FLUJO DEL PROGRAMA2.5. CONTROL DEL FLUJO DEL PROGRAMABUCLES FORBUCLES FOR

    Ejemplo 2.9: Crear una matriz 5 5 , cuyos coeficientes sean 22 jiaij +=

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 22

    REGULACION AUTOMATICA

    2.5. CONTROL DEL FLUJO DEL PROGRAMA2.5. CONTROL DEL FLUJO DEL PROGRAMABUCLES WHILEBUCLES WHILE

    Bucles WHILE : Esta sentencia permite ejecutar de forma repetitiva un comando o grupo de comandos mientras se cumpla una condicin.La estructura de los bucles WHILE es la siguiente:

    while condicinComandos a ejecutar si condicin es cierta

    end

    donde condicin puede ser una expresin escalar, vectorial o matricial, cuyo resultado es un verdadero o falso lgico.El programa evala la condicin y mientras sea verdadera, es decir, mientras haya algn elemento true en condicin, se siguen ejecutando las sentencias a continuacin. En el momento en el que todos los elementos de la condicin son false, el bucle termina, pasando el control de la ejecucin a la instruccin siguiente a la end.

    Condicin

    Sentencias

    false

    true

    En este tipo de bucle, el nmero de veces que se repiten las sentencias no est controlado por un contador, sino por la verificacin de una condicin. Es importante asegurarse de que alguna vez la condicin ser falsa para no entrar en un bucle infinito.

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 23

    REGULACION AUTOMATICA

    2.5. CONTROL DEL FLUJO DEL PROGRAMA2.5. CONTROL DEL FLUJO DEL PROGRAMABUCLES WHILEBUCLES WHILE

    Ejemplo 2.10: Dibujar una parbola de puntos discretos desde t=0 hasta t=10

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 24

    REGULACION AUTOMATICA

    2.5. CONTROL DEL FLUJO DEL PROGRAMA2.5. CONTROL DEL FLUJO DEL PROGRAMABUCLES WHILEBUCLES WHILE

    Ejemplo 2.11: Calcular el valor especial eps de MATLAB. Recordar que es el nmero ms pequeo que sumado a otro crea un nuevo nmero en coma flotante.

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 25

    REGULACION AUTOMATICA

    2.5. CONTROL DEL FLUJO DEL PROGRAMA2.5. CONTROL DEL FLUJO DEL PROGRAMABIFURCACIONESBIFURCACIONES

    Bifurcaciones : Las bifurcaciones permiten ejecutar unas u otras instrucciones segn se cumpla o no una determinada condicin. En la Figura se muestran 3 posibles formas de bifurcacin.

    Condicin

    Sentencias

    false

    true

    Condicin

    true

    Bloque 1 Bloque 2

    false

    IF IF ELSE IF ELSE IF

    Condicin 1

    false

    Condicin 2

    Bloque 1

    Bloque 2

    true

    Bloque 3

    false

    true

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 26

    REGULACION AUTOMATICA

    2.5. CONTROL DEL FLUJO DEL PROGRAMA2.5. CONTROL DEL FLUJO DEL PROGRAMASENTENCIA IFSENTENCIA IF--ELSEELSE

    La sentencia IF : Es una bifurcacin condicional. En su forma ms simple la sintaxis es la siguiente:

    if condicinComandos a ejecutar

    endSi la condicin es cierta se ejecutan los comandos entre if y end; si es falsa se pasa el control de la ejecucin a la sentencia siguiente a la end.

    Condicin

    Sentencias

    false

    true

    La sentencia IF- ELSE : La sintaxis es la siguienteif condicin

    Comandos a ejecutar si la condicin es ciertaelse

    Comandos a ejecutar si la condicin es falsaend

    Si la condicin es cierta se ejecutan los comandos entre if y else; si es falsa se ejecutan los comandos entre else y end.

    Condicin

    true

    Bloque 1 Bloque 2

    false

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 27

    REGULACION AUTOMATICA

    2.5. CONTROL DEL FLUJO DEL PROGRAMA2.5. CONTROL DEL FLUJO DEL PROGRAMASENTENCIA IFSENTENCIA IF--ELSEELSE

    La sentencia IF- ELSEIF- ELSE : La sintaxis es la siguiente

    if condicin 1Comandos a ejecutar si la condicin 1 es cierta

    elseif condicin 2Comandos a ejecutar si la condicin 2 es cierta y 1 es falsa

    elseComandos a ejecutar si la condicin 1 y la 2 son falsas

    end

    Si la condicin 1 es cierta se ejecutan los comandos entre if y elseif y se pasa el control de la ejecucin a la sentencia siguiente a la end.Si la condicin 1 es falsa, entonces se evala la condicin 2 y si es verdadera se se ejecutan los comandos entre elseif y else y se pasa el control de ejecucin a la sentencia siguiente a la end.Si la condicin 2 tambin es falsa se ejecutan los comandos entre else y end y el control sale de la estructura.

    Condicin 1

    false

    Condicin 2

    Bloque 1

    Bloque 2

    true

    Bloque 3

    false

    true

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 28

    REGULACION AUTOMATICA

    2.5. CONTROL DEL FLUJO DEL PROGRAMA2.5. CONTROL DEL FLUJO DEL PROGRAMASENTENCIA IFSENTENCIA IF--ELSEELSE

    Ejemplo 2.12: Escribir un programa en MATLAB llamado signo que informe si un nmero real introducido por el usuario es positivo, negativo o cero

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 29

    REGULACION AUTOMATICA

    2.5. CONTROL DEL FLUJO DEL PROGRAMA2.5. CONTROL DEL FLUJO DEL PROGRAMASENTENCIA IFSENTENCIA IF--ELSEELSE

    Ejemplo 2.13: Escribir un programa en MATLAB llamado manzanin que calcule el coste de la compra de manzanas. El precio unitario es de 0.25 . Si se compran ms de 10 manzanas, se hace un descuento del 20%

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 30

    REGULACION AUTOMATICA

    2.5. CONTROL DEL FLUJO DEL PROGRAMA2.5. CONTROL DEL FLUJO DEL PROGRAMASENTENCIA SWITCHSENTENCIA SWITCH--CASECASE

    La sentencia SWITCH-CASE : La sentencia switch permite realizar bifurcaciones en un programa atendiendo al resultado de una variable o expresin. Su sintaxis general es la siguiente

    switch expresincase valor1

    Comandos a ejecutar si expresin es valor1case valor2

    Comandos a ejecutar si expresin es valor2case valor3

    Comandos a ejecutar si expresin es valor3otherwise

    Comandos escoba a ejecutar si expresin no cumple ningn caso anterior

    end

    Se calcula el valor de la expresin y si es igual a valork se ejecutarn los comandos que acompaan al case correspondiente k.

    Si el valor de la expresin no corresponde a ninguno de los valores especificados, entonces se ejecutan los comandos escoba .

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 31

    REGULACION AUTOMATICA

    Ejemplo 2.14: Escribir un programa en MATLAB llamado ejemfun que permita seleccionar mediante un men la grfica a dibujar. Deben existir 3 posibles funciones a representar: 1) seno , 2) coseno, 3) exponencial. El intervalo de representacin estarcomprendido entre 0 y 10

    2.5. CONTROL DEL FLUJO DEL PROGRAMA2.5. CONTROL DEL FLUJO DEL PROGRAMASENTENCIA SWITCHSENTENCIA SWITCH--CASECASE

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 32

    REGULACION AUTOMATICA

    2.5. CONTROL DEL FLUJO DEL PROGRAMA2.5. CONTROL DEL FLUJO DEL PROGRAMASENTENCIAS DE RUPTURASENTENCIAS DE RUPTURA

    Puede ocurrir que al ejecutar un programa, si se da una determinada circunstancia, queramos detener la ejecucin del mismo definitivamente o hasta que pase cierto intervalo de tiempo. Las instrucciones break , error, return y pause permiten realizar esto, tal como se detalla a continuacin.

    break : Detiene la ejecucin de todos los ficheros .mque se estn ejecutando en ese momento y regresa a la ventana de comandos de MATLAB devolviendo el control al teclado.En el caso de que la sentencia break se encuentre dentro de un bucle for o while , entonces finaliza la ejecucin del bucle y el programa continua en la siguiente instruccin fuera del bucle.

    return : Detiene la ejecucin del fichero .m donde se halle esta instruccin, es decir, si el fichero donde se encuentra la orden return haba sido llamado por uno anterior, continua la ejecucin de ste.

    M-file M-file 1

    M-file 2

    return

    return

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 33

    REGULACION AUTOMATICA

    2.5. CONTROL DEL FLUJO DEL PROGRAMA2.5. CONTROL DEL FLUJO DEL PROGRAMASENTENCIAS DE RUPTURASENTENCIAS DE RUPTURA

    error : Informa de la existencia de un error mediante el envo de un mensaje a pantalla y detiene la ejecucin del programa devolviendo el control al teclado. Su sintaxis general es:

    >> error (mensaje a pantalla)

    pause(n) : Realiza una pausa de n segundos antes de ejecutar la siguiente instruccin del programa.

    pause : Si no se especifica el argumento, pause interrumpe la ejecucin del fichero hasta que el usuario pulse una tecla para continuar

    NOTA: Para abortar manualmente la ejecucin de un programa debe pulsarse la combinacin de teclas CTRL+C

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 34

    REGULACION AUTOMATICA

    2.6. PROGRAMACION DE SCRIPTS Y FUNCIONES2.6. PROGRAMACION DE SCRIPTS Y FUNCIONESSCRIPTSSCRIPTS

    Como ya se ha explicado, los M-ficheros son archivos ASCII que contienen una serie de comandos, incluyendo referencias a otros ficheros, interpretables por MATLAB.

    Programas MATLAB (Scripts): son el tipo de M-fichero ms sencillo posible. Consisten en una serie de instrucciones de MATLAB que se ejecutan secuencialmente. Un script se puede ejecutar introduciendo su nombre en la ventana de comandos.>> nombreLos scripts operan con datos existentes en el espacio de trabajo o bien con datos que se generan en el propio script. Cualquier variable que se cree mediante un script permanecer en el espacio de trabajo y se podr utilizar en clculos posteriores.

    Sirven para automatizar secuencias de rdenes que se utilizan de forma repetitiva y proporcionan extensibilidad a MATLAB, ya que permite la definicin de funciones a medida del usuario. Existen 2 tipos de M-ficheros: scripts y funciones

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 35

    REGULACION AUTOMATICA

    2.6. PROGRAMACION DE SCRIPTS Y FUNCIONES2.6. PROGRAMACION DE SCRIPTS Y FUNCIONESFUNCIONESFUNCIONES

    Funciones: son subprogramas que se utilizan para realizar clculos especficos. Operan sobre una serie de parmetros de entrada y devuelven una serie de parmetros de salida. La estructura de una funcin debe ser:

    Una primera lnea de la forma:function argumentos_salida= nombre_funcin (argumentos_entrada)

    Si hay ms de un argumento de salida, stos deben ir entre corchetes [ ] y separados por comas.Despus una serie de comandos, incluidos comentarios, cuyo objetivo ser calcular

    cada uno de los argumentos de salida en funcin de los argumentos de entrada.

    Para chequear el nmero de argumentos de una funcin se usan los siguientes comandos:- nargin : devuelve el nmero de argumentos de entrada con los que el usuario ha llamado a una funcin- nargout : devuelve el nmero de argumentos de salida con los que el usuario ha llamado a una funcin

    Una vez editada y depurada la funcin, se guarda en un M-fichero con el mismo nombre de la funcin: nombre_funcin.m

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 36

    REGULACION AUTOMATICA

    Ejemplo 2.15: Escribir una funcin en MATLAB llamada fun1 para definir la siguiente funcin del tiempo :

    La funcin se guardar en la carpeta work. Posteriormente, representar la funcin entre 0 y 10

    2.6. PROGRAMACION DE SCRIPTS Y FUNCIONES2.6. PROGRAMACION DE SCRIPTS Y FUNCIONESFUNCIONESFUNCIONES

    sentttfun 451 2 +=

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 37

    REGULACION AUTOMATICA Ejemplo 2.16: Escribir una funcin en MATLAB llamada ecu2 para resolver una

    ecuacin de segundo grado

    2.6. PROGRAMACION DE SCRIPTS Y FUNCIONES2.6. PROGRAMACION DE SCRIPTS Y FUNCIONESFUNCIONESFUNCIONES

    02 =++ cbxaxLa funcin deber chequear la correcta introduccin de los parmetros de entrada y de salida

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 38

    REGULACION AUTOMATICA

    Ejemplo 2.17: Escribir una funcin en MATLAB llamada media que calcule:-Para vectores, el valor medio de sus componentes-Para matrices, el valor medio de sus columnas

    2.6. PROGRAMACION DE SCRIPTS Y FUNCIONES2.6. PROGRAMACION DE SCRIPTS Y FUNCIONESFUNCIONESFUNCIONES

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 39

    REGULACION AUTOMATICA MATLAB permite guardar el valor de todas o algunas de las variables

    definidas en una sesin mediante la instruccin save .

    Salvaguardia y recuperacin de datos en ficheros MATLAB :

    Si se desea guardar en un fichero los comandos que se vayan a ejecutar en una sesin de trabajo y tambin los resultados se emplea la instruccin diary .

    Comando MATLAB Descripcinsave nombrefichero

    save nombrefichero v1 v2 vn

    Almacena todas las variables existentes en el espacio de trabajo en un fichero binario que tendr la extensin por defecto .mat

    Guarda nicamente en el fichero las variables especificadas v1, v2, vn

    Para recuperar las variables que hemos almacenado en el archivo de nombre dado, se utiliza la instruccin load .

    Comando MATLAB Descripcinload nombrefichero Recupera todas las variables archivadas en el fichero nombrefichero.mat

    Comando MATLAB Descripcindiary nombreficheroComandos

    diary off

    Genera un fichero de texto con el nombre especificado, que se puede abrir con cualquier editor de texto, y que almacena todo el contenido de la sesin

    APENDICE: FICHEROS DE DATOSAPENDICE: FICHEROS DE DATOSFICHEROS BINARIOS .FICHEROS BINARIOS .matmat

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 40

    REGULACION AUTOMATICA MATLAB permite guardar el valor de todas o algunas de las variables activas en un

    fichero con formato ASCII mediante una opcin final keyword del comando save.

    Salvaguardia y recuperacin de datos en ficheros formateados ASCII :

    Comando MATLAB Descripcinsave nombrefichero.txt v1 v2 vn - keywordLas palabras clave (keywords) vlidas son:- ascii (datos en formato ascii de 8 dgitos)- double (datos en formato ascii de 16 dgitos)- tabs (indica que los datos estn separados por tabuladores)

    Almacena las variables especificadas v1, v2, vn en un fichero con formato ASCII exportable a cualquier editor de texto u hoja de clculo (extensin .txt)

    Si no se especifica la ruta, MATLAB guarda el fichero en el directorio de trabajo (work).

    Para recuperar el contenido de un fichero formateado, que el usuario genera con un editor de texto cualquiera o bien es un fichero en soporte magntico que procede de la ejecucin de programas externos, se utiliza la instruccin load . El fichero debe tener estructura matricial y los datos que conforman la matriz deben ser homogneos, no pudiendo mezclarse escalares, vectores, matrices, etc.Comando MATLAB Descripcinload nombrefichero Recupera todas las variables archivadas en el fichero con formato nombrefichero. La

    extensin del fichero puede ser cualquiera y debe indicarse expresamente para cargar su contenido.MATLAB almacena en la variable nombrefichero el contenido del fichero de nombrenombrefichero. El resultado es una variable tipo matriz de tamao "m x n" con el mismo nombre que el archivo.

    APENDICE: FICHEROS DE DATOSAPENDICE: FICHEROS DE DATOSFICHEROS ASCIIFICHEROS ASCII

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 41

    REGULACION AUTOMATICA

    Ejemplo 2.18: Representar en Excel la exponencial decreciente en el intervalo de 0-10, a partir de clculos generados en MATLAB

    xey =

    Ver Video

    AYUDA: Se construye en MATLAB una variable matricial llamada expon que contenga 2 columnas: una con los valores de x y otra con los valores de y , y se guarda en un fichero llamado grafica utilizando la instruccin save.

    APENDICE: FICHEROS DE DATOSAPENDICE: FICHEROS DE DATOSFICHEROS ASCIIFICHEROS ASCII

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 42

    REGULACION AUTOMATICA

    Ejemplo 1.32 (sigue): Se abre en Excel el fichero grafica , con las opciones de datos en columnas, el separador decimal es un punto (.) y no existe separador de miles (blanco), obtenindose la tabla con los valores generados en MATLAB. Estos datos pueden ser tratados y representados utilizando las posibilidades de Excel.

    APENDICE: FICHEROS DE DATOSAPENDICE: FICHEROS DE DATOSFICHEROS ASCIIFICHEROS ASCII

  • Profesor Sebastin Marcos LpezDepartamento de Informtica y Automtica / Universidad de Salamanca

    PRACTICAS

    P2. 43

    REGULACION AUTOMATICA

    Volver