You are on page 1of 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

Sumario
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

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 principal

El desktop de MatLab

Men de acceso rpido

El desktop de MatLab

Ventana de comandos

El desktop de MatLab

Espacio y directorio de trabajo

El desktop de MatLab

Historial de trabajo

El desktop de MatLab

Novedad de la v_7.0

Barra de Shortcuts

El desktop de MatLab

Men 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; diary off; %Activado %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-1b = 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 Los vectores son casos particulares de matrices donde el nmero de filas o columnas es igual a 1.
Ejemplos:
Vector fila Vector columna

Definicin de matrices
Observacin 2 Una vez definida la matriz esta pasa a su espacio de trabajo (Workspace) y estar disponible para realizarce cualquier operacin.
Ejemplo:

Definicin de matrices
Observacin 3 MatLab introduce por defecto una variable llamada (ans) de answer sobre la cual tambin se puede operar.
Ejemplo:

Definicin de matrices
Observacin 4 En MatLab se permite la creacin de matrices vacas.
Ejemplo:

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 Si estamos trabajando con vectores bastara colocar un solo ndice.
Ejemplo:

Cmo acceder a los valores?


Observacin 2 Aunque las matrices se introducen por filas estas se almacenan por columnas, luego se podra acceder a sus elementos empleando un solo ndice.
Ejemplo:

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)

Mult. y Potenciacin .* y .^ elemento a elemento Div. (derecha y izquierda) ./ y .\ elemento a elemento

Operaciones con matrices


Ejemplo 1:

Operaciones con matrices


Ejemplo 2:

Matrices predefinidas
eye(n) zeros(n) zeros(n,m) ones(n) ones(n,m) rand(n) rand(n,m) linspace (x1,x2,n) magic(n) Matriz unitaria (n x n) Matriz de ceros (n x n) Matriz de ceros (n x m) Matriz de unos (n x n) Matriz de unos (n x m) Matriz de nmeros aleatorios entre 0 y 1 (n x n) Matriz de nmeros aleatorios entre 0 y 1 (n x m) Genera un vector con n valores entre x1 y x2 igualmente espaciados Genera una matriz mgica (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
Observacin 1 En el caso en que trabajsemos con vectores estos se direccionaran mediante otro vector de posiciones.
Ejemplo:

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.
Forma de empleo: <vector>=[val_ini : paso : val_fin]; 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 (:)
Nota Es prudente que se ejercite el trabajo en este operador probando todas las combinaciones posibles dada su importancia para el trabajo posterior.

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
&& || ~ xor Conjuncin Disyuncin Negacin Disyuncin exclusiva

Operadores lgicos
all(v) all(A) any(v) any(A) find(v) find(A)
Comprueba si todos los elementos del vector (v) cumplen la condicin. Devuelve 0 o 1 Se aplica por separado a cada columna de (A). El resultado es un vector de ceros y unos. Comprueba si alguno de los elementos del vector (v) cumplen la condicin. Devuelve 0 o 1 Se aplica por separado a cada columna de (A). El resultado es un vector de ceros y unos. Determina los ndices de elementos de (v) que cumplen la condicin. 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 Master en 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 Elegir ventana y situar posicin Usar funcin de grfico Sita las propiedades especificadas en el objeto h Situar anotaciones. Etiquetas y leyendas x = 0:0.02:10; y1=x ;y2=x.^2;y3=x.^3; figure(1); subplot(2,2,1) h=plot(x,y1,x,y2,x,y3); set(h,LineWidth,2,{LineStyle};set(h,{Color},{r,g,b}) Elegir caractersticas de lneas y marcadores 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) barh() pie(Y) stairs(Y) hist(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 Grfico de barras horizontales Grfico de pastel o sectores relativo al vector X Grfico escalonado relativo al vector 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. Grficas en 2D
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 Dibuja el grfico de racimo relativo al vector Y. Cada punto de Y est unido al eje OX por una lnea vertical Dibuja el histograma angular relativo al vector Y, de ngulos en radianes. 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

stem(Y) rose(Y)

compass(Z)

3.1. Grficas en 2D
3.1.1. Grficos bsicos: BARRAS
>> x=-3:0.2:3; >> bar(x,exp(-x.^2))
1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 -4

-3

-2

-1

3.1. Grficas en 2D
3.1.1. Grficos bsicos: BARRAS
>> x=-3:0.2:3; >> barh(x,exp(-x.^2))
4 3 2 1 0 -1 -2 -3 -4

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

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
>> x=[12, 56, 4, 5.5, 67]; >> y=[0 0 0 1 1]; >> pie(x,y)

3.1. Grficas en 2D
3.1.1. Grficos bsicos: ESCALONADO
>> x=-10:0.1:10; >> stairs(x,exp(-x.^2))

3.1. Grficas en 2D
3.1.1. Grficos bsicos: ESCALONADO
>> x=-10:0.4:10; >> stairs(x,exp(-x.^2))

3.1. Grficas en 2D
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,10) >> y=randn(1000,1)*2199; >> hist(y,20)

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

>> rose(y));

