Вы находитесь на странице: 1из 0

Profesor Sebastin Marcos Lpez

Departamento de Informtica y Automtica / Universidad de Salamanca


PRACTICAS
P2. 1
REGULACION
AUTOMATICA
2.1. Introduccin a la programacin en MATLAB. Tipos de ficheros
2.2. El Editor/Debugger de MATLAB
2.3. Operadores relacionales y lgicos
2.4. Comandos de entrada y salida
2.5. Control del flujo de ejecucin del programa
- Bucles FOR y WHILE
- Bifurcaciones condicionales IFELSEIF y SWITCHCASE
- Sentencias de ruptura
2.6. Programacin de scripts y funciones
Apndice: Ficheros de datos
PRACTICA N
PRACTICA N

2:
2:
PROGRAMACION EN MATLAB
PROGRAMACION EN MATLAB
Profesor Sebastin Marcos Lpez
Departamento 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 de
operaciones 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 MATLAB 2.1. INTRODUCCION A LA PROGRAMACION EN MATLAB
FICHEROS EN MATLAB FICHEROS 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 Lpez
Departamento 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 MATLAB 2.1. INTRODUCCION A LA PROGRAMACION EN MATLAB
TIPOS DE FICHEROS EN MATLAB TIPOS 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 la
ventana 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 Lpez
Departamento 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 seleccionar
en 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 MATLAB 2.2. EL EDITOR / DEBUGGER DE FICHEROS MATLAB
CREAR FICHEROS EN MATLAB CREAR 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 Lpez
Departamento 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 MATLAB 2.2. EL EDITOR / DEBUGGER DE FICHEROS MATLAB
EDITAR FICHEROS EN MATLAB EDITAR FICHEROS EN MATLAB
Profesor Sebastin Marcos Lpez
Departamento 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 men
Debug/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 . As
se pueden localizar fcilmente los errores del cdigo.
Depurar ficheros en MATLAB :
2.2. EL EDITOR / DEBUGGER DE FICHEROS MATLAB 2.2. EL EDITOR / DEBUGGER DE FICHEROS MATLAB
DEPURAR FICHEROS EN MATLAB DEPURAR FICHEROS EN MATLAB
Abrir un M-fichero nuevo
Abrir un M-fichero existente
Guardar M-fichero
Encontrar y reemplazar texto
Ir 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 Lpez
Departamento 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 MATLAB 2.2. EL EDITOR / DEBUGGER DE FICHEROS MATLAB
GUARDAR FICHEROS EN MATLAB GUARDAR FICHEROS EN MATLAB
Profesor Sebastin Marcos Lpez
Departamento 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 L 2.3. OPERADORES RELACIONALES Y L GICOS GICOS
OPERADORES RELACIONALES OPERADORES 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
<= Menor o igual que
== Igual que
~= Distinto que
Profesor Sebastin Marcos Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 9
REGULACION
AUTOMATICA
2.3. OPERADORES RELACIONALES Y L 2.3. OPERADORES RELACIONALES Y L GICOS GICOS
OPERADORES RELACIONALES OPERADORES RELACIONALES
Ejemplo 2.1: Dadas las matrices

=
9 8 7
6 5 4
3 2 1
A

