Está en la página 1de 219

Tema I

Introduccin al MatLab
Profs. Dres. Sixto Romero
Francisco J. Moreno
Master en Ingeniera de Control, Sistemas Electrnicos e Informtica Industrial
2007-2008
El Asistente Matemtico MatLab
Sumario
1.1. Introduccin
1.2. El entorno de trabajo de MatLab
1.2.1. El Escritorio de Matlab (Matlab
Desktop)
1.2.2. El men inicio
1.2.3. Command Window
1.2.4. Command History Browser
1.2.5. Current Directory Browser
1.2.6. Workspace Browser y Array Editor
1.2.7. El Editor-Debugger
1.3. Salvas de estados y variables en una
seccin (save, load, diary)
1.4. Medidas de tiempo y esfuerzo de clculo
Sumario
Introduccin
MatLab es un asistente matemtico de
gran capacidad para el clculo y la
visualizacin cuyo nombre proviene de
las palabras Matrix-Laboratory.
Aunque fue desarrollado inicialmente
(1984) para el trabajo exclusivo con
matrices tambin puede trabajar con
escalares (reales y complejos) as como
con cadenas de caracteres.
Introduccin
Matrix-Laboratory
Alta capacidad de
clculo numrico
Visualizacin
Clculo simblico
Lenguaje propio
Matrices
Escalares Cadenas
Potencialidades
1. Posee un lenguaje de alto desempeo
bastante fcil de aprender.
2. Posee una elevada interaccin con los
SoftWare existentes (Maple, Excel).
3. Posibilidad de ser instalado sobre
diferentes SO.
4. Alrededor de este SoftWare se nuclea una
comunidad de ms de 1 000 000 de usuarios
entre esttes y especialistas.
Potencialidades
5. Posee ayudas tanto On-line como Off-line
de inmensas prestaciones.
6. Existe un centro de recursos arbitrado que
almacena organizadamente la experiencia
de mltiples especialistas de todo el mundo.
7. Las libreras han sido exquisitamente
validadas y en ocasiones programadas por
los propios descubridores (ej. Wavelets
Toolbox).
Debilidades
1. Lenguaje interpretado.
2. Aunque es muy rpido en los clculos
utilizando cdigo nativo en otros clculos
pudiera ser bastante ms lento que
utilizando cdigo C++ u otro.
3. Aunque posee herramientas para la
exportacin de cdigo, estas no son del todo
eficiente (MatLab Compiler, MatLab
ComBuilder).
El desktop de MatLab
El desktop de MatLab
Men
Men

principal
principal
El desktop de MatLab
Men
Men

de
de
acceso r
acceso r

pido
pido
El desktop de MatLab
Ventana de
Ventana de
comandos
comandos
El desktop de MatLab
Espacio y directorio
Espacio y directorio
de trabajo
de trabajo
El desktop de MatLab
Historial de trabajo
Historial de trabajo
El desktop de MatLab
Novedad de la v_7.0
Barra de Shortcuts
El desktop de MatLab
Men
Men

de inicio
de inicio
Men de inicio
Men de acceso rpido
Barra de Shortcuts
Creacin de Shortcuts (ejemplo)
La ventana de comandos
Definir variables
Ejecutar instrucciones
Mostrar resultados
Llamada a guiones
Llamada a funciones
Historial de comandos
Directorio actual de trabajo
El espacio de trabajo
Identificadores Valores Tipo de dato
Editor de arreglos
El editor-debugger
La ayuda de MatLab
Demos de MatLab
Ayuda y recursos on-line
Ayuda y recursos on-line
Ayuda y recursos on-line
Recursos de dificil acceso
Salvas de estados y variables
Comando save
Se emplea para guardar en disco el
espacio de trabajo o variables
particulares que existan en este.
Sintaxis:
save(filename, var-1, ..., var-n, formato);
Salvas de estados y variables
Comando load
Permite cargar variables existentes en un
fichero en el espacio de trabajo.
Sintaxis:
load(filename, var-1, ..., var-n);
Salvas de estados y variables
Comando diary
Este comando posibilita guardar un
record completo de todas las acciones
realizadas en la ventana de comandos.
Sintaxis:
diary on; %Activado
diary off; %Desactivado
Tiempo y esfuerzo de clculo
En MatLab est abierta la posibilidad de
obtener los tiempos de clculo de una
forma muy sencilla para el usuario,
siendo esto en muchas ocasiones de suma
importancia.
Para este fin se emplean las funciones:
cputime; etime y tic ops toc
Tiempo de clculo (ejemplo)
Se desea resolver un sistema lineal arbitrario con
1000 Ecs. de la forma:
Ax=b x=A
-1
b = A\b
>> n=1000;
>> A=rand(n);
>> b=rand(n,1);
>> x=zeros(n,1);
>> tiempoIni=clock; x=A\b; tiempo=etime(clock, tiempoIni)
>> time=cputime; x=A\b; time=cputime-time
>> tic; x=A\b; toc
Bibliografa
1. Aprenda Matlab 7.0 como si
estuviera en primero
2. La ayuda de Matlab 7.0
3. Ver en la seccin demos de la
ayuda de Matlab:
Desktop Tools and Development
Environment (primeros 5 videos)
New Features in Version 7
(primer video)
Tema II
Operaciones con vectores y matrices
Profs. Dres. Sixto Romero
Francisco J. Moreno
Master en Ingeniera de Control, Sistemas Electrnicos e Informtica Industrial
2007-2008
Sumario
2.1. Definicin de matrices desde el teclado
2.2. Operaciones con matrices
2.3. Matrices predefinidas
2.4. Direccionamiento de matrices y vectores.
El operador (:) y la funcin (cat)
2.5. Operadores relacionales
2.6. Operadores lgicos
Definicin de matrices
Las matrices son un tipo comn de
variable que es empleado en la mayora
de los lenguajes de programacin. En
MatLab estas se convierten en el centro
de atencin.
Por convenio emplearemos mayscula
para representar matrices y minscula
para vectores y escalares.
Definicin de matrices
Las matrices se definen por filas, los
elementos de la fila se separan por
espacios o comas (,) mientras que las
filas van separadas por punto y coma (;)
Ejemplos:
A=[1,2,3; 4,5,6; 7,8,9]
B=[1 2 3; 4 5 6; 7 8 9]
Se ve en pantalla:
Definicin de matrices
Observacin 1
Ejemplos:
Los vectores son casos particulares de
matrices donde el nmero de filas o
columnas es igual a 1.
Vector fila
Vector columna
Definicin de matrices
Observacin 2
Ejemplo:
Una vez definida la matriz esta pasa a su
espacio de trabajo (Workspace) y estar
disponible para realizarce cualquier
operacin.
Definicin de matrices
Observacin 3
Ejemplo:
MatLab introduce por defecto una
variable llamada (ans) de answer
sobre la cual tambin se puede operar.
Definicin de matrices
Observacin 4
Ejemplo:
En MatLab se permite la creacin de
matrices vacas.
Cmo acceder a los valores?
Los elementos de una matriz se acceden
poniendo los 2 ndices entre parntesis
separados por coma (Ej. A(1,2) o A(i,j)).
Ejemplo:
Cmo acceder a los valores?
Observacin 1
Ejemplo:
Si estamos trabajando con vectores
bastara colocar un solo ndice.
Cmo acceder a los valores?
Observacin 2
Ejemplo:
Aunque las matrices se introducen por
filas estas se almacenan por columnas,
luego se podra acceder a sus elementos
empleando un solo ndice.
Operaciones con matrices
Las matrices se operan a travs de
operadores o funciones. Veamos ahora
los operadores.
+
Adicin
-
Substraccin
*
Multiplicacin