>>y=randn(1000,1)*pi;

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) loglog(X,Y) semilogx(X,Y) semilogy(X,Y) Dibuja el conjunto de puntos (X,Y), donde X e Y son vectores filas. Crea grfico con escala logaritmica en ambos ejes Crea grfico con escala logaritmica en el eje X y lineal en el eje 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)

>> x=[0,1,2,3,4,5]; >> y=[0,1,4,9,16,25]; >> plot(x,y)

3.1. Grficas en 2D
3.1.2. Funciones plot(x,y)

>> x=0:0.07:20; >> y=sin(x+9).*exp(-0.7*x); >> plot(x,y)

3.1. Grficas en 2D
3.1.2. Funciones plot(x,y)

3.1. Grficas en 2D
3.1.2. Funciones semilogx(x,y)

>> x=1:0.01:100; >> y=sin(x); >> semilogx(x,y)

3.1. Grficas en 2D
3.1.2. Funciones semilogy(x,y)

>> x=1:0.01:100; >> y=sin(x); >> semilogy(x,y) Warning: Negative data ignored.

3.1. Grficas en 2D
3.1.2. Funciones en paramtricas

>> 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. Grficas en 2D
3.1.2. Funciones en polares
>> t=0:0.001:2*pi; >> r=sin(2*t).*cos(2*t); >> polar(t,r)

3.1. Grficas en 2D
3.1.2. Cmo aadir informacin al grfico?
title(ttulo) xlabel(...) ylabel(...) legend() grid Agrega unttulo al dibujo Agrega un ttulo al eje X. xlabel off lo elimina Agrega un ttulo al eje Y. ylabel off lo elimina Define rtulos para las lneas Activa la cuadrcula en el dibujo

3.1. Grficas en 2D
3.1.2. Aadir informacin en Funciones en implcitas
>> x=-2*pi:0.1:2*pi; >> ezplot('x^2-y^4')

3.1. Grficas en 2D
3.1.2. Aadir informacin desde el entorno de trabajo: Command Window
>> 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
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 subplot(m,n,p) 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

3.1. Grficas en 2D
3.1.6. Funcin: fplot

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
fplot(f,[xmin,xmax]) Dibuja la funcion en el intervalo de variacin de x dado Dibuja la funcion en los intervalos de variacin de x e y dados, con las opciones de color y caracteres dadas por S Dibuja las funciones en los intervalos de variacin de x e y dados, con las opciones de color y caracteres dadas por S

fplot(f,[xmin,xmax], ymin, ymax],S)

fplot([f1,f2,..fn],[xmin,x max], ymin, ymax],S)

3.1. Grficas en 2D
3.1.6. Funcin: fplot

fplot(f,[xmin,xmax]t) fplot(f,[xmin,xmax], ymin, ymax],n)

Dibuja la funcion con la tolerancia t 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
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 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. Combina sobre los mismos ejes, las grficas definidas para las tripletas (Xi,Yi,Zi, Si). Se trata de representar varias funciones al mismo tiempo.

plot3(X,Y,Z)

plot3(X,Y,Z, S)

plot3(Xi,Yi,Zi, Si,.)

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
Transforma el campo de definicin de las variables x e y de la funcin a representar z=f(x,y) en argumentos matriciales [X,Y]=meshgrid(x,y) 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) Representa la superficie explcita z=f(x,y) junto con el grfico de contorno correspondiente (curvas de nivel sobre el plano OXY)

surfc(X,Y,Z,C)

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 Representa la superficie explcita z=f(x,y) o la paramtrica con una especie de cortina de cortina o teln en la parte inferior Representa la superficie explcita z=f(x,y) junto con el grfico de contorno correspondiente (curvas de nivel sobre el plano OXY)

meshz(X,Y,Z,C)

meshc(X,Y,Z,C)

3.2. Grficas en 3D
3.2.3. Ejemplo de funcin mesh
>> [X,Y]=meshgrid(-3:0.125:3); >> Z=peaks(X,Y); >> mesh(X,Y,Z); >> axis([-3 3 -3 3 -10 5]);