=
9 7 7
4 4 4
5 3 1
B
a) Realizar la comparacin igual que
elemento a elemento
b) Aplicar la operacin distinto que
elemento a elemento
Profesor Sebastin Marcos Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 10
REGULACION
AUTOMATICA
2.3. OPERADORES RELACIONALES Y L 2.3. OPERADORES RELACIONALES Y L GICOS GICOS
OPERADORES RELACIONALES OPERADORES 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 Lpez
Departamento 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 L 2.3. OPERADORES RELACIONALES Y L GICOS GICOS
OPERADORES LOGICOS OPERADORES 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 Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 12
REGULACION
AUTOMATICA
2.3. OPERADORES RELACIONALES Y L 2.3. OPERADORES RELACIONALES Y L GICOS GICOS
OPERADORES LOGICOS OPERADORES 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 6
b) Especificar de forma lgica los elementos que son menores o iguales que 1 o
mayores o iguales que 8
Profesor Sebastin Marcos Lpez
Departamento 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 SALIDA 2.4. COMANDOS DE ENTRADA Y SALIDA
COMANDOS DE ENTRADA COMANDOS 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 Lpez
Departamento 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 SALIDA 2.4. COMANDOS DE ENTRADA Y SALIDA
EJEMPLOS EJEMPLOS
Profesor Sebastin Marcos Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 15
REGULACION
AUTOMATICA
2.4. COMANDOS DE ENTRADA Y SALIDA 2.4. COMANDOS DE ENTRADA Y SALIDA
COMANDOS DE ENTRADA COMANDOS 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 opcionk
El 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 Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 16
REGULACION
AUTOMATICA
2.4. COMANDOS DE ENTRADA Y SALIDA 2.4. COMANDOS DE ENTRADA Y SALIDA
COMANDOS DE SALIDA COMANDOS 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 \n
Tras la escritura, ejecuta un tabulador \t
Carcter de escape
Profesor Sebastin Marcos Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 17
REGULACION
AUTOMATICA
2.4. COMANDOS DE ENTRADA Y SALIDA 2.4. COMANDOS DE ENTRADA Y SALIDA
COMANDOS DE SALIDA COMANDOS 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 Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 18
REGULACION
AUTOMATICA
2.5. CONTROL DEL FLUJO DEL PROGRAMA 2.5. CONTROL DEL FLUJO DEL PROGRAMA
BUCLES BUCLES
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 FOR
bucles 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 Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 19
REGULACION
AUTOMATICA
2.5. CONTROL DEL FLUJO DEL PROGRAMA 2.5. CONTROL DEL FLUJO DEL PROGRAMA
BUCLES FOR BUCLES 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: n2
Comandos a ejecutar
end
siendo 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:n2
Comandos a ejecutar del bucle externo
for j= m1:m2
Comandos a ejecutar del bucle interno
end
Otros comandos a ejecutar del bucle externo
end
Condicin del
contador
Sentencias
false
true
Incrementar
contador
Profesor Sebastin Marcos Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 20
REGULACION
AUTOMATICA
2.5. CONTROL DEL FLUJO DEL PROGRAMA 2.5. CONTROL DEL FLUJO DEL PROGRAMA
BUCLES FOR BUCLES FOR
Ejemplo 2.8: Escribir un bucle que calcule los 5 primeros trminos de la sucesin
1 3
1 2

+
=
n
n
a
n
Profesor Sebastin Marcos Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 21
REGULACION
AUTOMATICA
2.5. CONTROL DEL FLUJO DEL PROGRAMA 2.5. CONTROL DEL FLUJO DEL PROGRAMA
BUCLES FOR BUCLES FOR
Ejemplo 2.9: Crear una matriz 5 5 , cuyos coeficientes sean
2 2
j i a
ij
+ =
Profesor Sebastin Marcos Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 22
REGULACION
AUTOMATICA
2.5. CONTROL DEL FLUJO DEL PROGRAMA 2.5. CONTROL DEL FLUJO DEL PROGRAMA
BUCLES WHILE BUCLES 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 condicin
Comandos 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 Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 23
REGULACION
AUTOMATICA
2.5. CONTROL DEL FLUJO DEL PROGRAMA 2.5. CONTROL DEL FLUJO DEL PROGRAMA
BUCLES WHILE BUCLES WHILE
Ejemplo 2.10: Dibujar una parbola de puntos discretos desde t=0 hasta t=10
Profesor Sebastin Marcos Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 24
REGULACION
AUTOMATICA
2.5. CONTROL DEL FLUJO DEL PROGRAMA 2.5. CONTROL DEL FLUJO DEL PROGRAMA
BUCLES WHILE BUCLES 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 Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 25
REGULACION
AUTOMATICA
2.5. CONTROL DEL FLUJO DEL PROGRAMA 2.5. CONTROL DEL FLUJO DEL PROGRAMA
BIFURCACIONES BIFURCACIONES
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
IFELSE
IFELSE IF
Condicin 1
false
Condicin 2
Bloque 1
Bloque 2
true
Bloque 3
false
true
Profesor Sebastin Marcos Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 26
REGULACION
AUTOMATICA
2.5. CONTROL DEL FLUJO DEL PROGRAMA 2.5. CONTROL DEL FLUJO DEL PROGRAMA
SENTENCIA IF SENTENCIA IF- -ELSE ELSE
La sentencia IF : Es una bifurcacin condicional. En su forma ms simple la
sintaxis es la siguiente:
if condicin
Comandos a ejecutar
end
Si 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 siguiente
if condicin
Comandos a ejecutar si la condicin es cierta
else
Comandos a ejecutar si la condicin es falsa
end
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 Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 27
REGULACION
AUTOMATICA
2.5. CONTROL DEL FLUJO DEL PROGRAMA 2.5. CONTROL DEL FLUJO DEL PROGRAMA
SENTENCIA IF SENTENCIA IF- -ELSE ELSE
La sentencia IF- ELSEIF- ELSE : La sintaxis es la siguiente
if condicin 1
Comandos a ejecutar si la condicin 1 es cierta
elseif condicin 2
Comandos a ejecutar si la condicin 2 es cierta y 1 es falsa
else
Comandos 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 Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 28
REGULACION
AUTOMATICA
2.5. CONTROL DEL FLUJO DEL PROGRAMA 2.5. CONTROL DEL FLUJO DEL PROGRAMA
SENTENCIA IF SENTENCIA IF- -ELSE ELSE
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 Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 29
REGULACION
AUTOMATICA
2.5. CONTROL DEL FLUJO DEL PROGRAMA 2.5. CONTROL DEL FLUJO DEL PROGRAMA
SENTENCIA IF SENTENCIA IF- -ELSE ELSE
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 Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 30
REGULACION
AUTOMATICA
2.5. CONTROL DEL FLUJO DEL PROGRAMA 2.5. CONTROL DEL FLUJO DEL PROGRAMA
SENTENCIA SWITCH SENTENCIA SWITCH- -CASE CASE
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 expresin
case valor1
Comandos a ejecutar si expresin es valor1
case valor2
Comandos a ejecutar si expresin es valor2
case valor3
Comandos a ejecutar si expresin es valor3

