Professional Documents
Culture Documents
Introducci
on al Matlab
1.1
Introducci
on
n al Matlab
Captulo 1. Introduccio
Communications Toolbox
Control System Toolbox
Curve Fitting Toolbox
Data Acquisition Toolbox
Database Toolbox
Filter Design Toolbox
Financial Toolbox
Financial Time Series Toolbox
Fuzzy Logic Toolbox
Image Processing Toolbox
Instrument Control Toolbox
Model Predictive Control Toolbox
Neural Network Toolbox
Optimization Toolbox
Robust Control Toolbox
Signal Processing Toolbox
Spline Toolbox
Statistics Toolbox
Symbolic/Extended Symbolic Math ToolboxSystem Identification Toolbox
Wavelet Toolbox
Mapping Toolbox
Introduccin al Matlab
1.1: Ventana
de MATLAB
5.3.
En la pantallaFigura
inicial aparece
el prompt inicial
caracterstico
de MATLAB
(). Esto quiere
decir que el programa est preparado para empezar a trabajar. Si se quiere que aparezca
un saludo inicial se puede realizar modificando un fichero de comandos personal que se
ejecuta cada vez que se entra en el programa. Este fichero es el fichero matlabrc.m. Este
pantallas de comandos
graficos,
Destacar
que las diferentes
opciones sobre
fichero tambin y
controla
otra serieetc.
de parmetros
de funcionamiento
importantes como
son los directorios de trabajo, forma/color de las pantallas de comandos y grficos, etc.
estos parametros
se pueden variar de forma mas sencilla usando los tpicos men
us
Destacar que las diferentes opciones sobre estos parmetros se pueden variar de forma
sencilla
usando los tambi
tpicos mens
de ofrece.
Windows y que MATLAB tambin nos
de Windows ymsque
MATLAB
en nos
ofrece.
Antes de comentar el programa destacar que nos podemos desplazar sobre la lnea
Antes de comentar el programa destacar que nos podemos desplazar sobre la lnea de
de comandos comandos
con lascon
teclas
y .
se puede
ir aldeprincipio
la lnea con la
las teclas
y .Adem
Adems a
ses puede
ir al principio
la lnea con lade
tecla
Inicio,
al
final
de
la
lnea
con
Fin,
y
borrar
toda
la
lnea
con
Esc.
Para
borrar
todas
las
tecla Inicio, al final de la lnea con Fin, y borrar toda la lnea con Esc. Para borrar
salidas anteriores de MATLAB y dejar limpia la ventana principal se puede utilizar las
todas las salidas
anteriores
de MATLAB
y dejar
la ventana
principal
se puede
funciones
clc. Si se desea
salir del programa
se tienenlimpia
como opciones
los comandos
quit
o exit, o bien Exit MATLAB en el men File. Adems, al igual que todas las
utilizar las funciones
Si se
desea
salir
del Alt+F4.
programa se tienen como opciones los
aplicacionesclc.
Windows,
tambin
se puede
utilizar
comandos quit o exi t, o bien Exit MATLAB en el men
u File. Ademas, al igual
Si se encuentran dificultades MATLAB 5.3 dispone de un excelente fichero de ayuda
que todas las que
aplicaciones
tambien se puede utilizar Alt+F4.
tiene todo lo queWindows,
uno puede desear.
Si se encuentran dificultades MATLAB 5.3 dispone de un excelente fichero de
ayuda que tiene todo lo que uno puede desear.
En la u
ltima figura se muestran las distintas opciones que aparecen en el men
u
de ayuda:
n
1.1 Introduccio
Introduccin al Matlab
papel.
4. Examples and Demos. Llegamos a una ventana que da acceso a un buen
nmero de ejemplos resueltos con MATLAB. Es bastante interesante recorrer
Examples
and para
Demos.
una ventanadelque
da acceso a un buen
estos ejemplos
hacerseLlegamos
idea de lasaposibilidades
programa.
n
umero de ejemplos resueltos con MATLAB. Es bastante interesante recorrer
estos se
ejemplos
para hacerse
de las
posibilidades
del programa.
Adems,
puede tambin
recurriridea
al Help
desde
la lnea de comandos.
La instruccin
helpwin seguido de un nombre de comando muestra la informacin correspondiente a
ese
comando
la ventana
Window,
incluyendo
similaresLa
Adem
as, se en
puede
tambieHelp
n recurrir
al Help
desdetambin
la lneacomandos
de comandos.
sobre
los
que
se
ofrece
ayuda.
El
comando
doc
seguido
de
un
nombre
de
comando
instruccion helpwin seguido de un nombre de comando muestra la informacion
muestra la informacin correspondiente a ese comando a travs de Netscape Navigator
correspondiente a ese comando en la ventana Help Window , incluyendo tambien
o Internet Explorer, en formato HTML.
comandos similares sobre los que se ofrece ayuda. El comando doc seguido de un
nombre
de comando
muestra
la informaci
on correspondiente
a ese
a traves
El entorno
de trabajo
de MATLAB
ha mejorado
mucho desde
su comando
versin original
hacindose
mucho
ms
grfico
e
intuitivo.
Los
componentes
ms
importantes
del
de Netscape Navigator o Internet Explorer, en formato HTML.
entorno de trabajo de MATLAB son el editor de directorios de trabajo (Path Browser),
El entorno de trabajo de MATLAB ha mejorado mucho desde su version origiel editor y depurador de errores (Editor & Debugger) y el visualizador del espacio de
naltrabajo
haciendose
mucho m
as graficoAe continuacin
intuitivo. Losse componentes
mas importantes
(Workspace
Browser).
describen brevemente
estos
componentes.
n al Matlab
Captulo 1. Introduccio
1.1.1
Establecer el camino de b
usqueda
MATLAB puede llamar a una gran variedad de funciones, tanto propias como
programadas por los usuarios. Es necesario conocer cuales son las reglas que determinan que funcion o que fichero es el que se va a ejecutar cuando su nombre
aparezca en una lnea de comandos del programa. Estas reglas quedan determinadas
por el camino de b
usqueda que el programa utiliza cuando encuentra el nombre de
una funcion. Este camino es una lista de directorios que se puede ver y modificar a
partir de la lnea de comandos, o utilizando el Path Browser. El comando path
hace que se escriba el search path de MATLAB (el resultado depende de en que
directorio esta instalado MATLAB):
Para ver como se utiliza el search path supongase que se utiliza la palabra
nombre1 en un comando. El proceso que sigue el programa para tratar de conocer
que es nombre1 es el siguiente:
1. Comprueba si nombre1 es una variable previamente definida por el usuario.
2. Comprueba si nombre1 es una una funcion privada del usuario.
3. Comprueba si nombre1 es una funcion del usuario.
4. Comprueba si nombre1 es una funcion interna o intrnseca de MATLAB.
5. Comprueba si hay un fichero llamado nombre1.mex, nombre1.dll o nombre1.m en el directorio actual, cuyo contenido se obtiene con el comando
dir .
6. Comprueba si hay ficheros llamados nombre1.mex, nombre1.dll o nombre1.m en los directorios incluidos en el search path de MATLAB.
Estos pasos se realizan en el orden indicado. Cuando se encuentra lo que se
esta buscando se detiene la b
usqueda y se utiliza el fichero que se ha encontrado.
Conviene saber que, a igualdad de nombre, los ficheros *.mex se ejecutan antes
que los ficheros *.m que estan en el mismo directorio. El concepto de directorio
actual es importante en MATLAB. Para cambiar de directorio actual se utiliza el
comando cd , seguido del nombre del directorio, para el cual se puede utilizar un
path absoluto (por ejemplo cd C:\Matlab\Ejemplos) o relativo (cd Ejemplos).
n
1.1 Introduccio
MATLAB permite utilizar tanto la barra normal (/) como la barra invertida (\).
Para subir un nivel en la jerarqua de directorios se utiliza el comando cd .
Path Browser define los directorios donde MATLAB debe buscar los ficheros
de comandos y las funciones. Con el comando Set Path del men
u File se muestra
la lista de directorios en la que MATLAB buscara. En la figura 3 se muestra un
ejemplo de dicho
path.al Matlab
Introduccin
Para aadir
(o quitar)
directorio ade
estab
lista
se debe ejecutar
el comando5.3.
Add to Path
Figura
1.3:un Camino
usqueda
de MATLAB
(o Remove Path) en el men Path de dicho cuadro de dilogo. El nuevo directorio se
puede aadir al comienzo o final de la lista. El orden de la lista es muy importante,
refleja el orden de la bsqueda: si una funcin est en dos directorios, se
a
nadirporque
(o quitar)
un directorio a esta lista se debe ejecutar el comando
utilizar la que primero se encuentre.
Para
Add
to Path (o Remove Path) en el men
u Path de dicho cuadro de dialogo. El nuevo
Desde la pantalla de comandos del MATLAB tambin se puede modificar el camino
seguido por
su bsqueda de o
la variables
o funcin
correspondiente.
As, el de la lista es
directorio se puede
a
nMATLAB
adir alencomienzo
final de
la lista.
El orden
comando addpath permite aadir uno o ms directorios al search path. Adems se
muy importante,
porque
refleja
el
orden
de
la
b
u
squeda:
si
una
funci
a en dos
puede utilizar el comando rmpath (de remove path), al que se le pasan la lista de on est
directorios a eliminar del search path. Por ejemplo, el comando: rmpath 'c:\Matlab'
directorios, se utilizar
a la que primero se encuentre.
'c:\Temp' borra del search path los dos directorios indicados.
Desde la pantalla de comandos del MATLAB tambien se puede modificar el camiEditor de ficheros y depurador de errores.
MATLAB aparecen
los ficheros-M
(o M-files);
ficheros de texto
ASCII,on
concorrespondiente.
la
no seguido porEnMATLAB
en su
b
usqueda
de lason
variables
o funci
extensin *.m, que contienen conjuntos de comandos o definicin de funciones. Tras
As, el comando
addpath
nadir
o may spulsar
directorios
al search path.
teclear
el nombre de permite
estos ficherosa
en
la lnea uno
de comandos
Intro, se ejecutan
todos los comandos contenidos en dicho fichero.
Ademas se puede utilizar el comando rmpath (de remove path), al que se le pasan
MATLAB dispone
de un editor
que le permite
crearPor
y modificar
estos ficheros,
la lista de directorios
a eliminar
delpropio
search
path.
ejemplo,
el comando: rmas como ejecutarlos paso a paso para ver si contienen errores (proceso de depuracin).
Este
editor
muestra
con
diferentes
colores
los
diferentes
tipos
o
elementos
constitutivos
path c:\Matlab c:\Temp borra del search path los dos directorios indicados.
1.1.2
de los comandos (en verde los comentarios, en rojo las cadenas de caracteres, etc.).
Adems supervisa que las comillas o parntesis que se abren, no se queden sin el
correspondiente elemento de cierre. Este editor/depurador es un programa enormemente
til para detectar y corregir errores, que hay que conocer muy bien. Para ello lo mejor es
practicar.
En MATLAB
aparecen los ficheros-M (o M-files); son ficheros de texto ASCII,
El espacio de trabajo en MATLAB.
con la extension *.m, que contienen conjuntos de comandos o definici
on de
6
funciones. Tras teclear el nombre de estos ficheros en la lnea de
comandos y
pulsar Intro, se ejecutan todos los comandos contenidos en dicho fichero.
MATLAB dispone de un editor propio que le permite crear y modificar estos
ficheros, as como ejecutarlos paso a paso para ver si contienen errores (proceso de
n al Matlab
Captulo 1. Introduccio
depuracion). Este editor muestra con diferentes colores los diferentes tipos o elementos constitutivos de los comandos (en verde los comentarios, en rojo las cadenas
de caracteres, etc.). Ademas supervisa que las comillas o parentesis que se abren,
no se queden sin el correspondiente elemento de cierre. Este editor/depurador es un
programa enormemente u
til para detectar y corregir errores, que hay que conocer
muy bien. Para ello lo mejor es practicar.
1.1.3
Figuracualquiera
1.4: Variables
espaciopor
deejemplo
trabajosobre
de MATLAB.
Si se pulsa sobre
de estasdel
variables,
x, se abre una ventana
como la que muestra la siguiente figura:
Si se pulsa sobre cualquiera de estas variables, por ejemplo sobre x, se abre una
ventana como la que muestra la Fig. 1.5:
1.1.4
cualquiera
1.1SiIntroducci
n
se pulsa sobreo
de estas variables, por ejemplo sobre x, se abre una ventana 7
como la que muestra la siguiente figura:
En esta figura aparecen los diferentes formatos numericos que puede tener MATLAB. Estos formatos son los que usa para mostrar los resultados (siempre calcula
con la maxima precision). Los mas importantes son los siguientes:
7
format short coma fija con 4 decimales .
format long coma fija con 15 decimales.
format hex cifras hexadecimales.
format bank n
umeros con dos cifras decimales.
format short e notacion cientfica con 4 decimales.
format short g notacion cientfica o decimal, dependiendo del valor.
format long e notacion cientfica con 15 decimales.
format loose introduce algunas lneas en blanco en la salida .
format compact elimina las lneas en blanco citadas .
format rat expresa los n
umeros racionales como cocientes de enteros
Comentar que estos formatos tambien se pueden activar desde la lnea de comandos.
Relacionado con los diferentes formatos numericos comentar que MATLAB aplica
un factor de escala general a las matrices cuando los elementos mas grandes, o
Introduccin al Matlab
Figura los
1.6:diferentes
Men
u de
preferencias
de MATLAB.
En esta figura aparecen
formatos
numricos
que puede tener MATLAB.
Estos formatos son los que usa para mostrar los resultados (siempre calcula con la
mxima precisin). Los ms importantes son los siguientes:
mas peque
nos, son superiores, o inferiores, a una determinada cantidad; ademas
format
fija conde
4 decimales
MATLAB trata
de short
mantener elcoma
formato
los n
umeros que han sido definidos como
format long
coma fija con 15 decimales
enteros (sin
punto decimal). cifras hexadecimales
format hex
El cuadro
de di
alogo Command
Window
de la Figura 6 ofrece la posi format
bank
nmeros con
dos cifrasFont
decimales
format
short
e
notacin
cientfica
con
4
decimales
bilidad de elegir el tipo de letra as como el tama
no y el color, tanto de las letras
format short g
notacin cientfica o decimal, dependiendo del valor
como del fondo utilizada en la ventana de comandos de MATLAB. Es mejor utilizar
format long e notacin cientfica con 15 decimales
tipos de letra
de tama
para
que lneas
la salida
se alinee
bien en la pantalla.
format
looseno constante
introduce
algunas
en blanco
en la salida
1.2
format compact
format rat
Operaciones
comentar que estos formatos tambin se pueden activar desde la lnea de comandos.
sicas
1.2 Operaciones ba
proporcionan (o se utilizan). Las matrices se definen por filas; los elementos de una
misma fila estan separados por espacios o comas las filas, sin embargo, estan separadas por retornos de carro o por caracteres punto y coma (;). A modo de ejemplo
la siguiente instruccion define una matriz, A, de dimension 3x3.
>> A=[1 2 3; 4 5 6; 7 8 9]
La respuesta del programa es la siguiente:
A
1
4
7
=
2 3
5 6
8 9
10
n al Matlab
Captulo 1. Introduccio
sicas
1.2 Operaciones ba
1.2.1
11
Tipos de datos
12
n al Matlab
Captulo 1. Introduccio
sicas
1.2 Operaciones ba
13
14
n al Matlab
Captulo 1. Introduccio
15
sicas
1.2 Operaciones ba
Existen muchas mas y, al igual que con ejemplos anteriores se sugiere al lector
que utilice el fichero de ayuda de MATLAB para ver todas las posibilidades que se
le ofrecen.
Otras formas de definicion de matrices seran los ficheros .m. MATLAB acepta
este tipo de ficheros que contienen instrucciones y/o funciones. Dichos ficheros se
llaman desde la lnea de comandos tecleando su nombre, sin la extension. Las variables definidas dentro de un fichero de comandos *.m que se ejecuta desde la lnea de
comandos son variables globales, esto es, pueden ser accedidas desde fuera de dicho
fichero; no sucede lo mismo si el fichero *.m corresponde a una funcion. Si un fichero
de comandos se llama desde una funcion, las variables que se crean pertenecen al
espacio de trabajo de dicha funcion, son locales.
Existe un operador muy importante en MATLAB por el uso tan extendido que se
le da; este operador es el operador dos puntos (:). En cierta forma se podra decir que
el operador (:) representa un rango. As, si se tiene x=1:2:10, el vector x contendra
los enteros de 1 a 10 a incrementos de dos (en definitiva se tendran los impares).
Por defecto el incremento es 1, pero este operador puede tambien utilizarse con
otros valores enteros y reales, positivos o negativos. Puede verse que, por defecto,
este operador produce vectores fila. Si se desea obtener un vector columna basta
trasponer el resultado.
El operador dos puntos (:) es muy u
til y potente con matrices. Recuerdese que
MATLAB accede a los elementos de una matriz por medio de los ndices de fila y
de columna encerrados entre parentesis y separados por una coma. Podemos usar
el operador : para acceder a una determinada submatriz de una matriz. As por
ejemplo A(2,3:5) sera el vector correspondiente a la segunda fila de la matriz pero
considerando solamente las columnas 3,4 y 5. Los dos puntos aislados representan
todos los elementos. Por ejemplo, el comando A(3,:) extrae todos los elementos
de la 3a fila de la matriz A. Para acceder a la u
ltima fila o columna puede utilizarse
la palabra end, en lugar del n
umero correspondiente.
Uno de los posibles problemas que se puede encontrar al trabajar con MATLAB
son la matriz vaca. Para MATLAB una matriz definida sin ning
un elemento entre
los corchetes es una matriz que existe, pero que esta vaca, o lo que es lo mismo que
tiene dimensi
on cer o. Las funciones exist() e isempty() permiten chequear si una
variable existe y si esta vaca.
En cuanto a operadores en MATLAB comenzaremos por los relacionales; estos
son:
< menor que
> mayor que
<= menor o igual que
16
n al Matlab
Captulo 1. Introduccio
1.3
Funciones de Matlab
17
18
n al Matlab
Captulo 1. Introduccio
19
20
n al Matlab
Captulo 1. Introduccio
1.3.1
C
alculo de normas de matrices.
1.3.2
C
alculo de normas de vectores.
21
all(x) funcion vectorial; comprueba si todos los elementos del vector x cumplen
una condicion. Devuelve un uno o un cero. Si x es una matriz se aplica por
separado a cada columna. El resultado es un vector de unos y ceros.
find(x) busca ndices correspondientes a elementos de vectores que cumplen
una determinada condicion. El resultado es un vector con los ndices de los
elementos que cumplen la condicion. Cuando esta funcion se aplica a una
matriz la considera como un vector con una columna detras de otra, de la 1a
a la u
ltima.
Relacionadas con estas existen otras funciones que comprueban otras condiciones:
exist(var) comprueba si la variable var existe
isnan() comprueba si hay valores NaN, devolviendo una matriz de unos y ceros.
isinf() comprueba si hay valores Inf, devolviendo una matriz de unos y ceros.
isfinite() comprueba si los valores son finitos.
isempty() comprueba si un vector o matriz esta vaco.
ischar() comprueba si una variable es una cadena de caracteres.
isglobal() comprueba si una variable es global.
issparse() comprueba si una matriz tiene un gran n
umero de ceros.
1.4
Datos en Matlab
22
n al Matlab
Captulo 1. Introduccio
23
24
n al Matlab
Captulo 1. Introduccio
25
26
n al Matlab
Captulo 1. Introduccio
27
28
n al Matlab
Captulo 1. Introduccio
nombre: Juan
edad: 19
La gran ventaja de las estructuras y los arrays de celdas es que proporcionan una
gran flexibilidad para el almacenamiento de los mas diversos tipos de informacion.
1.5
Programaci
on de Matlab
MATLAB permite programar muy facilmente; de tal forma que, como lenguaje
de programacion, tiene tantas posibilidades como otros lenguajes. As, dispone de
sentencias para realizar bifurcaciones y bucles. Las bifurcaciones permiten realizar
una u otra operacion seg
un se cumpla o no una determinada condicion. Los bucles
permiten repetir las mismas o analogas operaciones sobre datos distintos.
Comenzando por las bifurcaciones tenemos la instruccion basica if . En su forma
mas simple, la sentencia if se escribe en la forma siguiente:
if condicion
sentencias
end
Existe tambien la bifurcaci
on m
ultipl e, en la que pueden concatenarse tantas
condiciones como se desee:
if condicion1
bloque1
elseif condicion2
bloque2
elseif condicion3
bloque3
else (si no se cumplen las condiciones 1,2 y 3).
bloque4
end
Aqu la opcion por defecto else puede ser omitida: si no esta presente no se hace
nada en caso de que no se cumpla ninguna de las condiciones que se han chequeado.
Destacar que la condicion del if puede ser una condici
on matricial, del tipo
A==B, donde A y B son matrices del mismo tama
no. Para que se considere que la
condici
on se cumple, es necesario que sean iguales dos a dos todos los elementos de
las matrices A y B.
n de Matlab
1.5 Programacio
29
30
n al Matlab
Captulo 1. Introduccio
for i=1:m
for j=1:n
sentencias
end
end
Continuando con bucles llegamos a la estructura de bucle while. Su sintaxis es
la siguiente:
while condicion
sentencias
end
Aqu condicion puede ser una expresion vectorial o matricial. Las sentencias se
siguen ejecutando mientras haya elementos distintos de cero en condicion, es decir,
mientras haya alg
un o algunos elementos true. El bucle se termina cuando todos
los elementos de condicion son false (es decir, cero). Como complemento a estas
instrucciones esta la sentencia break que termina la ejecucion del bucle mas interno
de los que comprenden a dicha sentencia.
En cuanto a la introduccion de las variables existe una forma sencilla de leer
variables desde teclado y escribir mensajes en la pantalla del PC. La funcion input
permite imprimir un mensaje en la lnea de comandos de MATLAB y recuperar
como valor de retorno un valor numerico o el resultado de una expresion tecleada
por el usuario. Despues de imprimir el mensaje, el programa espera que el usuario
teclee el valor numerico o la expresion. Como complemento a esta instruccion esta la
funcion disp que permite imprimir en pantalla un mensaje de texto o el valor de una
matriz, pero sin imprimir su nombre. En realidad, disp siempre imprime vectores
y/o matrices: las cadenas de caracteres son un caso particular de vectores.
Los ficheros con extension (.m) son ficheros de texto sin formato (ficheros ASCII)
que constituyen el centro de la programacion en MATLAB. Ya se han utilizado
en varias ocasiones. Estos ficheros se crean y modifican con un editor de textos
cualquiera. En el caso de MATLAB 5.3 ejecutado en un PC bajo Window s, lo mas
sencillo es utilizar su propio editor de textos.
1.6
Ficheros *.m
31
32
n al Matlab
Captulo 1. Introduccio
que la funcion ha sido llamada. Dentro de la funcion, estas variables pueden ser
utilizadas como el programador desee. Tanto el n
umero de argumentos como el de
valores de retorno no tienen que ser fijos.
Desde la version 5.0, MATLAB dispone de una nueva forma de pasar a una
funcion un n
umero variable de argumentos por medio de la variable varargi n, que
es un vector de celdas que contienen tantos elementos como sean necesarios para
poder recoger, en dichos elementos, todos los argumentos que se hayan pasado en
la llamada. No es necesario que varargin sea el u
nico argumento, pero s debe ser
el u
ltimo, pues recoge todos los argumentos a partir de una determinada posicion.
De forma analoga, una funcion puede tener un n
umero indeterminado de valores de
retorno utilizando varargout, que es tambien un cell array que agrupa los u
ltimos
valores de retorno de la funcion. Puede haber otros valores de retorno, pero varargout
debe ser el u
ltimo.
Un tipo interesante de variables son las persistentes que son variables locales de
las funciones (pertenecen al espacio de trabajo de la funcion y solo son visibles en
dicho espacio de trabajo), y que conservan su valor entre distintas llamadas a la
funcion. Por defecto, las variables locales de una funcion se crean y destruyen cada
vez que se ejecuta la funcion. Las variables persistentes se pueden definir en funciones, pero no en ficheros de comandos. Las variables se declaran como persistentes
utilizando la palabra persistent seguida de los nombres de las diferentes variables
separados por blancos. Las variables persistent se inicializan a la matriz vaca [ ] y
permanecen en memoria hasta que se hace clear de la funcion o cuando se modifica
el fichero-M. Para evitar que un fichero-M se modifique se puede utilizar el comando
mlock file.m, que impide la modificacion del fichero. El comando munlock desbloquea el fichero mientras que la funcion mislocked permite saber si esta bloqueado o
no.
Destacar que a partir de la version 5.0 se han introducido las sub-funciones, que
son funciones adicionales definidas en un mismo fichero *.m, con nombres diferentes
del nombre del fichero (y del nombre de la funcion principal) y que las sub-funciones
solo pueden ser llamadas por las funciones contenidas en ese fichero, resultando
invisibles para otras funciones externas.
Otro tipo de funciones son las funciones privadas. Este tipo de funciones no se
pueden llamar desde cualquier otra funcion, aunque se encuentren en el camino de
b
usqueda o en el directorio actual. Solo ciertas funciones estan autorizadas a utilizarlas. Las funciones privadas se definen en sub-directorios que se llaman private y solo
pueden ser llamadas por funciones definidas en el directorio padre del sub-directorio
private. En la b
usqueda de nombres que hace MATLAB cuando encuentra un nombre en una expresion, las funciones privadas se buscan inmediatamente despues de
las sub-funciones, y antes que las funciones de tipo general.
Otra extension posible a las funciones es *.p. Las funciones *.p son funciones *.m
33
34
n al Matlab
Captulo 1. Introduccio
35
36
n al Matlab
Captulo 1. Introduccio
fseek permite mover este cursor hacia delante o hacia atras, respecto a la posicion
actual (cof), respecto al principio (bof) o respecto al final del fichero (eof). La
funcion ftell indica en que posicion esta el cursor. Si alguna vez se necesita utilizar
este tipo de acceso a disco, se puede buscar mas informacion por medio del help.
1.7
Gr
aficos en Matlab
ficos en Matlab
1.7 Gra
37
38
n al Matlab
Captulo 1. Introduccio
Cuando
dibujar
varias
lneas,
por defecto
van cogiendo
sucesivamente
Cuando
hayhay
queque
dibujar
varias
lneas,
por defecto
se vansecogiendo
sucesivamente
los
loscolores
colores
tabla
comenzando
el hacia
azul, arriba,
hacia yarriba,
cuando
se se
terminan
dede
la la
tabla
comenzando
por elpor
azul,
cuandoy se
terminan
vuelve se
a empezar
otra vez
porvez
el azul.
Si azul.
el fondo
es fondo
blanco,eseste
color este
no secolor
utilizanopara
las
vuelve
a empezar
otra
por el
Si el
blanco,
se utiliza
lneas.
para las lneas.
Existe
la posibilidad
de a
nlneas
adir l
a un ya
graexistente,
fico ya existente,
sinodestruirlo
Existe
la posibilidad
de aadir
aneas
un grfico
sin destruirlo
sin abrir o
sinuna
abrir
una
nuevaSeventana.
Se ello
utilizan
para ellohold
los on
comandos
on y de
hold
nueva
ventana.
utilizan para
los comandos
y hold off.hold
El primero
ellos
hace
que
los
grficos
sucesivos
respeten
los
que
ya
se
han
dibujado
en
la
figura
(es
off. El primero de ellos hace que los graficos sucesivos respeten los que ya se han
posible que
haya
que modificar
la escala
de losque
ejes);
el comando
hold off
el el
dibujado
en la
figura
(es posible
que haya
modificar
la escala
dedeshace
los ejes);
efecto de hold on.
comando hold off deshace el efecto de hold on.
Una
ventana
grafica
se puede
dividir
m particiones
horizontales
y n verticales,
Una
ventana
grfica
se puede
dividir
en menparticiones
horizontales
y n verticales,
con
objeto
de
representar
mltiples
grficos
en
ella.
Cada
una
de
estas
subventanas
tiene
sus
con objeto de representar m
ultiples graficos en ella. Cada una de estas subventanas
propios
ejes.
La
forma
general
de
este
comando
es
subplot(m,n,i)donde
m
y
n
son
el
tiene sus propios ejes. La forma general de este comando es subplot(m,n,i)donde
nmero de subdivisiones en filas y columnas, e i es la subdivisin donde se realiza la
mgrfica.
y n sonLas
el n
umero de subdivisiones
filas y columnas,empezando
e i es la subdivisi
n donde
subdivisiones
se numeranenconsecutivamente
por las ode
la
se primera
realiza fila,
la gr
afica. Las
se numeran
consecutivamente empezando por
siguiendo
porsubdivisiones
las de la segunda,
etc.
las de la primera fila, siguiendo por las de la segunda, etc.
Para
modificar
los ejes
se utiliza
la instruccin
axis.onPoraxis.
defecto,
MATLAB
la
Para
modificar
los ejes
se utiliza
la instrucci
Por
defecto, ajusta
MATLAB
escala de cada uno de los ejes de modo que vare entre el mnimo y el mximo valor de
ajusta
la escala
de cada Este
uno es
deellos
ejes de
modo
e entre
el m
nimo y el
los vectores
a representar.
llamado
modo
auto.que
Paravar
definir
de modo
explcito
malos
ximo
valor
de losy vectores
a representar.
llamado
modo auto.
Para
valores
mximo
mnimo segn
cada eje, se Este
utilizaesel el
comando
axis([xmin,
xmax,
ymin,de
ymax]),
que
elnimo
escalado
ejeseje,
al valor
por el
definir
modomientras
explcito
losaxis(auto)
valores madevuelve
ximo y m
seg
uden los
cada
se utiliza
defecto oaxis([xmin,
automtico. Otros
posibles
usosymax]),
de este comando
sonque
losaxis(auto)
siguientes:
comando
xmax,
ymin,
mientras
devuelve
el escalado de los ejes al valor por defecto o automatico. Otros posibles usos de este
v=axis devuelve un vector v con los valores [xmin, xmax, ymin, ymax]
axis(axis) mantiene los ejes en sus actuales valores de cara a posibles
nuevas grficas aadidas con hold on.
axis('ij') utiliza ejes de pantalla, con el origen en la esquina superior izda
y el eje j en direccin vertical descendente.
34
ficos en Matlab
1.7 Gra
39
40
n al Matlab
Captulo 1. Introduccio
ficos en Matlab
1.7 Gra
41
Observese que la funcion mifunc devuelve una matriz con dos columnas, que
constituyen las dos graficas dibujadas. En este caso se ha utilizado para ellas el color
verde.
Podemos introducir datos en la pantalla grafica mediante el raton. Pa ello se
utiliza la funcion ginput, que permite introducir las coordenadas del punto sobre el
que esta el cursor al pulsar una tecla. Algunas formas de utilizar esta funcion son
las siguientes:
[x,y] = ginput lee un n
umero indefinido de puntos hasta que se termina
pulsando la tecla intro.
[x,y] = ginput(n) lee las coordenadas de n puntos.
[x,y,bot] = ginput igual que el anterior, pero devuelve tambien un vector de
enteros bot con el codigo ASCII de la tecla pulsada o el n
umero del boton del
raton.
MATLAB tambien ofrece la posibilidad de hacer animaciones de graficos o pelculas.
Para ello se pueden utilizar las funciones: movi e, moviein y getframe. Una
pelcula se compone de varias imagenes, denominadas frames. La funcion getframe devuelve un vector columna con la informacion necesaria para reproducir la
imagen que se acaba de representar en la figura o ventana grafica activa, por ejemplo
con la funcion plot. El tama
no de este vector columna depende del tama
no de la
ventana, pero no de la complejidad del dibujo. La funcion moviein(n) reserva memoria para almacenar n frames. La siguiente lista de comandos creara una pelcula
de 17 imagenes o frames, que se almacenaran como las columnas de la matriz M:
M = moviein(17);
x=[-2*pi:0.1:2*pi];
for j=1:17
y=sin(x+j*pi/8);
plot(x,y);
M(:,j) = getframe;
end;
Una vez creada la pelcula se puede representar el n
umero de veces que se desee
con el comando movi e. Por ejemplo, para representar 10 veces la pelcula anterior, a
15 imagenes por segundo, habra que ejecutar el comando siguiente (los dos u
ltimos
parametros son opcionales):
movie(M,10,15)
42
n al Matlab
Captulo 1. Introduccio
Finalmente hay que dibujar esta matriz Z con la funcin mesh. A modo de ejemplo se
muestra el dibujo de la funcin sen(r)/r (siendo r=sqrt(x^2 +y^2 ):
close all
u=0.1:0.1:10; v=u;
[U,V]=meshgrid(u,v);
ficos en Matlab
1.7 Gra
R=sqrt(U.^2+V.^2);
W=sin(R)./R;
mesh(W) u=0.1:0.1:10; v=u;
[U,V]=meshgrid(u,v);
2+V.\de2);
EjecutandoR=sqrt(U.\
este conjunto
instrucciones
W=sin(R)./R;
mesh(W)
43
Cuando se desea dibujar una figura con un determinado mapa de colores se establece un
correspondencia entre los valores de la funcin y los colores del mapa de colores. Esto
38
44
n al Matlab
Captulo 1. Introduccio
45
1.8
En muchas ocasiones puede resultar interesante interrumpir el trabajo con MATLAB y poderlo recuperar mas tarde en el mismo punto en el que se dejo (con las
mismas variables definidas, con los mismos resultados intermedios, etc.). Hay que
tener en cuenta que al salir del programa todo el contenido de la memoria se borra
automaticamente.
Para guardar el estado de una sesion de trabajo en el directorio actual existe
el comando save. Si se teclea save antes de abandonar el programa, se crea un
fichero binario llamado matlab.mat (o matlab) con el estado de la sesion (excepto
los graficos, que por ocupar mucha memoria hay que guardar aparte). Dicho estado
puede recuperarse la siguiente vez que se arranque el programa con el comando load.
Esta es la forma mas basica de utilizacion de estos comandos. Se pueden guardar
tambien matrices y vectores de forma selectiva y en ficheros con nombre especificado
por el usuario. Por ejemplo, el comando save filename A, x, guarda las variables
A y x en un fichero binario llamado filename.mat Para recuperarlas en otra sesion
basta teclear load filename. Si no se indica ning
un nombre de variable, se guardan
todas las variables creadas en esa sesion.
46
n al Matlab
Captulo 1. Introduccio
47
48
n al Matlab
Captulo 1. Introduccio
Una forma de llamar al profiler podra ser la siguiente (se supone que estas
lneas forman parte de un fichero *.m):
profile on -detail operator;
[T, Y] = ode113( RTDyn2m, tspan, y0, myOptions);
profile report;
Con la primera lnea se activa el profiler a la vez que se define el grado de
detalle que se desea. La segunda lnea es una llamada a la funcion ode113 que a su
vez llama a muchas otras funciones y la tercera lnea detiene el profiler y le pide
que genere un informe en HTML con los resultados calculados. Existen tres posibles
grados de detalle respecto a la informacion que se le pide al profiler:
mmex determina el tiempo utilizado por funciones y sub-funciones definidas
49
50
n al Matlab
Captulo 1. Introduccio