3.2. Grficas en 3D
3.2.3. Funcin mesh 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. Grficas en 3D
3.2.3. Ejemplo de funcin surf
>>[X,Y]=meshgrid(3:0.125:3); >> Z=peaks(X,Y); >> surf(X,Y,Z);

3.2. Grficas en 3D
3.2.3. Lneas de contorno
contour(Z) Dibuja la grfica de contorno (curvas de nivel) para la matriz Z. El nmero de lneas de contorno se elige arbitrariamente 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). Representa la superficie explcita z=f(x,y) junto con el grfico de contorno correspondiente (curvas de nivel sobre el plano OXY) Representa las grficas en tres diemensiones

contour(Z,n)

contour(x,y,Z,n)

contour3(Z), contour3(Z,n), contour3(x,y,Z,n) contourf(..)

Dibuja una grfica de contorno y rellena las reas entre las isolneas

3.2. Grficas en 3D
3.2.3. Ejemplo de funcin contour

>>[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. Grficas en 3D
3.2.3. Ejemplo de funcin contour

>> [X,Y]=meshgrid(-6:.134:6); >> Z=peaks(X,Y); >> axis([-5 5 -5 5 -12 6]); >> contour(Z,39);

3.2. Grficas en 3D
3.2.3. Ejemplo de funcin contour3

>> [X,Y]=meshgrid(-10:.13:10); >> Z=peaks(X,Y); >> axis([-10 10 -10 10 -20 5]); >> contour3(Z,45);

3.2. Grficas en 3D
3.2.3. Ejemplo de funcin contourf

>> [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 Estructura condicional conformada a partir del comando if en su forma simple: if <condicin> <comandos> end

Se ejecutan los comandos si la condicin es cierta!

4.1.1. Comandos if Estructura condicional conformada a partir del comando if en su forma general:
if <condicin > <comandos1> else <comandos2> end
Se ejecutan los comandos 1 si la condicin es cierta y los comandos 2 si la condicin es falsa!

4.1.1.Comandos if
Los comandos if pueden ser anidados como el comando for que veremos ms adelante. Cuandose anidan comandos if se utiliza la sentencia elseif

if <condicin 1> <comandos1> elseif <condicin 2> <comandos2> else <comandos> end

4.1.1. Comando if
La sintaxis anidada anterior es equivalente, pero ms rpida de ejecucin, a la sintaxis sin anidar siguiente:
if < condicin 1> <comandos1> else if < condicin 2> <comandos2 else if <condicin 3> <comandos3> else . end end end

4.1.1. Ejemplo de Comando if (Simple)

4.1.1. Ejemplo de Comando if (General)

4.1.2. Comando switch El comando switch ejecuta ciertas sentencias basadas en el valor de una variable.
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

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.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.

4.1.3. El bucle for

for <var-control>= <var-ini>:<paso>:<var-fin> <comandos> end for <var-control>= <vector-de-valores> <comandos> end
El bucle empieza con la clausula for y termina con la de end, e incluye en su interior comandos que se separan por comas. Si algn comando define una variable, se finaliza con punto y coma para 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

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.4. El bucle while


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.5. El Comando break

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.6. El Comando continue

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.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

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.
<identificador> = input(<Texto deseado>');

4.2.1. La Funcin input

4.2.1. La Funcin input

NOTA
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);

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.2. La Funcin disp

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.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.

4.3.1 El editor de texto 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.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

4.3.2. Los ficheros *.m

Existen dos tipos de ficheros *.m, los ficheros de comandos (scripts) y las funciones.

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 (Mfichero F.m en 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


Convierte un vector de numeros en una cadena Crea una matriz de caracteres (completando char(c1,..,cn) 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) Compara las cadenas c1 y c2 Compara los n primeros caracteres de las strcomp(c1,c2,n) cadenas c1 y c2 Sustituye c2 por c3 cada vez que aparezca c2 en strrep(c1,c2,c3) c1 char(v)

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() isfield(ST,s) isstruct(ST) rmfield(ST,s) getfiel(ST,s) setfield(ST,s)

Convierte un vector de numeros en una cadena Crea una matriz de caracteres (completando con espacios las cadenas ms cortas) Elimina espacios al final de la cadena Detecta si un caracter es un espacio o no Imprime la cadena c 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) celldisp(cell ar) cellplot(cell ar) iscell(cell ar) num2cell() cell2struct() struct2cell()

Crea un cell array vacio de m x n Muestra el contenido de tadas las celdeas del ca Representa graficamente las celdas de ca Indica si (cell ar) es un vector de celdas Convierte un array numrico en cell array Convierte un cell array en una estructura 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)