Documente Academic
Documente Profesional
Documente Cultură
Semana 05 y 06
PROGRAMACIN EN MATLAB
Como ya hemos visto, Matlab es un programa diseado especialmente para tratar datos matemticos.
Entre otras aplicaciones permite la programacin, esto es, la creacin de una serie de instrucciones que
se ejecutarn cuando se las invoque.
El cdigo se guarda en archivos .M, que son interpretados cada vez que se ejecutan.
EJECUCIN ARCHIVO .M
EDITOR ARCHIVOS .M
Edit: es un editor donde podemos escribir instrucciones que no se ejecutan hasta que lo invoquemos en
la ventana principal.
Una vez abierto, tiene la siguiente presentacin:
Curso: Computacin II
Ciclo: III
Semana 05 y 06
Para crear un archivo .M nuevo basta con hacer clic sobre la representacin de una hoja en blanco, que
sirve para crear un nuevo archivo .m
Una vez escrito el programa, se guarda con el nombre deseado (siempre y cuando no sea una
function, ya que entonces hay que guardarlo con el mismo nombre) y la extensin en que se guarda es
.m
Algunos comandos muy utilizados en archivos .M son:
1. ECHO OFF
ECHO ON
Curso: Computacin II
Ciclo: III
Semana 05 y 06
Ejemplo:
Diagrama explicativo:
Condicin
S
Sentencia 1
NO
Sentencia 2
Sentencia 3
Curso: Computacin II
Ciclo: III
Semana 05 y 06
== (igual)
> (mayor)
~= (distinto)
< (menor)
La primera lnea indica que si (y slo si) se cumple la condicin dada, la segunda se va a realizar (la
sentencia 1)
La tercera lnea indica que si no se cumple la condicin se realiza la sentencia 2.
El end que aparece en la cuarta lnea se utiliza para finalizar la bifurcacin.
Ejemplo 1:
Crear un programa en el que se introduzcan dos nmeros por el teclado y que nos diga cual es el mayor.
Curso: Computacin II
Ciclo: III
Semana 05 y 06
CONDICIONES MLTIPLES
S
Condicin 1
Sentencia 1
NO
S
Condicin 2
Sentencia 2
NO
S
Condicin 3
Sentencia 3
Curso: Computacin II
Ciclo: III
Semana 05 y 06
Ejemplo 2:
Crear un programa tal que un usuario introduzca un nmero del 0-9 y un segundo usuario tenga que
acertarlo.
Ejemplo 3:
Crear un programa tal que un usuario introduzca un nmero por teclado, que diga si es entero y luego si
es par o impar.
Curso: Computacin II
Ciclo: III
Semana 05 y 06
BUCLES
Permite repetir comandos un nmero determinado de veces. Hay varias formas de utilizarlos, pero la
ms sencilla es:
Ejemplo 4:
Crear un programa que imprima los nmeros del 1 al 100.
Curso: Computacin II
Ciclo: III
Semana 05 y 06
Ejemplo 5:
Adivina un nmero con 5 oportunidades para acertar.
Ejemplo 6:
Programar la funcin factorial de n!
En la cuarta lnea definimos factorial para que guarde los valores nuevos de cada iteracin como la
multiplicacin de los anteriores.
Funcin break: Sale del bucle ms interno que tengamos
Curso: Computacin II
Ciclo: III
Semana 05 y 06
Se repite mientras se cumpla una condicin. Una vez deje de cumplirse se sale del bucle.
La sintaxis a utilizar en Matlab es la siguiente:
Ejemplo 7:
Crear un programa que realice lo siguiente:
Preguntar un nmero al usuario y detenerse cuando ese nmero sea mayor que 100.
A continuacin se muestra el programa y un ejemplo de su aplicacin.
Curso: Computacin II
Ciclo: III
Semana 05 y 06
10
Ejemplo 8:
t
100
= 50.
El primer paso en el programa es inicializar las variables, es decir definirlas a cero o vacas para que al
ejecutarlas la primera vez no d error.
Se crea el programa utilizando la sintaxis explicada de while.
El disp(t) es simplemente para conocer el ltimo valor de tiempo que evala la funcin, restringida hasta
que la funcin vale 50.
Para crear la representacin grfica, basta con utilizar el comando plot de la forma explicada en
captulos anteriores despus del bucle, y usando los valores de tiempo y de la funcin creados en el
bucle.
Una vez guardado el archivo creado como ejemplo8.m se ejecuta desde la ventana principal de Matlab y
se comprueba la respuesta del programa.
Segn los comandos usados, debe dar el valor de tiempo ltimo y la representacin.
El resultado es el siguiente:
Curso: Computacin II
Ciclo: III
Semana 05 y 06
11
COMANDOS DE IMPRESIN
Dentro de los comandos ms tiles de Matlab, similares a disp se encuentran sprintf y fprintf, que
permiten la impresin de datos con formatos ms complejos.
La forma de utilizarlos es la siguiente:
Curso: Computacin II
Ciclo: III
Semana 05 y 06
12
Cada vez que se indica en el sprintf o fprintf con %g indica que ah va el valor de las variables. El texto
que queremos como respuesta se delimita con el uso de las comillas simples, y despus hay que indicar
cules son las variables a las que quiero hacer referencia con el uso de %g, en este caso t y f.
As:
Se escribe function y a continuacin entre corchetes se designan los argumentos de salida que dar la
funcin. Despus del igual, se designa el nombre de la funcin (el mismo con el que se guardar el
fichero.m) seguido por los argumentos de entrada que necesitar la funcin.
Curso: Computacin II
Ciclo: III
Semana 05 y 06
13
Como siempre, la creacin de funciones quedar ms clara con los ejemplos explicativos que se incluyen
a continuacin:
Ejemplo 9:
x
2
Ejemplo 10:
La funcin f ( x) e x es puede aproximar con Taylor:
xn
T ( x)
n 0 n!
Escribir una funcin que utilice la serie de Taylor para aproximar la siguiente funcin: f ( x) e x
Curso: Computacin II
Ciclo: III
Semana 05 y 06
14
Se comprueba ejecutndolo en el command windows, como ya hemos visto anteriormente, hay que
llamar a la funcin por su nombre.
Curso: Computacin II
Ciclo: III
Semana 05 y 06
15
z f ( x, y)
En este apartado se explicarn comandos tiles para representar grficas en 3D, es decir, funciones del
tipo:
x f (t )
y g (t )
z h(t )
Para cada valor de t tendremos un punto en x, y, z. As, para representarla:
plot3(x,y,z,'o')
Ejemplo 11:
Dadas las siguientes funciones representarlas para los valores de t entre 0 y 6.
x t sen (2 t )
y t cos (2 t )
z 0.5 t
Curso: Computacin II
Ciclo: III
Semana 05 y 06
16
ESTRUCTURAS
Como se explic en la parte del temario referente a tipos de variables, matlab permite la creacin de
estructuras.
As, podemos almacenar datos estructurados en campos.
Sintaxis: <nombre_estructura>. <campos>
En el siguiente ejemplo se muestra como se crea la estructura. Tambin, vemos que una vez creada,
puedes ver todos los campos que contienen poniendo simplemente el nombre asignado.
Ejemplo 12:
Curso: Computacin II
Ciclo: III
Semana 05 y 06
17
Algunos comandos tiles para estructuras son los que se explican a continuacin.
SETFIELD, y GETFIELD.
Setfield: sirve para cambiar un dato concreto en una estructura que ya tenas creada.
Hay que indicar el nombre de la estructura, el elemento, el campo, el elemento del campo que
quiero modificar y el nuevo valor a introducir.
Por ejemplo, una vez creada la estructura:
>> persona(1).pesos = [ 20 30 40],
deseo cambiar el segundo dato por un cero:
>> persona = Setfield(persona,1,pesos,2,0)
As, queda modificado el array persona, pero slo en el elemento deseado.
Getfield: extrae el campo indicado, en la forma:
Getfield (estructura, elemento, campo)
Por ejemplo, siguiendo con la estructura anterior, si se desea extraer el campo pesos:
>> Getfield (persona, 1, pesos)
>> ans
[20 0 40]
ISA: tiene una funcin similar a comando anterior pero de una forma ms elaborada: El usuario
preguntar por una variable en concreto y un tipo de dato. Si la variable coincide con el tipo de
dato la respuesta ser 1 y en caso contrario 0.
Curso: Computacin II
Ciclo: III
Semana 05 y 06
Ejemplo 13:
Quiero guardar un listado de Alumnos, Edad y Calificaciones en Fsica, lgebra y Fundamentos de
Informtica
Y hay que hallar:
a) Media por alumno.
b) Media de toda la clase en Fsica.
c) Alumno con mayor nota en Fsica.
Curso: Computacin II
Ciclo: III
18
Semana 05 y 06
19
a)
MEAN ([ALUMNO (1). FSICA, ALUMNO (1).LGEBRA, ALUMNO
(1).INFORMTICA])
Para hacer con todos los alumnos se podra hacer con un programa como el siguiente:
b)
c)
Sera:
>> MAX([alumno.fsica])
Pero lo normal, es que lo que interese saber es cul es el alumno. Para saber ello:
[V, n]= MAX ([ALUMNO. FSICA])
Siendo V el valor y n la posicin.
DISP (ALUMNO (n). NOMBRE)
FUNCIONES DE REDONDEO.
Para algunas operaciones matemticas y en el uso de programas, muchas veces es necesario obtener un
dato de forma redondeada para no crear errores.
Algunas de las funciones son:
ROUND (n): redondea al nmero ms prximo.
FIX (n): redondea al entero que est por debajo sin tener en cuenta los decimales.
REM (M, n): divide M entre n, dndonos el resto de la divisin.
M n
R c
Doc. Ing. Suxe Ramrez Alicia
Curso: Computacin II
Ciclo: III
Semana 05 y 06
Ejemplo 14:
Round (3,6)= 4
Fix (3,6) = 3
Rem (15,4) = 3
Ejemplo 15:
Crear un programa que nos cambie un nmero decimal a binario.
RAMIFICACIN MLTIPLE
Se utiliza mucho para crear mens.
valor 3
variable
Distinto
valor 2
valor 1
Curso: Computacin II
Ciclo: III
20
Semana 05 y 06
21
Ejemplo 16:
Crear un programa que realice operaciones matemticas con dos nmeros segn la opcin elegida.
A continuacin se muestra el programa creado y la comprobacin en su ejecucin.
Curso: Computacin II
Ciclo: III
Semana 05 y 06
22
Ejemplo 17:
Crear un programa que realice operaciones matemticas para saber si dada la siguiente funcin tiene un
mnimo local:
f (x) x 2 x 6
Curso: Computacin II
Ciclo: III