Traspuesta
^
Potencia
/
Divisin (derecha)
\
Divisin (izquierda)
.* y .^
Mult. y Potenciacin
elemento a elemento
./ y .\
Div. (derecha y izquierda)
elemento a elemento
Operaciones con matrices
Ejemplo 1:
Operaciones con matrices
Ejemplo 2:
Matrices predefinidas
eye(n) Matriz unitaria (n x n)
zeros(n) Matriz de ceros (n x n)
zeros(n,m) Matriz de ceros (n x m)
ones(n) Matriz de unos (n x n)
ones(n,m) Matriz de unos (n x m)
rand(n,m) Matriz de nmeros aleatorios entre 0 y 1 (n x m)
linspace
(x1,x2,n)
Genera un vector con n valores entre x1 y x2
igualmente espaciados
magic(n) Genera una matriz mgica (n x n)
rand(n) Matriz de nmeros aleatorios entre 0 y 1 (n x n)
Operaciones con matrices
Ejemplos:
Operaciones con matrices
Ejemplos:
Direccionamiento de matrices
Los elementos de una matriz pueden ser
direccionados a partir de otros vectores.
Ejemplo:
Direccionamiento de matrices
Ejemplo:
Observacin 1
En el caso en que trabajsemos con
vectores estos se direccionaran mediante
otro vector de posiciones.
Direccionamiento de matrices
Observacin 2
Como los elementos de una matriz se
almacenan como columnas podemos
emplear esta caracterstica para
direccionarlas a travs de un vector.
Direccionamiento de matrices
Ejemplo:
El operador (:)
El operador (:) es utilizado para
especificar rangos, su forma de empleo
es muy simple y sus beneficios inmensos.
<vector>=[val_ini : paso : val_fin];
Forma de empleo:
Ejemplo:
El operador (:)
El operador (:) se muestra mucho ms
potente cuando se trabaja con matrices.
El operador (:)
Extraccin de submatrices.
El operador (:)
Extraccin de una columna.
El operador (:)
Extraccin de una fila (ltima).
El operador (:)
Eliminacin de una columna.
El operador (:)
Es prudente que se ejercite el trabajo en
este operador probando todas las
combinaciones posibles dada su
importancia para el trabajo posterior.
Nota
La funcin (cat)
La funcin (cat) se emplea para
concatenar matrices a lo largo de una
dimensin especificada.
Al igual que el operador (:) es de una
gran utilidad cuando se trabaja con
matrices.
La funcin (cat)
Ejemplo:
Operadores relacionales
< Menor que
<= Menor o igual a
> Mayor que
>= Mayor o igual a
== Igual a
~= Distinto de
Operadores lgicos
&& Conjuncin
|| Disyuncin
~ Negacin
xor Disyuncin exclusiva
Operadores lgicos
all(v)
Comprueba si todos los elementos del vector (v)
cumplen la condicin. Devuelve 0 o 1
all(A)
Se aplica por separado a cada columna de (A). El
resultado es un vector de ceros y unos.
any(v)
Comprueba si alguno de los elementos del vector
(v) cumplen la condicin. Devuelve 0 o 1
find(v)
Determina los ndices de elementos de (v) que
cumplen la condicin.
any(A)
Se aplica por separado a cada columna de (A). El
resultado es un vector de ceros y unos.
find(A)
Cuando se aplica a una matriz esta se considera
como un vector (una columna traz otra)
Tema III
Grficas con MatLab
Profs. Dres. Sixto Romero
Francisco J. Moreno
Masteren Ingeniera de Control, Sistemas Electrnicos e Informtica Industrial
2007-2008
Sumario
3.1. Grficas en 2D
3.1.1. Introduccin. Representacin grfica con
datos
3.1.2. Curvas en explcitas, paramtricas y polares:
Funcin plot
3.1.3. Estilos de lnea y marcadores en la funcin
plot
3.1.4. Aadir curvas a un grfico ya existente
3.1.5. Comando subplot
3.1.6. Funcin fplot
Sumario
3.2. Grficas en 3D
3.2.1. Dibujo de lneas: funcin plot3
3.2.2. Mallados: Funciones meshgrid, mesh y
surf
3.2.3. Lneas de contorno: funciones contour
y contour3
3.1. Grficas en 2D
3.1.1. Introduccin
MatLab proporciona una variedad
importante de funciones para
representar grficamente datos
vectoriales tanto en 2D como en 3D.
Adicionalmente pone a disposicin de
usuario otro grupo de funciones para la
manipulacin e impresin de los grficos
creados.
3.1. Grficas en 2D
MatLab permite graficas de curvas
planas y superficies, posibilitando la
agrupacin y la superposicin.
Permite trabajar con colores, rejillas,
marcos, etc., en los grficos.
MatLab es un software matemtico con
elevadas prestaciones grficas.
3.1. Grficas en 2D
MatLab permite realizar grficos de
barras, lneas, estrellas, histogramas,
poliedros, mapas geogrficos y
animaciones.
3.1. Grficas en 2D
3.1.1. Representacin grfica con datos: La creacin
de un grfico suele acoplarse a los siguientes pasos
Preparar los
datos
x = 0:0.02:10; y1=x ;y2=x.^2;y3=x.^3;
Elegir ventana y
situar posicin
figure(1); subplot(2,2,1)
Usar funcin de
grfico
h=plot(x,y1,x,y2,x,y3);
Sita las
propiedades
especificadas en
el objeto h
set(h,LineWidth,2,{LineStyle};set(h,{Color},{r,g,b})
Elegir caractersticas de lneas y marcadores
Situar
anotaciones.
Etiquetas y
leyendas
xLabel(Tiempo) yLabel(Amplitud)
legend(h,Primero,Segundo,Tercero)
Title(Funciones Enteras)
3.1. Grficas en 2D
3.1.1. Grficos bsicos: barras, sectores,
histogramas, racimo, flechas,etc.,
bar(Y)
Grfico de barras verticales relativo al vector de
frecuencia Y. Si Y es una matriz se obtiene el
grfico de barras mltiple para cada fila de Y
barh() Grfico de barras horizontales
pie(Y) Grfico de pastel o sectores relativo al vector X
stairs(Y) Grfico escalonado relativo al vector Y
hist(Y)
Dibuja el histograma relativo al vector de
frecuencias Y. Si Y es una matriz, se construye
un histograma para cada una de sus columnas.
3.1.1. Grficos bsicos: barras, sectores, etc.,
hist(Y,x)
Dibuja e histograma relativo al vector de
frecuencias Y usando tantas cajas como
elementos tiene el vector x
stem(Y)
Dibuja el grfico de racimo relativo al vector Y.
Cada punto de Y est unido al eje OX por una
lnea vertical
rose(Y)
Dibuja el histograma angular relativo al vector
Y, de ngulos en radianes.
compass(Z)
Dibuja un diagrama de flechas que salen del
origen y cuya magnitud y direccin vienen
determinadas por el mdulo y el argumento de
los nmeros complejos componentes de Z
3.1. Grficas en 2D
3.1.1. Grficos bsicos: BARRAS
-4 -3 -2 -1 0 1 2 3 4
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
>> x=-3:0.2:3;
>>bar(x,exp(-x.^2))
3.1. Grficas en 2D
3.1.1. Grficos bsicos: BARRAS
>> x=-3:0.2:3;
>>barh(x,exp(-x.^2))
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
-4
-3
-2
-1
0
1
2
3
4
3.1. Grficas en 2D
3.1.1. Grficos bsicos: BARRAS
>>Y=round(rand(5,3)*250);
>>bar(Y,group)
>> bar(Y,stack)
3.1. Grficas en 2D
3.1.1. Grficos bsicos: SECTORES-PASTEL
>> x=[12 23 1.5 5.5 67 89];
>> pie(x)
3.1. Grficas en 2D
3.1.1. Grficos bsicos: SECTORES-PASTEL
3.1. Grficas en 2D
>> x=[12, 56, 4, 5.5, 67];
>>y=[0 0 0 1 1];
>>pie(x,y)
3.1.1. Grficos bsicos: ESCALONADO
3.1. Grficas en 2D
>> x=-10:0.1:10;
>>stairs(x,exp(-x.^2))
3.1.1. Grficos bsicos: ESCALONADO
3.1. Grficas en 2D
>> x=-10:0.4:10;
>>stairs(x,exp(-x.^2))
3.1.1. Grficos bsicos: HISTOGRAMA
>>y=rand(1000,1)*2199;
>> hist(y)
3.1. Grficas en 2D
3.1.1. Grficos bsicos: HISTOGRAMA
>>y=randn(1000,1)*2199;
>> hist(y)
3.1. Grficas en 2D
3.1.1. Grficos bsicos: HISTOGRAMA
>>y=randn(1000,1)*2199;
>> hist(y,20)
>>y=randn(1000,1)*2199;
>> hist(y,10)
3.1. Grficas en 2D
3.1.1. Grficos bsicos: RACIMO
>> y=randn(20,2);
>> stem(y);
3.1. Grficas en 2D
3.1.1. Grficos bsicos: HISTOGRAMA
ANGULAR
>>y=randn(1000,1)*pi;
>>rose(y));
3.1. Grficas en 2D
3.1.1. Grficos bsicos: FLECHA
>> z=eig(rand(4,4));
>>figure, compass(z)
3.1. Grficas en 2D
3.1.2. Curvas en explcitas, paramtricas y
polares: Funciones ms empleadas en la
representacin de datos
plot(X,Y)
Dibuja el conjunto de puntos (X,Y), donde X
e Y son vectores filas.
loglog(X,Y)
Crea grfico con escala logaritmica en
ambos ejes
semilogx(X,Y)
Crea grfico con escala logaritmica en el eje
X y lineal en el eje Y
semilogy(X,Y)
Crea grfico con escala logaritmica en el eje
Y y lineal en el eje X
3.1. Grficas en 2D
3.1.2. Funciones plot(x,y)
3.1. Grficas en 2D
>> x=[0,1,2,3,4,5];
>>y=[0,1,4,9,16,25];
>>plot(x,y)
3.1.2. Funciones plot(x,y)
3.1. Grficas en 2D
>> x=0:0.07:20;
>> y=sin(x+9).*exp(-0.7*x);
>> plot(x,y)
3.1.2. Funciones plot(x,y)
3.1. Grficas en 2D
3.1.2. Funciones semilogx(x,y)
3.1. Grficas en 2D
>> x=1:0.01:100;
>> y=sin(x);
>> semilogx(x,y)
3.1.2. Funciones semilogy(x,y)
3.1. Grficas en 2D
>> x=1:0.01:100;
>> y=sin(x);
>> semilogy(x,y)
Warning: Negative data
ignored.
3.1.2. Funciones en paramtricas
3.1. Grficas en 2D
>> t=0:0.01:2*pi;
>> x=4*cos(t)-cos(4*t)
>> y=4*sin(t)-sin(4*t);
>> plot(x,y)
3.1.2. Funciones en polares
3.1. Grficas en 2D
>> t=0:0.001:2*pi;
>> r=sin(2*t).*cos(2*t);
>> polar(t,r)
title(ttulo) Agrega unttulo al dibujo
xlabel(...) Agrega un ttulo al eje X. xlabel off lo elimina
ylabel(...) Agrega un ttulo al eje Y. ylabel off lo elimina
legend() Define rtulos para las lneas
grid Activa la cuadrcula en el dibujo
3.1. Grficas en 2D
3.1.2. Cmo aadir informacin al grfico?
3.1.2. Aadir informacin en Funciones en
implcitas
3.1. Grficas en 2D
>> x=-2*pi:0.1:2*pi;
>> ezplot('x^2-y^4')
3.1.2. Aadir informacin desde el entorno de
trabajo: Command Window
3.1. Grficas en 2D
>> x=0:0.002:2*pi;
>> y=exp(x+2);
>> plot(x,y)
>> title('Funcin
Exponencial');
>> xlabel('Dominio de
definicin');
>> ylabel('Recorrido de
la funcin');
>> legend('f(x)=exp(x)');
3.1. Grficas en 2D
3.1.3.Estilos de lnea y marcadores
3.1. Grficas en 2D
3.1.3. Ejemplo de lnea y marcadores
>> x=0:0.3:2*pi;
>>y=exp(x);
>>plot(x,y,'-r^');
3.1. Grficas en 2D
3.1.3. Ejemplo de lnea y marcadores
>> x=0:0.03:2*pi;
>>y=exp(x);
>>plot(x,y,'-r^');
3.1. Grficas en 2D
3.1.4. Aadiendo curvas a un grfico
Para aadir nuevas lneas (curvas) a un
grfico ya existente se emplean los
comandos: hold on y hold off.
El comando hold on permite que se
mantengan los grficos existentes a pesar
de que pueda ocurrir un reescalamiento.
La instruccin hold off elimina esta
posibilidad.
3.1. Grficas en 2D
3.1.4. Aadiendo curvas a un grfico
>> x=0:0.1:2;
>> y1=exp(x);
>> t=0:0.1:2*pi;y2=sin(t);
>> plot(x,y1,'-r');hold on
>> plot(t,y2,':b');hold off
3.1. Grficas en 2D
3.1.5. Comando subplot
subplot(m,n,p)
Dibuja la ventana grfica en mxn ventanas y
cooca el grfico correspondiente en la
ventana p-sima, empezando a contar por la
parte superior izquierda y de izquiewrda a
derecha hasta acabar la lnea, para pasar a
la siguiente. La utilidad de este comando en
la representacin de dibujar en cada celda
una figura diferente
3.1. Grficas en 2D
3.1.5. Ejemplo del Comando: subplot
>> x=(0.1:0.1:4*pi);
>> y=sin(x);z=cos(x);t=exp(x);s=log(x);
>> subplot(2,2,1);
>> plot(x,y), axis([0 2*pi -1 1]),title('sin(x)')
>> subplot(2,2,2);
>> plot(x,z), axis([0 2*pi -1 1]),title('cos(x)')
>> subplot(2,2,3);
>> plot(x,t), axis ([0 2*pi 0 59]),title('exp(x)')
>> subplot(2,2,4);
>> plot(x,s), axis ([0.1 4*pi -10 5]),title('log(x)')
3.1. Grficas en 2D
3.1.5. Ejemplo del Comando: subplot
3.1. Grficas en 2D
3.1.5. Ejemplo del Comando: subplot
>> subplot(2,2,1);
>> ezplot('sin(x)',[-2*pi 2*pi])
>> subplot(2,2,2);
>> ezplot('cos(x)',[-2*pi 2*pi])
>> subplot(2,2,3);
>> ezplot('csc(x)',[-2*pi 2*pi])
>> subplot(2,2,4);
>> ezplot('sec(x)',[-2*pi 2*pi])
3.1. Grficas en 2D
3.1.5. Ejemplo del Comando: subplot
A diferencia de la funcin plot donde
haba que especificar un vector de
valores [x,y] a la funcin fplot solo hay
que especificarle el nombre de una
funcin o fichero donde encontrarla sin
preocuparnos por detalles como el de la
pendiente por citar tan solo un ejemplo.
3.1. Grficas en 2D
3.1.6. Funcin: fplot
3.1. Grficas en 2D
3.1.6. Funcin: fplot
fplot(f,[xmin,xmax])
Dibuja la funcion en el
intervalo de variacin de x
dado
fplot(f,[xmin,xmax], ymin,
ymax],S)
Dibuja la funcion en los
intervalos de variacin de x e
y dados, con las opciones de
color y caracteres dadas por S
fplot([f1,f2,..fn],[xmin,x
max], ymin, ymax],S)
Dibuja las funciones en los
intervalos de variacin de x e
y dados, con las opciones de
color y caracteres dadas por S
3.1. Grficas en 2D
3.1.6. Funcin: fplot
fplot(f,[xmin,xmax]t)
Dibuja la funcion con la
tolerancia t
fplot(f,[xmin,xmax], ymin,
ymax],n)
Dibuja la funcion con la
tolerancia t como n+1
puntos como mnimo
3.1. Grficas en 2D
3.1.6. Ejemplos de la Funcin: fplot
>>fplot('[sin(x), sin(2*x),
sin(3*x)]', [0, 2*pi],'*');
>> legend('Sen(x)','Sen(2x)
,'Sen(3x)')
3.1. Grficas en 2D
3.1.6. Ejemplos de la Funcin: fplot
>> fplot('[sin(x), sin(2*x),
sin(3*x)]', [0, 2*pi],'-','o','*');
>> text(3,0.8, 'y=sen(2x)')
>> text(1,-0.6,'y=sen(3x)')
>> text(1.5,1,'y=sen(x)')
3.2. Grficas en 3D
El mdulo bsico de MatLab posee excelentes
cualidades para la representacin grfica en tres
dimensiones (3D) de curvas y superficies. Se
poda hacer un estudio detallado anlogo a 2D
pero es mucho ms extenso y se sale del objetivo
de este curso. (Ver bibliografa especializada)
3.2. Grficas en 3D
3.2.1. Dibujo de lneas: funcin plot3
plot3(X,Y,Z)
Dibuja el conjunto de puntos (X,Y,Z), donde
X,Y,Z son vectores filas. Pueden ser coordenadas
paramtricas o matrices de la misma dimensin,
en cuyo caso se hace una grfica por cada tripleta
de filas y sobre los mismos ejes. Para valores
complejos se ignoran las partes imaginarias
plot3(X,Y,Z, S)
Dibuja el conjunto de puntos (X,Y,Z) con las
opciones definidas en S. Usualmente S se
compone de dos dgitos entre comillas, el primero
los cuales fija el col,or de la lnea del grfico y el
segundo el carcter a usar.
plot3(Xi,Yi,Zi,
Si,.)
Combina sobre los mismos ejes, las grficas
definidas para las tripletas (Xi,Yi,Zi, Si). Se trata
de representar varias funciones al mismo tiempo.
3.2. Grficas en 3D
3.2.1. Dibujo de lneas: funcin plot3
3.2. Grficas en 3D
3.2.1. Dibujo de lneas: funcin plot3
>> X=[0 1 2 3 4 5 6 7 8 9 ];
>> Y=[11 12 13 14 15 16 17 18
19 20];
>> Z=[21 22 23 24 25 26 27 28
29 30];
>> plot3(X,Y,Z)
3.2. Grficas en 3D
3.2.1. Dibujo de lneas: funcin plot3
>>t=0:pi/75:10*pi;
>>plot3(sin(t),cos(t),t,'.r')
3.2. Grficas en 3D
3.2.2. Formas geomtricas 3D especiales
Matlab dispone de comandos para representar
formas geomtricas especiales en tres
dimensiones:
Cilindros
Esferas
Grficos de barras
Secciones
Tallos
Cascada
Etc.,
3.2. Grficas en 3D
3.2.2. Formas 3D especiales: Barras Tridimensionales
3.2. Grficas en 3D
3.2.2. Formas 3D especiales: Grfico de Tallos
3.2. Grficas en 3D
3.2.2. Formas 3D especiales: Esfera Unidad
3.2. Grficas en 3D
3.2.3. Mallados
[X,Y]=meshgrid(x,y)
Transforma el campo de definicin de las
variables x e y de la funcin a representar
z=f(x,y) en argumentos matriciales
utilizables por los comandos surf y mesh para
obtener grficos de superficie y mallas,
respectivamente.
surf(X,Y,Z,C)
Representa la superficie explcita z=f(x,y) o
la paramtrica realizando el dibujo conn los
colores especificados en C. (El argumento C
se puede ignorar)
surfc(X,Y,Z,C)
Representa la superficie explcita z=f(x,y)
junto con el grfico de contorno
correspondiente (curvas de nivel sobre el
plano OXY)
3.2. Grficas en 3D
3.2.3. Mallados
mesh(X,Y,Z,C)
Representa la superficie explcita z=f(x,y) o
la paramtrica realizando dibujando las
lneas de la rejilla que componen la malla con
los colores especificados en C
meshz(X,Y,Z,C)
Representa la superficie explcita z=f(x,y) o
la paramtrica con una especie de cortina de
cortina o teln en la parte inferior
meshc(X,Y,Z,C)
Representa la superficie explcita z=f(x,y)
junto con el grfico de contorno
correspondiente (curvas de nivel sobre el
plano OXY)
3.2.3. Ejemplo de funcin mesh
3.2. Grficas en 3D
>>[X,Y]=meshgrid(-3:0.125:3);
>>Z=peaks(X,Y);
>> mesh(X,Y,Z);
>>axis([-3 3 -3 3 -10 5]);
3.2.3. Funcin mesh
3.2. Grficas en 3D
NOTA: La coloracin del grfico generado
por la funcin mesh es tomado por defecto
como funcin de los valores de z.
Los valores del color pueden ser asignados
por el usuarios tambin a travs de un vector
de colores.
3.2.3. Ejemplo de funcin surf
3.2. Grficas en 3D
>>[X,Y]=meshgrid(-
3:0.125:3);
>> Z=peaks(X,Y);
>> surf(X,Y,Z);
contour(Z)
Dibuja la grfica de contorno (curvas de nivel)
para la matriz Z. El nmero de lneas de contorno
se elige arbitrariamente
contour(Z,n)
Dibuja la grfica de contorno (curvas de nivel)
para la matriz Z usando en los eles OX y OY el
escalado definido mpor los vectores x e y (n
lneas de contorno).
contour(x,y,Z,n)
Representa la superficie explcita z=f(x,y) junto
con el grfico de contorno correspondiente
(curvas de nivel sobre el plano OXY)
contour3(Z),
contour3(Z,n),
contour3(x,y,Z,n)
contourf(..)
Representa las grficas en tres diemensiones
Dibuja una grfica de contorno y rellena las reas entre las isolneas
3.2. Grficas en 3D
3.2.3. Lneas de contorno
3.2.3. Ejemplo de funcin contour
3.2. Grficas en 3D
>>[X,Y]=meshgrid(-7.5:.5:7.5);
>>Z=(X.^3+Y.^2+2*Y+9)./(X.^2+Y.^2+1);
>> contour(Z)
3.2.3. Ejemplo de funcin contour
3.2. Grficas en 3D
>> [X,Y]=meshgrid(-6:.134:6);
>> Z=peaks(X,Y);
>> axis([-5 5 -5 5 -12 6]);
>> contour(Z,39);
3.2.3. Ejemplo de funcin contour3
3.2. Grficas en 3D
>> [X,Y]=meshgrid(-10:.13:10);
>> Z=peaks(X,Y);
>> axis([-10 10 -10 10 -20 5]);
>> contour3(Z,45);
3.2.3. Ejemplo de funcin contourf
3.2. Grficas en 3D
>> [X,Y]=meshgrid(-10:.13:10);
>> Z=peaks(X,Y);
>> axis([-10 10 -10 10 -20 5]);
>> contourf(Z,45);
Bibliografa
1. Aprenda Matlab 7.0 como si
estuviera en primero
2. La ayuda de Matlab 7.0
3. Ver en la seccin demos de la
ayuda de Matlab:
Graphics (XY plots in MatLab y XYZ
plots in MatLab)
New Features in Version 7
(Quinto video)
Tema IV
Programar con Matlab
Profs. Dres. Sixto Romero
Francisco J. Moreno
Master en Ingeniera de Control, Sistemas Electrnicos e Informtica Industrial
2007-2008
Sumario
4.1. Estructuras condicionales y bucles
4.1.1. Comando if
4.1.2. Comando switch
4.1.3. Bucle for
4.1.4. Bucle while
4.1.5. Comando break
4.1.6. Comando continue
Sumario
4.2. Entrada/salida interactiva de variables
4.2.1. funcin input
4.2.2. funcin disp
4.3. Programar en Matlab
4.3.1. Editor de texto
4.3.2. Los Scripts
4.3.3. El fichero *.m
4.4. Declaracin de funciones: function, feval,
breakspoints
4.1. Estructuras condicionales y bucles
MatLab puede utilizarse como un lenguaje de
alto nivel que incluye estructuras de:
* Datos
* Funciones
* Instrucciones de control de flujo
* Manejo de E/S
* Otras.
4.1. Estructuras condicionales y bucles
MatLab puede utilizarse como un lenguaje de
programacin propio que dispone de sentencias para
realizar bifurcaciones y bucles.
a) Las bifurcaciones permiten realizar una u otra
operacin segn se cumpla o no una determinada
condicin.
b) Los bucles permiten repetir las mismas o anlogas
operaciones sobre datos distintos.
4.1. Estructuras condicionales
En MatLab existen dos estructuras
condicionales fundamentales: una de
ellas se conforma a partir del comando if
y la otra a partir del comando switch.
4.1.1. Comandos if
if <condicin>
<comandos>
end
Estructura condicional conformada a partir
del comando if en su forma simple:
Se ejecutan los comandos si la
condicin es cierta!
4.1.1. Comandos if
if <condicin >
<comandos1>
else
<comandos2>
end
Estructura condicional conformada a partir
del comando if en su forma general:
Se ejecutan los comandos 1 si la
condicin es cierta y loscomandos 2
si la condicin es falsa!
4.1.1.Comandos if
if <condicin 1>
<comandos1>
elseif <condicin 2>
<comandos2>
else
<comandos>
end
Los comandos if pueden ser anidados como el comando for
que veremos ms adelante. Cuandose anidan comandos if se
utiliza la sentencia elseif
4.1.1. Comando if
if < condicin 1>
<comandos1>
else
if < condicin 2>
<comandos2
else
if <condicin 3>
<comandos3>
else
.
end
end
end
La sintaxis anidada anterior es equivalente, pero ms rpida
de ejecucin, a la sintaxis sin anidar siguiente:
4.1.1. Ejemplo de Comando if (Simple)
4.1.1. Ejemplo de Comando if (General)
switch <expresin(escalar o cadena>
case <valor1>
<sentencias> %Ejecuta si expresin es valor1
case <valor2>
<sentencias> %Ejecuta si expresin es valor2

otherwise
<sentencias> %Ejecuta si expresin no cumple ningn caso
end
El comando switch ejecuta ciertas sentencias
basadas en el valor de una variable.
4.1.2. Comando switch
NOTA
La secuencia de casos se interrumpe tan
pronto se verifique el primero de ellos.
La sentencia break es innecesaria en esta
estructura.
4.1.2. Comando switch
4.1.2. Comando switch
4.1.3. El bucle for
El uso de funciones recursivas,
condicionales y definidas a trozos es muy
habitual en Matemticas. Pare ello es
necesario el uso de bucles.
Matlab dispone de su propia versin de la
sentencia DO (definida en otros lenguajes)
El bucle for repite un conjunto de
instrucciones un nmero predeterminado de
veces.
for <var-control>= <var-ini>:<paso>:<var-fin>
<comandos>
end
for <var-control>= <vector-de-valores>
<comandos>
end
4.1.3. El bucle for
El bucle empieza con la clausulafor y termina con la deend, e
incluye en su interior comandos que se separan por comas. Si algn
comando define una variable, se finaliza con punto y comapara
evitar repeticiones en la salida. Normalmente se utilizan en el uso de
la sintaxis de los M-ficheros
4.1.3. El bucle for
4.1.3. El bucle for
Tambin en Matlab se puede realizar
anidamiento en un bucle for
Sintaxis:
for <var-control1>= <var-ini1>:<paso1>:<var-fin1>
for <var-control2>= <var-ini2>:<paso2>:<var-fin2>
<comandos>
end
end
4.1.3. El bucle for
4.1.3. El bucle for
4.1.3. El bucle for
Matlab dispone de su propia versin del comando de
bucle while. Este comando permite ejecutar de forma
repetitiva uno o un grupo de comandos un nmero
determinado de eces mientras se cumple una
condicin lgica
while <condicin> % Puede ser vectorial o matricial
<comandos>
end
4.1.4. El bucle while
4.1.4. El bucle while
4.1.4. El bucle while
El comando break finaliza la ejecucin de
un bucle for y/o while en el cual aparece
continuando la ejecucin en la siguiente
instruccin fuera del bucle. ms interno
de los que comprenden a dicha sentencia.
4.1.5. El Comando break
4.1.5. El Comando break
El comando continue hace que se pase
inmediatamente a la siguiente iteracin
del bucle for o while ignorando las
restantes instrucciones en el cuerpo del
bucle.
4.1.6. El Comando continue
4.2. Entrada/salida interactiva de variables
En MatLab se introducen algunas funciones
sencillas (input, disp) para la entrada y salida
interactiva de variables.
input disp
La funcin input permite imprimir un
mensaje en la lnea de comandos de
MatLab y recuperar como valor de
retorno un valor numrico o el resultado
de una expresin tecleada por el usuario.
<identificador> = input(<Texto deseado>');
4.2.1. La Funcin input
4.2.1. La Funcin input
Otra alternativa de la funcin input esta
funcin es la siguiente (obsrvese el parmetro
's'):
En este caso el texto tecleado se lee y se
devuelve sin evaluar, con lo que se almacena
en una variable como cadena.
<identificador> = input(<Texto deseado>, s);
NOTA
4.2.1. La Funcin input
La funcin input permite imprimir un
mensaje en la lnea de comandos de Matlab y
recuperar como valor de retorno un valor
numrico o el resultado de una expresin
tecleada por el usuario.
4.2.1. La Funcin input
Ejemplo:
4.2.1. La Funcin input
La funcin disp permite imprimir en
pantalla un mensaje de texto o el valor de
una matriz, pero sin imprimir su nombre.
Las cadenas de caracteres son un caso
particular de vectores.
disp('<Texto deseado>');
4.2.2. La Funcin disp
4.3. Programar en Matlab
En Matlab suelen escribirse los ficheros
denominados M-ficheros. Son cdigos
Matlab(scripts) que ejecutan una serie de
comandos o funciones que aceptan argumentos
y producen una salida. Los M-Ficheros se crean
utilizando un editor cualquiera pero
preferentemente el de Matlab.
Para crear un nuevo M-fichero se utiliza el
Editor/Debugger, que se activa haciendo click
en la pestaa de la barra de herramientas de
Matlab o en la ventana de comandos New->
File El editor se abre con un fichero en blanco
en el cual crearemos el M-fichero, es decir un
fichero con cdigo de programacin Matlab.
4.3.1 El editor de texto
4.3.1 El editor de texto
4.3.2. Los scripts
Los scripts son el tipo de M-ficheros ms
sencillo posible. Un script no tiene argumentos
de entrada ni de salida. Sencillamente est
formado por instrucciones Matlab que se
ejecutan secuencialmente y que podran
submitirse igualmente en serie en la ventana de
comandos. Los scripts operan con datos
existentes en el espacio de trabajo o con nuevos
datos creados por el propio script.
4.3.2. Ejemplo de scripts
Existen dos tipos de ficheros *.m, los
ficheros de comandos (scripts) y las
funciones.
4.3.2. Los ficheros *.m
4.4. Declaracin de funciones
La implementacin de funciones ampla grandemente
el horizonte de posibilidades de MatLab. Matlab es
habitualmente utilizado en modo comando (o
interactivo).
Para ejecutar un M-fichero basta con teclear su
nombre (sin extensin) en modo interactivo en la
ventana de comandos y pulsar ENTER.
Para ms informacin utilizar el comando Help de
Matlab
4.4.1. Las funciones
Declaracin
function [parm_salida] = nombre_funcin(<parm_entrada)
cuerpo de la funcin
4.4.1. Las funciones
a) Las funciones definidas en ficheros *.m se caracterizan
porque la primera lnea (no comentariada) comienza por la
palabra function.
b) Si los parmetros de salida son ms de uno, se sitan entre
corchetes y separados por comas, y si los parmetros de
entrada son ms de uno, se separan por comas.
c) El cuerpo de la funcin es la sintaxis que la define, y debe
incluir comandos que asignen valores a los parmetros de
salida
d) Cada comando suele ir en una lnea que finaliza con una
coma o con un punto y coma en caso de definicin de
variables
4.4.2. Ejemplo de funcin
Definamos la funcin fun1(x)=x^4-2*x^3*sen(x^2+1).
PASOS
1. Creamos el correspondiente M- fichero de nombre fun1.m .
2. Introduccin de instrucciones con el Editor/Debugger
3. Salvamos seleccionando la opcin Save del men File de la barra
superior de mens del Matlab Editor/Debugger
4. Se recomienda guardar las funciones como ficheros de nombre
igual al nombre de la funcin y en el subdirectorio de trabajo por
defecto de Matlab C:\MATLAB7\work
5. Una vez definida y guardada la funcin anterior en un M-fichero,
se puede utilizar desde la ventana de comandos.
4.4.2. Ejemplo de funcin
4.4.2. Otro ejemplo de funcin
4.4.2. El comando feval
La evaluacin de una funcin en sus argumentos (o
parmetros de entrada) tambin pude realizarse a travs del
comando feval cuya sintaxis es:
feval (F, arg1,arg2,.,argn) %Evala la funcin F (M-
fichero F.men los argumentos especificados
4.4.2. Ejemplo del comando feval
4.4.3. Los breakpoints
En cada lnea del M-Fichero a la derecha del mismo aparece
una barra horizontal. Haciendo click sobre ella fijamos un
breakpoint que queda marcado por un punto rojo sobre la
barra. Al fijar un breakpoint y ejecutar el programa se
ejecutan todas las rdenes anteriores al punto breakpoint
detenindose la ejecucin. Cuando eso ocurre, una flecha
verde indica la lnea del programa hasta la cual se han
ejecutado las rdenes. En este momento, utilizando el workspace
o el commnd windown, podemos ver los valores de cada variable o
introducir rdenes en el command windown. Esta aplicacin es
muy til para comprobar qu rdenes dentro del cdigo generan
resultados deseados.
4.4.3. Los breakpoints
Una vez la ejecucin se detiene en el breakpoint y aparece la
flecha verde al principio de la lnea tenemos varias opciones:
Detenerla ejecucin
Poner de nuevo el programa a ejecutarse desde el breakpoint haste
el final del M-Fichero
Ir ejecutando orden por orden a partir del breakpoint
4.4.3. Los breakpoints
La figura muestra los botones del M-Fichero que realizan
estas acciones. Para borrar un breakpoint podemos hacer
click sobre l o presionar uno de los dos botones que aprecen
en la botonera del M-fichero, que borra todos los
breakpoints que haye en el M-Fichero.
Podemos fijar tantos breakpoints como queramos.
4.4.3. Los breakpoints
4.4.3. Los breakpoints
Tema V
Otros tipos de datos en MatLab
Profs. Dres. Sixto Romero
Francisco J. Moreno
Master en Ingeniera de Control, Sistemas Electrnicos e Informtica Industrial
2007-2008
Sumario
5.1. Cadenas de caracteres
5.2. Hipermatrices (arreglos de ms de 2 dim.)
5.3. Estructuras
5.4. Cell arrays (matrices de celdas)
Cadenas de caracteres
MatLab tambin opera con cadenas de
caracteres, muy similar a como se hace
con lenguajes tan conocidos como C++.
Los caracteres de una cadena se
almacenan en un vector de manera que
existir un carcter por elemento.
Cadenas de caracteres
Una cadena carcter se representa entre
comillas simples (cadena).
Ejemplos:
Cadenas de caracteres
Para representar un carcter en MatLab
se emplean 2 bytes o sea 16 bits.
Algunas operaciones con cadenas
Algunas operaciones con cadenas
char(v) Convierte un vector de numeros en una cadena
char(c1,..,cn)
Crea una matriz de caracteres (completando
con espacios las cadenas ms cortas)
deblank(c) Elimina espacios al final de la cadena
isspace() Detecta si un caracter es un espacio o no
disp(c) Imprime la cadena c
strcomp(c1,c2,n)
Compara los n primeros caracteres de las
cadenas c1 y c2
strrep(c1,c2,c3)
Sustituye c2 por c3 cada vez que aparezca c2 en
c1
strcomp(c1,c2) Compara las cadenas c1 y c2
Hipermatrices
MatLab permite trabajar con matrices
de ms de dos dimensiones es decir
hipermatrices.
La aplicacin fundamental de este hecho
es almacenar bajo un nico nombre
distintas matrices de un mismo tamao
Definicin de hipermatrices
Una hipermatriz es un arreglo de (mxnxk)
elementos.
Definicin de hipermatrices
Ejemplo 1:
Definicin de hipermatrices
Ejemplo 2:
Estructuras
Una estructura (struct) no es ms que
una agrupacin de datos de tipos
diferentes bajo un mismo nombre que
conforman en s un nuevo tipo de dato.
Los datos de una estructura se
denominan campos o miembros.
Creacin de estructuras
Aunque una estructura puede crearse
elemento a elemento existe una forma
mucho ms eficiente y sencilla de
trabajar:
Sintaxis
<identif> = struct (field1, value, ... , fieldn, value);
Creacin de estructuras
Ejemplo:
Funciones que operan sobre estructuras
fieldnames() Convierte un vector de numeros en una cadena
isfield(ST,s)
Crea una matriz de caracteres (completando
con espacios las cadenas ms cortas)
isstruct(ST) Elimina espacios al final de la cadena
rmfield(ST,s) Detecta si un caracter es un espacio o no
getfiel(ST,s) Imprime la cadena c
setfield(ST,s) Compara las cadenas c1 y c2
Cell arrays (matrices de celdas)
Un vector (matriz) de celdas es un vector
cuyos elementos son cada uno de ellos una
variable de tipo cualquiera.
En un Cell array, el primer elemento
puede ser un nmero, el segundo una
matriz, el tercero una cadena de
caracteres, el cuarto una estructura, etc.
Su homlogo en otros lenguajes es la lista
Creacin de los Cell arrays
Un vector (matriz) de celdas se crea
empleando llaves para la introduccin de
los elementos.
Sintaxis:
vector(i) = {elemento}
matriz(i,j) = {elemento}
Creacin de los Cell arrays
Ejemplo:
Creacin de los Cell arrays
Observacin
Existe una sintaxis alternativa para la
definicin de cell array, que por
comodidad es la ms empleada.
Sintaxis:
vector{i} = elemento
matriz{i,j} = elemento
Creacin de los Cell arrays
Ejemplo:
Funciones que operan sobre cell array
cell(m,n) Crea un cell array vacio de m x n
celldisp(cell ar) Muestra el contenido de tadas las celdeas del ca
cellplot(cell ar) Representa graficamente las celdas de ca
iscell(cell ar) Indica si (cell ar) es un vector de celdas
num2cell() Convierte un array numrico en cell array
cell2struct() Convierte un cell array en una estructura
struct2cell() Convierte una estructura en un cell array
Conversin entre struct y cell
array
Ejemplo:
Uso prctico de un cell array
En este ejemplo se pretende resolver un
sistema de ecuaciones lineales que ha sido
previamente almacenado en un cell array.
Bibliografa
1. Aprenda Matlab 7.0 como si
estuviera en primero
2. La ayuda de Matlab 7.0
3. Ver en la seccin demos de la
ayuda de Matlab:
Programming (Manipulating Multidimensional
Arrays) y (Structures)

También podría gustarte