otherwise
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 Lpez
Departamento 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 estar
comprendido entre 0 y 10
2.5. CONTROL DEL FLUJO DEL PROGRAMA 2.5. CONTROL DEL FLUJO DEL PROGRAMA
SENTENCIA SWITCH SENTENCIA SWITCH- -CASE CASE
Profesor Sebastin Marcos Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 32
REGULACION
AUTOMATICA
2.5. CONTROL DEL FLUJO DEL PROGRAMA 2.5. CONTROL DEL FLUJO DEL PROGRAMA
SENTENCIAS DE RUPTURA SENTENCIAS 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 .m
que 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 Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 33
REGULACION
AUTOMATICA
2.5. CONTROL DEL FLUJO DEL PROGRAMA 2.5. CONTROL DEL FLUJO DEL PROGRAMA
SENTENCIAS DE RUPTURA SENTENCIAS 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 Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 34
REGULACION
AUTOMATICA
2.6. PROGRAMACION DE SCRIPTS Y FUNCIONES 2.6. PROGRAMACION DE SCRIPTS Y FUNCIONES
SCRIPTS SCRIPTS
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.
>> nombre
Los 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 Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 35
REGULACION
AUTOMATICA
2.6. PROGRAMACION DE SCRIPTS Y FUNCIONES 2.6. PROGRAMACION DE SCRIPTS Y FUNCIONES
FUNCIONES FUNCIONES
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 Lpez
Departamento 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 FUNCIONES 2.6. PROGRAMACION DE SCRIPTS Y FUNCIONES
FUNCIONES FUNCIONES
sent t t fun 4 5 1
2
+ =
Profesor Sebastin Marcos Lpez
Departamento 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 FUNCIONES 2.6. PROGRAMACION DE SCRIPTS Y FUNCIONES
FUNCIONES FUNCIONES
0
2
= + + c bx ax
La funcin deber chequear la correcta introduccin de los parmetros de entrada y de salida
Profesor Sebastin Marcos Lpez
Departamento 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 FUNCIONES 2.6. PROGRAMACION DE SCRIPTS Y FUNCIONES
FUNCIONES FUNCIONES
Profesor Sebastin Marcos Lpez
Departamento 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 Descripcin
save 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 Descripcin
load nombrefichero Recupera todas las variables archivadas en el fichero nombrefichero.mat
Comando MATLAB Descripcin
diary nombrefichero
Comandos

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 DATOS APENDICE: FICHEROS DE DATOS
FICHEROS BINARIOS . FICHEROS BINARIOS .mat mat
Profesor Sebastin Marcos Lpez
Departamento 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 Descripcin
save nombrefichero.txt v1 v2 vn - keyword
Las 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 Descripcin
load 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 nombre
nombrefichero. El resultado es una variable tipo matriz de tamao "m x n" con el mismo
nombre que el archivo.
APENDICE: FICHEROS DE DATOS APENDICE: FICHEROS DE DATOS
FICHEROS ASCII FICHEROS ASCII
Profesor Sebastin Marcos Lpez
Departamento 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
x
e y

=
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 DATOS APENDICE: FICHEROS DE DATOS
FICHEROS ASCII FICHEROS ASCII
Profesor Sebastin Marcos Lpez
Departamento 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 DATOS APENDICE: FICHEROS DE DATOS
FICHEROS ASCII FICHEROS ASCII
Profesor Sebastin Marcos Lpez
Departamento de Informtica y Automtica / Universidad de Salamanca
PRACTICAS
P2. 43
REGULACION
AUTOMATICA
Volver