Está en la página 1de 139

Matlab e Interfaces Grficas

Evento:

CONATEC 2002

Sede:

INSTITUTO TECNOLGICO DE CIUDAD MADERO

Instructor: M. C. Jos Jaime Esqueda Elizondo Universidad Autnoma de Baja California, Unidad Tijuana

Noviembre de 2002

I.

Qu es MATLAB? ........................................................................................................4 I.1 La ventana de comando. ................................................................................................5 I.2 Comandos principales ...................................................................................................8

II.

Escalares, vectores y matrices .....................................................................................10 II.1 Expresiones en MATLAB..........................................................................................11 II.1.1 Nmeros ..................................................................................................................12 II.1.2 Variables .................................................................................................................12 II.1.3 Operadores ..............................................................................................................13 II.1.4 Funciones ................................................................................................................13 II.1.5 Expresiones .............................................................................................................14 II.2 Generacin de matrices ..............................................................................................14 II.3 Comandos save y load................................................................................................16 II.3.4 Concatenacin .........................................................................................................17

III.

Graficacin en MATLAB y generacin de secuencias discretas..............................18

III.1 Generacin de secuencias discretas. .........................................................................19 III.2 Graficacin en dos dimensiones. ..............................................................................20 III.3 Generacin de grficas en tres dimensiones ............................................................22 III.4 Generacin de grficas semilogartmicas y logartmicas. ........................................23 III.5 Graficacin de matrices como superficies ................................................................24 IV. Simulacin usando archivos M...............................................................................26

IV.1 Scripts .......................................................................................................................26 IV.2 Funciones..................................................................................................................27 V. Graficacin de objetos tridimensionales en MATLAB ................................................28 V.1 Rotacin de objetos en el espacio tridimensional ......................................................28 VI.1.1 Rotor de un ventilador .......................................................................................29 VI.1.2 Avin .................................................................................................................31 VI. El toolbox de Adquisicin de Datos (DAQ) .............................................................35

VII.1 Hardware de adquisicin de datos...........................................................................36 VII.2 El toolbox de adquisicin de datos..........................................................................38 VII.3.1 Adquisicin de datos ........................................................................................40

VII.3.2 Sacar datos........................................................................................................41 VII. Construccin de interfaces grficas de usuario en Matlab........................................44

VII.1 Estructura de los grficos en MATLAB..................................................................44 VII.1.1 Objetos grficos en MATLAB .........................................................................45 VII.1.2 Identificadores (Handles) .................................................................................46 VII.2 Propiedades de los objetos ......................................................................................47 VII.2.1 Funciones set( ) y get( ) ....................................................................................47 VII.2.2 Propiedades por omisin ..................................................................................50 VII.3 Creacin de objetos grficos ...................................................................................50 VII.3.1 Opciones del comando uicontrol......................................................................51 VII.4 Men de interfaz con el usuario ..............................................................................53 VII.5 Controles de la interfaz grfica con el usuario ........................................................55 Texto esttico (text) ......................................................................................................56 Men desplegable (popup)............................................................................................57 Botn (push) .................................................................................................................57 Casilla de verificacin (checkbox)................................................................................58 Botn de radio (radio)...................................................................................................58 Control deslizante (slider).............................................................................................59 Texto editable (edit)......................................................................................................60 Uso de varios ejes para graficacin ..............................................................................61

Qu es MATLAB?
MATLAB es un lenguaje de alto desempeo diseado para realizar clculos tcnicos. MATLAB integra el clculo, la visualizacin y la programacin en un ambiente fcil de utilizar donde los problemas y las soluciones se expresan en una notacin matemtica. MATLAB es un sistema interactivo cuyo elemento bsico de datos es el arreglo que no requiere de dimensionamiento previo. Esto permite resolver muchos problemas computacionales, especficamente aquellos que involucren vectores y matrices, en un tiempo mucho menor al requerido para escribir un programa en un lenguaje escalar no interactivo tal como C o Fortran.

MATLAB se utiliza ampliamente en: Clculos numricos Desarrollo de algoritmos Modelado, simulacin y prueba de prototipos Anlisis de datos, exploracin y visualizacin Graficacin de datos con fines cientficos o de ingeniera Desarrollo de aplicaciones que requieran de una interfaz grfica de usuario (GUI, Graphical User Interface).

En el mbito acadmico y de investigacin, es la herramienta estndar para los cursos introductorios y avanzados de matemticas, ingeniera e investigacin. En la industria MATLAB es la herramienta usada para el anlisis, investigacin y desarrollo de nuevos productos tecnolgicos. La ventaja principal de MATLAB es el uso de familias de comandos de reas especficas llamadas toolboxes. Lo ms importante para los usuarios de MATLAB es que los toolboxes le permiten aprender y aplicar la teora. Los toolboxes son grupos de comandos de MATLAB (archivos M) que extienden el ambiente de MATLAB para resolver problemas de reas especficas de la ciencia e ingeniera. Por ejemplo, existen toolboxes para las reas de Procesamiento Digital de Seales, Sistemas de Control, Redes Neuronales, Lgica Difusa, Wavelets, etc. 4

I.1 La ventana de comando.


La ventana de comando es la ventana principal, con la cual el usuario interacta con MATLAB. Es la primer ventana que se abre al ejecutar MATLAB. Se utiliza para correr los comandos, correr el editor de archivos M (MEDIT, presente en la barra de herramientas), ejecutar los toolboxes, etc. En la figura I.1 se muestra la ventana de comando de Matlab y algunas otras.

Figura I.1 La ventana principal de Matlab; a la derecha se muestra la ventana.

La barra de herramientas proporciona un acceso fcil y rpido a las operaciones ms comunes. Al colocar el puntero del ratn sobre algn botn durante un par de segundos, MATLAB despliega un tooltip, el cual da el nombre del botn ha seleccionado. En la figura I.2 se muestra la barra de herramientas y las opciones que contiene.

Figura I.2 La barra de herramientas y su descripcin.

A travs de la barra de mens se accede a las operaciones que no estn disponibles en la barra de herramientas. El men principal es File, en el se encuentra la gran mayora de las operaciones no presentes en la barra de herramientas. El la figura I.3 se muestra el men File.

Figura I.3 El men File.


La opcin Preferences permite fijar las opciones de despliegue de los resultados y de la forma de operacin de la ventana de comando. En la figura I.4 se muestra la ventana con la que responde MATLAB al seleccionar la opcin Preferences.

Figura I.4 Ventana desplegada por la opcin Preferences.


En esta ventana se aprecian las opciones General, Command Window y Figure Copy Template, entre otras. En la Tabla I.1 se muestran las opciones presentes y se explica su uso.

Tabla I.1 Opciones de la ventana Preferences. General Numeric Format Funcin Determina el formato numrico por omisin dentro de las opciones mostradas. Editor Preference Especifica que editor de texto se usar para crear archivos M, las opciones son: el propio de MATLAB o alguno seleccionado por el usuario. Help Directory Especifica el directorio donde se encuentran los archivos de ayuda de MATLAB. Echo On Show Toolbar Desactiva el eco de los archivos M, es decir, no despliega mensajes. Muestra o esconde la barra de herramientas en la ventana de comando. Enable Debugging Command Font Copying Options Graphical Al llegar a cada punto marcado (breakpoint), automticamente muestra el Debugger. Window Especifica las caractersticas del tipo de letra para el texto que se despliega en la ventana de comando. Especifica las opciones por omisin para copiar objetos de MATLAB al portapapeles de Windows para pasar datos o grficas a otras aplicaciones.

I.2 Comandos principales


En la Tabla I.2 se enlistan los comandos ms comunes de la plataforma de simulacin MATLAB. Dentro de estos comandos se encuentran aquellos que realizan bsquedas, la ayuda en lnea, desplegar las variables presentes en el espacio de trabajo, entre otras.

Tabla I.2 Comandos ms comunes de MATLAB Comando help Funcin Ayuda en lnea. Despliega lneas de texto en la ventana de comando conteniendo la descripcin sobre un comando especfico helpwin Despliega una ventana con la descripcin especfica de un comando y permite ver informacin sobre otros temas relacionados lookfor helpdesk Busca en la ayuda de todos los comandos la clave espeficada Realiza una bsqueda en hipertexto en un buscador Web proporcionando un acceso directo a toda la documentacin: PDFs, informacin sobre la solucin de problemas, etc doc Despliega en un buscador Web la pgina de referencia para el comando especificado, proporciona una descripcin, referencias adicionales y ejemplos del comando especificado figure close who whos which cd pwd Crea una nueva grfica Cierra una grfica Despliega las variables presentes en el espacio de trabajo Despliega las variables presentes en el espacio de trabajo en extenso. Indica la ruta en donde se encuentra la funcin especificada Cambia la ruta al subdirectorio superior Despliega la ruta en donde se encuentra el directorio de trabajo actual

Escalares, vectores y matrices


La mejor manera de familiarizarse con MATLAB consiste en aprender a manejar las matrices. En MATLAB, una matriz es un arreglo rectangular de nmeros. Las matrices de 1x1 se conocen como escalares, y las matrices con una sola columna o rengln se conocen como vectores. Estas matrices y/o vectores pueden contener datos tanto numricos como no numricos.

Los datos pueden introducirse a MATLAB de diferentes maneras: como una lista explcita de elementos cargando los datos de un archivo externo generados por otras funciones creados por archivos M creados por el usuario.

Para asignar un escalar a una variable, se introducen los datos de la siguiente forma

Ejemplo. Dar a la variable dato el valor 2001


dato = 2001

y MATLAB responde de la siguiente manera:


dato = 2001

Para introducir una matriz o un vector, se siguen los siguientes convencionalismos separar los elementos de una columna usando espacios en blanco usar punto y coma (;) para indicar el fin de una columna o el fin del vector encerrar la lista de elementos con parntesis rectangulares [ ]

Ejemplo. Si se desea introducir el siguiente vector y = {0.2944 -1.3362 0.7143 1.6236 -0.6918 0.8580} Teclear en la lnea de comando:
y = [0.2944 -1.3362 0.7143 1.6236 -0.6918 0.8580]

y MATLAB despliega
0.2944 -1.3362 0.7143 1.6236 -0.6918 0.8580

Ejemplo. Si se desea introducir la siguiente matriz 10

16 3 2 13 5 10 11 8 A= 9 7 6 12 4 15 14 1 Respuesta. Teclear en la lnea de comando


A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]

MATLAB responde de la siguiente manera:


A = 16 5 9 4 3 10 6 15 2 11 7 14 13 8 12 1

Una vez que se he introducido la matriz en la lnea de comando, esta permanece en el espacio de trabajo, y para invocarla solo es necesario teclear A para referirse al arreglo de nmeros.

II.1 Expresiones en MATLAB


MATLAB como cualquier lenguaje de programacin proporciona expresiones matemticas, pero a diferencia de la mayora de ellos, las expresiones matemticas que maneja involucran matrices completas.

Las expresiones se dividen en: Nmeros Variables Operadores Funciones

11

II.1.1 Nmeros
MATLAB utiliza una notacin decimal convencional con punto decimal opcional y el signo menos para indicar nmeros negativos. La notacin cientfica utiliza la letra e para especificar el factor de escala en potencias de 10. Los nmeros imaginarios utilizan ya sea la i o la j como sufijo. A continuacin se presentan varios nmeros permitidos.

Ejemplo. Nmeros permitidos 3 9.6397238 1i 99 1.60210e20 3.14159j 0.0001 6.02252e23 3e5i

Todos los nmeros se almacenan internamente usando el formato long especificado por el estndar en punto flotante IEEE. Los nmeros en punto flotante tienen una precisin finita aproximadamente de 16 dgitos decimales y un rango finito aproximadamente de 10-308 a 10-308.

II.1.2 Variables
MATLAB, a diferencia de la mayora de los lenguajes de programacin no requiere de ningn tipo de declaraciones de tipo de datos (entero, punto flotante, complejos, etc) ni de dimensionamiento. Cuando MATLAB encuentra una nueva variable, automticamente crea la variable y reserva la cantidad de localidades de memoria necesarias. Si la variable ya exista dentro del espacio de trabajo actual, simplemente cambia el contenido, si se requiere, o de ser necesario agrega ms localidades de memoria a la variable para contener ms datos.

Ejemplo. Definicin de variables.


Num = 25

Esta variable crea una matriz de 1 x 1 llamada Num y almacena el valor de 25. MATLAB es case sensitive, es decir distingue entre maysculas y minsculas; es decir A y a no son la misma variable.

12

II.1.3 Operadores
Las expresiones utilizan los operadores aritmticos comunes. Los operadores aritmticos son los mismos que en cualquier lenguaje de programacin y se sigue un orden de evaluacin similar al que se utiliza en los dems lenguajes de programacin. En la Tabla II.1 se muestran los operadores aritmticos ms comunes en MATLAB.

Tabla II.1 Operadores aritmticos usados en MATLAB Operador + * / ^ () Operacin matemtica Suma Resta Multiplicacin Divisin Potencia Transpuesta compleja conjugada Especifica el orden de evaluacin

II.1.4 Funciones
MATLAB proporciona un gran nmero de funciones matemticas simples y avanzadas. La gran mayora de estas funciones acepta argumentos complejos. Las funciones ms comunes, como sqrt y sin son parte del ncleo de MATLAB y estn programadas en bajo nivel para hacerlas ms eficientes y no es posible acceder a su cdigo. El resto de las funciones est programada en archivos M y su cdigo est disponible para revisiones o modificaciones. Muchas funciones especiales proporcionan o requieren valores de constantes tiles. MATLAB incorpora constantes matemticas y cierta simbologa, la cual se muestra en la Tabla II.2.

13

Tabla II.2 Constantes y simbologa incorporada en MATLAB. Constante pi i j eps realmin realmax Inf NaN Significado 3.14159265 Unidad imaginaria, Igual que i Precisin relativa en punto flotante, 2-52 Nmero ms pequeo representable en punto flotante, 2-1022 Nmero ms grande representable en punto flotante, (2-e) 21023 Infinito No es un nmero 1

II.1.5 Expresiones
A continuacin se presentan algunos ejemplos de programacin de expresiones

Ejemplo. Calcular:

=
Es necesario teclear:
rho = (1+sqrt(5))/2 rho = 1.6180

(1 + 5 )
2

Ejemplo. Calcular 3 + 4i
a = abs(3+4i) a = 5

II.2 Generacin de matrices


Muchos de los comandos de MATLAB permiten generar vectores o matrices de datos de algunas caractersticas. Por ejemplo, secuencias aleatorias con cierta distribucin, escalones

14

unitarios, matrices o vectores cero, etc. En la Tabla II.3 se muestran algunos comandos que generan matrices.

Tabla II.3 Comandos que generan matrices bsicas Comando Zeros Ones Rand Randn Funcin Todos los elementos de la matriz son ceros Todos los elementos de la matriz son unos Genera una matriz con de elementos con distribucin uniforme Genera una matriz con elementos con distribucin normal

Ejemplo. Generar una matriz de ceros de 2 renglones por 4 columnas


Z = zeros(2,4) Z = 0 0 0 0 0 0 0 0

Ejemplo. Generar una matriz de 3 columnas por 3 renglones con todos sus elementos igual a 5.
F = 5*ones(3,3) F = 5 5 5 5 5 5 5 5 5

Ejemplo. Crear un vector de 10 valores aleatorios entre 0 y 9 con distribucin normal


N = fix(10*rand(1,10)) N = 9 2 6 4 8 7 4 0 8 4

Nota: el comando fix redondea el valor al entero inferior inmediato.

15

Ejemplo. Generar una matriz de 4 x 4 con nmeros aleatorios con distribucin normal.
R = randn(4,4)

R = -0.4326 -1.6656 0.1253 0.2877 -1.1465 1.1909 1.1892 -0.0376 0.3273 0.1746 -0.1867 0.7258 -0.5883

2.1832 -0.1364 0.1139

II.3 Comandos save y load


El comando save guarda una variable en un archivo binario de la siguiente forma:
save nombrearchivo variable(s)

Si no se especifica ninguna variable, guarda todas las variables presentes en el espacio de trabajo. El comando save crea un archivo en formato .mat. Por otra parte, el comando load carga un archivo en el espacio de trabajo actual de la siguiente forma:
load nombarch.dat

El archivo carga en el espacio de trabajo todas las variables presentes al momento de guardar el archivo. Este comando tambin puede cargar archivos de texto que contengan nmeros (nmeros en cdigo ASCII, con extensin .dat)

Ejemplo: Generar una matriz de 4 x 4 con nmeros aleatorios con distribucin normal; crear un archivo que la contenga y posteriormente cargarla en un espacio de trabajo vaco.
r=randn(4,4) r = 0.4282 0.8956 0.7310 0.5779 0.0403 0.6771 0.5689 -0.2556 -0.3775 -0.2959 -1.4751 -0.2340 0.1184 0.3148 1.4435 -0.3510

save datos r clear all load datos.mat

16

who Your variables are: r r r = 0.4282 0.8956 0.7310 0.5779 0.0403 0.6771 0.5689 -0.2556 -0.3775 -0.2959 -1.4751 -0.2340 0.1184 0.3148 1.4435 -0.3510

II.3.4 Concatenacin
La concatenacin es el proceso de unir pequeas matrices o vectores para crear otra matriz o vector de mayor tamao. Este proceso ya se ha usado en algunos de los ejemplos anteriores al concatenar elementos individuales para formar vectores o matrices mediante el operador concatenacin, formado por el par de corchetes, []. Ejemplo. Formar dos vectores de 4 elementos y concatenarlos para formar un solo vector de 8 elementos.
a=[1 2 3 4]; b=[5 6 7 8]; c=[a b] c = 1 2 3 4 5 6 7 8

Ejemplo. Formar una matriz de 2 renglones por 4 columnas con los vectores a y b del ejemplo anterior.
d=[a; b] d = 1 5 2 6 3 7 4 8

17

Graficacin en MATLAB y generacin de secuencias discretas


MATLAB grafica directamente en una ventana diferente a la ventana de comando. Dentro de MATLAB a esta ventana se le conoce como figura (figure). Las funciones de graficacin automticamente crean una nueva ventana si no existe ninguna previa, de lo contrario, la ventana designada como ventana actual es usada por MATLAB para generar la nueva grfica, borrando as la anterior. Generalmente la ventana actual es la ltima ventana a la cual se le hizo clic con el ratn. Para referirse a una ventana generada anteriormente solo es necesario teclear figure(x), donde x representa el nmero de identificacin de la ventana presente en la parte superior de la misma. En la Tabla III.1 se enlistan los comandos bsicos de graficacin

Tabla III.1 Comandos bsicos de graficacin en dos y tres dimensiones. Comando Funcin Plot Stem plot3 stem3 Loglog Crea una grfica bidimensional continua con escala lineal en ambos ejes Crea una grfica bidimensional muestreada con escala lineal en ambos ejes Crea una grfica tridimensional anloga a plot Crea una grfica tridimensional anloga a stem Crea una grfica bidimensional continua con escalas logartmicas en ambos ejes Semilogx Crea una grfica bidimensional continua con escala logartmica en el eje x y escala lineal en el eje y Semilogy Crea una grfica bidimensional continua con escala logartmica en el eje y y escala lineal en el eje x

Ejemplo. Generar una seal senoidal de amplitud unitaria


t=0:pi/100:2*pi; seno2=sin(t); figure plot(t,seno2)

III.1 Generacin de secuencias discretas.


Una seal continua x(t) se convierte a una seal discreta x(n) de la siguiente forma: x(t ) x(n) En la figura III.1 se muestra el proceso de conversin de una seal continua a una seal discreta.
1
1 0 .8

0.8

0 .6

0.6

0 .4

0 .2

t = nT x(t)
0 5 10 15 20 25 30 35

0.4

0.2

- 0. 2

-0 .2

- 0. 4

- 0. 6

x(n)

-0 .4

-0 .6

- 0. 8

-0 .8

-1

-1 0 5 10 15 20 25 30 35

Figura III.1 Generacin de secuencias discretas.


donde T = al periodo de muestreo y f m = 1 es la frecuencia de muestreo. T

x(t ) = A cos(2 f s t ) # " ! x(n) = A cos(2 f s nT ) x(n) = A cos(2 fs n) fm $


f

x(n) = A cos(2 f n) # " !

x(n) = A cos( n) donde: es la frecuencia analgica en radianes/seg f = fs es la frecuencia normalizada f 0.5 fm

f s es la frecuencia de la seal en Hertz

= 2 f s es la frecuencia digital en radianes


= T es la frecuencia digital en radianes,

19

III.2 Graficacin en dos dimensiones.


Es posible generar grficas bidimensionales con los comandos plot y stem usando dos vectores con datos, uno para el eje horizontal, x y otro para el eje vertical, y. Estos comandos funcionan de la siguiente manera.
plot(x, y)

Ejemplo. Generar una seal senoidal de amplitud 3, a una frecuencia de 250 Hz. Usar 32 muestras y una frecuencia de muestreo de 8 KHz. Graficar de forma continua y de forma discreta.
n=0:1:31; xn=3*sin(2*pi*n*250/8000); plot(n,xn); title('Grafica continua');

Con las instrucciones anteriores MATLAB genera la grfica mostrada en la figura III.2
Grafica continua 3

-1

-2

-3

10

15

20

25

30

35

Figura III.2. Grfica de la seal contnua usando el comando plot.


stem (n,xn) title ('Grafica continua');

20

Grafica discreta 3

-1

-2

-3

10

15

20

25

30

35

Figura III.3. Grfica de la seal discreta generada con el comando stem.


Es posible graficar varias secuencias en la misma grfica usando el comando plot. Esto se muestra en el siguiente ejemplo.

Ejemplo. Generar una seal cosenoidal de 23 muestras de amplitud unitaria de 250 y una seal senoidal del mismo nmero de muestras y frecuencia. Usar una frecuencia de

muestreo de 8 KHz.
n = 0:1:31; s1 = cos(2*pi*n*250/8000); s2 = sin(2*pi*n*250/8000); plot(n,s1,n,s2)

En la figura III.4 se muestra el resultado de este ejercicio. El mismo procedimiento se aplica para los dems comandos. MATLAB automticamente asigna colores diferentes para cada grfica.

21

1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1

10

15

20

25

30

35

Figura III.4 Graficacin de dos secuencias en la misma figura usando el comando plot. III.3 Generacin de grficas en tres dimensiones
La graficacin en tres dimensiones es anloga a la graficacin en dos dimensiones. Para el caso tridimensional, se tienen los vectores x, y y z, entonces para generar la grfica solo es necesario teclear

plot3(x,y,z)

Ejemplo. Generar una grfica tridimensional de una helicoidal.

t = 0:pi/50:10*pi; plot3(sin(t),cos(t),t) axis square; grid on

El comando axis permite fijar los lmites de los ejes en una grfica y la opcin square fija las coordenadas iguales en los tres ejes. En la figura III.5 se muestra la grfica resultante.

22

35 30 25 20 15 10 5 0 1 0.5 0 -0.5 -1 -1 0 -0.5 0.5 1

Figura III.5 Grfica helicoidal resultante. III.4 Generacin de grficas semilogartmicas y logartmicas.
Los comandos semilogx, semilogy y loglog funcionan de manera similar al comando plot, solo que usan una escala logartmica y una lineal para los comandos semilogx y semilogy, mientras que loglog utiliza ambas escalas logartmicas.

Ejemplo. Graficar 100 muestras de la secuencia y = seno (0.2n) utilizando una escala horizontal logartmica. En la figura III.6 se muestra el resultado.

n=0:1:99; seno=sin(0.2*n); semilogx(n,seno)

23

1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 10

10

10

Figura III.6 Grfica semilogartmica de y = seno (0.2*n). III.5 Graficacin de matrices como superficies
MATLAB define una superficie con los puntos de coordenadas sobre el eje z sobre una rejilla rectangular sobre el plano x-y. Esta grfica se forma al unir puntos adyacentes con lneas rectas. Las grficas de superficie son muy tiles para visualizar matrices demasiado grandes para desplegarlas de forma numrica o graficarse en forma de funciones de dos variables. Los comandos principales que realizan esta funcin son mesh y surf.

El comando mesh grafica mediante superficies delimitadas por lneas de color de acuerdo a la posicin en el eje z. El comando surf funciona de manera anloga, solo que adems despliega las caras de la superficie comprendida entre las lneas que forman la grfica en color. En la Tabla III.2 se mencionan estos comandos y otros ms.

24

Tabla III.2 Comandos de graficacin de tres dimensiones. Comando mesh, surf contour meshc, surfc Funcin Genera grficas de superficie Genera grficas de trazas de nivel Genera grficas de superficie con trazas de nivel en el plano inferior pcolor Genera una grfica plana de superficie en la cual el valor es proporcional al color surfl Genera una grfica de superficie iluminada en una direccin especfica surface Es una funcin de bajo nivel en la cual estn basados los comandos anteriores (excepto contour)

Ejercicio. Utilizar el comando peaks para observar el funcionamiento de los comandos de graficacin. El comando peaks es una funcin de dos variables resultante de desplazar y escalar curvas de distribucin gaussiana.

25

Simulacin usando archivos M


Los archivos que contienen el cdigo de la plataforma de simulacin MATLAB se llaman archivos M. Estos archivos M pueden ser funciones que acepten argumentos de entrada y produzcan salidas, o simplemente pueden ser scripts que ejecuten una serie de comandos de MATLAB. Para que estos archivos sean reconocidos en MATLAB, debe usarse la extensin .m. Estos archivos pueden crearse en cualquier editor de textos.

IV.1 Scripts
Los scripts son la clase ms simple de archivos M, no tienen argumentos de salida. Los scripts son muy tiles para automatizar los comandos de MATLAB cuando resulta muy engorroso hacerlo desde la lnea de comando. Los scripts operan en el espacio de trabajo existente o pueden crear nuevas variables; es decir pueden usar cualquier variable que este presente en el espacio o crear nuevas variables que queden disponibles al terminar de ejecutar el script para nuevos clculos.

Ejemplo. Teclee las siguientes lneas en el Editor/Debugger de MATLAB.


%Este archivo M genera grficas conocidas como ptalos de flores

clear all; theta = pi:0.01:pi; rho(1,:) = 2*sin(5*theta).^2; rho(2,:) = cos(10*theta).^3; rho(3,:) = sin(theta).^2; rho(4,:) = 5*cos(3.5*theta).^3; for i = 1:4 polar(theta,rho(i,:)) pause end

Al terminar de teclear, es necesario guardar el script en un archivo M, al cual se le dar el nombre de petalos.m. Para ejecutar las lneas de este script basta teclear petalos en la lnea

26

de comando. Despus que el script despliegue una grfica, presione la tecla Enter para dar paso a la nueva grfica. Una vez que termine la ejecucin del archivo M, las variables, i, theta y rho permanecen en el espacio de trabajo. Para ver las variables presentes en el espacio de trabajo, teclear who.

IV.2 Funciones
Las funciones son archivos M que aceptan argumentos de entrada y de salida. Las funciones operan dentro de su propio espacio de trabajo, el cual generan al ejecutarse y al cual no se puede acceder desde el espacio de trabajo de MATLAB.

Ejemplo. Teclee las siguientes lneas en el Editor/Debugger de MATLAB. Esta funcin calcula el promedio de los elementos de un vector

function y = promedio(x) % PROMEDIO Calcula la media de los elementos de un vector % PROMEDIO(X), donde X es el vector, es la media de los elementos del vector % Si la entrada no es un vector, se produce un error. [m,n] = size(x); if (~((m == 1) | (n == 1)) | (m == 1 & n == 1)) error(Input must be a vector) end y = sum(x)/length(x); % Clculo del promedio

La funcin PROMEDIO acepta un vector como argumento de entrada y regresa un solo valor como argumento de salida. Para probar la funcin, teclear las siguientes lneas.
z = 1:99; promedio(z) ans = 50 y = promedio(z)

27

Graficacin de objetos tridimensionales en MATLAB


La creacin de objetos tridimensionales complejos con una sola superficie o malla suele ser difcil e ineficiente. Es ms sencillo armar un objeto usando piezas que puedan crearse fcilmente como una sola superficie o malla. El conjunto de coordenadas de x, y y z para una pieza puede crearse usando un sistema de coordenadas local. Si se desea colocar las piezas en las posiciones adecuadas, sern necesarias operaciones de rotacin, traslacin y cambio de escala de las coordenadas de cada pieza.

V.1 Rotacin de objetos en el espacio tridimensional


Transformacin del origen. Suponga que una pieza u objeto completo se define en un sistema de coordenadas local (x, y, z), y si el origen se traslada a (xa, ya, za), las nuevas coordenadas (x, y, z ) se convierten en: x = x + xa y = y + ya z = z + za Cambio de escala. Si se cambia la escala en el sistema local por un factor de escala , las nuevas coordenadas en el sistema local sern: x = x y = y z = z Rotacin alrededor del eje x. Si el sistema local gira en sentido contrario a las manecillas del reloj grados alrededor del eje x, las nuevas coordenadas sern: x=x y = y cos zsen z = ysen + z cos Rotacin alrededor del eje y. Si el sistema local gira en sentido contrario a las manecillas del reloj grados alrededor del eje y, las nuevas coordenadas sern: x = zsen + x cos y=y z = z cos + xsen

28

Rotacin alrededor del eje z. Si el sistema local gira en sentido contrario a las manecillas del reloj grados alrededor del eje z, las nuevas coordenadas sern: x = x cos + ysen y = xsen + y cos z=z Las funciones M para girar un sistema son:

function [xd,yd,zd]=rotx_(x,y,z,th) cosf=cos(th*pi/180);sinf=sin(th*pi/180); xd =x; yd = zd = cosf.*y - sinf.*z; sinf.*y + cosf.*z;

function [xd,yd,zd]=roty_(x,y,z,th) cosf=cos(th*pi/180);sinf=sin(th*pi/180); yd =y; xd = cosf.*x + sinf.*z;

zd = - sinf.*x + cosf.*z;

function [xd,yd,zd]=rotz_(x,y,z,phi) cosf=cos(phi*pi/180);sinf=sin(phi*pi/180); xd = cosf *x - sinf *y;

yd = sinf *x + cosf *y; zd =z;

VI.1.1 Rotor de un ventilador En esta seccin se presenta el cdigo para dibujar el rotor de un ventilador, el cual consiste en un eje cilndrico y seis aspas. En el listado que se da a continuacin (fan_rot.m) se crea una malla para una aspa mediante un arreglo de perfiles de seccin, los cuales se calculan con la funcin b_design, la cual se presenta primero.

function [thb,zb]=b_design minz=-0.5;

29

maxz=0.1; minth=-0.4; maxth=0.4; r=0.4; dth=pi/32; th=0:dth:2*pi x=r*cos(th); y=r*sin(th).* (x+0.5).*(5-x)/15 ... ;

- (x+0.4).*(x-0.4)+ (0.6/0.8)*(x)-0.2 ; thb=x; zb=y;

Cdigo del archivo fan_rot.m


set(gcf, 'NumberTitle','off','Name', 'Figure B.1; fan_rot') clear,clf colormap jet r=0.601:0.1:2; imax=length(r); dth=pi/16; th=-2*dth:dth:2*dth; [th,zb]=b_design; jmax=length(th); for i=1:imax for j=1:jmax x(i,j)=r(i)*cos(th(j)); y(i,j)=r(i)*sin(th(j)); z(i,j)=zb(j); end end zc=z; for i=imax-1:imax for j=1:jmax x(i,j)=r(imax-2)*cos(th(j)); y(i,j)=r(imax-2)*sin(th(j)); if i== imax, z(i,j)=(zb(j)+zb(jmax+1-j))*0.5;, end zc(i,j)=1; end end

30

hold on for k=1:6 angl=60*k; [xb,yb,zb] = rotz_(x,y,z,angl); mesh(xb,yb,zb, zc) pause end axis([-1.5,1.5,-1.5,1.5,-1.5,1.5]) [xc,yc,zc]=cylinder(0.595,80); pause xc(2,:)=xc(1,:); yc(2,:)=yc(1,:); zc(1,:)=-ones(size(xc(1,:)))*0.7; zc(2,:)=ones(size(xc(1,:)))*0.7; colr=0.7*ones(size(zc)); mesh(xc,yc,zc, colr*0.6) pause mesh(xc*0.95,yc*0.95,zc, colr*0.99) view([-100,20])

VI.1.2 Avin En el segundo ejemplo, se dibuja un avin formado por cinco piezas. Primero se crea el fuselaje con un arreglo de crculos . Con la funcin wing_2d se crea el ala, y la cola y el estabilizador son copias del ala principal con cambios de escala, rotacin y traslacin.

set(gcf, 'NumberTitle','off','Name', 'Figure B.3; plane_ ') clear, clf dth=pi/16; fuselen=6; thf=pi:-dth:pi/2; xa = 0:0.5:fuselen;

xt=fuselen+0.25:0.25:fuselen+2; dxt = 1.4/(length(xt)-0) ; yt = -1+dxt:dxt length(yt); :0.4;

31

xft=[cos(thf),xa, xt]; yft=[sin(thf)- 0.3*sin(2*thf).^4, ones(size(xa)), ones(size(yt))]; xfb=[cos(thf),xa,xt] ; yfb=[-sin(thf),-ones(size(xa)),yt ];

k=length([thf, xa]); yfb(k)=( yfb(k-1)+yfb(k+1))/2; xc =(xfb+xft)/2; yc = (yfb+yft)/2; L=length(xc); for i=1:L if xc(i)<0 yc(i)=0; end end

a=0.5; b=0.5;

dth=pi/8;

th=0:dth:2*pi; jmax=length(th); xr=cos(th);

yr=sin(th); L=length(xc);

for i=1:L xr=cos(th); yr=sin(th); a = (yft(i) b = (-yfb(i) for j=1:jmax y(i,j)=yr(j)*b+yc(i); if th(j)<pi x(i,j)=xr(j)*b; z(i,j)=xc(i); y(i,j)=yr(j)*b*a + yc(i); end -yc(i))/(-yfb(i) + yc(i)); +yc(i));

32

end end mesh(z, x,y)

axis([-2 8 -6 6 -6 6]) hold on [xw,yw,zw] = wing_; F = 1.7; xw=F*xw; yw=F*yw; zw=F*zw; [x1,y1,z1] = rotz_(xw,yw,zw,-90); [x2,y2,z2] = rotx_(xw,yw,zw,180); [x2,y2,z2] = rotz_(x2,y2,z2,-270); mesh(x1+2,y1-0.5,z1+ 0.7); pause mesh(x2+2,y2+0.5,z2+ 0.7); pause mesh(0.8*x1+6.6,0.5*z1-0,-0.3*y1+1.2) pause mesh(0.7*x1+6.6,0.3*y1-0.7,0.9*z1+ 0.7); pause mesh(0.7*x2+6.6,0.3*y2+0.7,0.9*z2+ 0.7); pause caxis([-3,1])

axis([-2 8 -6 6 -6 6])

title('Avin') caxis([-2, 2]) colormap(hsv)

Cdigo de la funcin que genera la informacin de las alas.


function [zw,xw,yw] = wing_ % Genera los datos para dibujar las alas del avin x=0:0.1:1; n=length(x); for k=1:30

for i=2:n-1

33

x(i)=0.5*x(i-1)+0.4*x(i+1); end end for i=2:n x(n+i-1)=x(n-i+1); end y=0.2969*sqrt(x) - 0.126*x - 0.3516*x.^2 0.2843 * x.^3 - 0.1015*x.^4; for i=n+1:length(y) y(i)=-y(i); end %axis([-0.5, 1.5 ,-1 1]) %plot(x,y) jmax=15; for j=1:jmax for i=1:2*n-1 + ...

xw(i,j)=x(i); yw(i,j)=y(i); zw(i,j)=0.3*(j-1); end

end yw(:,jmax)=zeros(size(yw(:,jmax))); zw(:,jmax)=zw(:,jmax-1);

%mesh(zw,xw,yw) %axis([0,2,0,2,-1,1])

34

El toolbox de Adquisicin de Datos (DAQ)


El toolbox de Adquisicin de Datos (DAQ) le permite al usuario capturar y/o generar seales reales e interactuar con ellas desde Matlab. De lo anterior, puede deducirse que un sistema de adquisicin de datos es un conjunto de software y hardware que permiten a un sistema digital conectarse al mundo real. Un sistema de adquisicin de datos tpico est formado de: Sensores y actuadores Hardware de adquisicin de datos Hardware de acondicionamiento de seal Computadora o procesador Programa En la figura VII.1 se muestra un sistema tpico de adquisicin de datos y posteriormente se describe brevemente cada una de las etapas que forman el sistema tpico de adquisicin de datos. .
Proceso o fenmeno fsico

Sensor

Acondicionamiento de la seal Hardware de Adquisicin Computadora Programa

Actuador

Acondicionamiento de la seal

Proceso o fenmeno fsico

Figura VI.1 Sistema tpico de adquisicin de datos.

Sensores y actuadores (transductores) A los sensores y actuadores tambin se les conoce como transductores. Transductor es aquel elemento que convierte una seal de entrada de cierta naturaleza en una seal de salida de otra naturaleza. Por ejemplo, un micrfono es un sensor que convierte energa

35

sonora (en forma de presin) en energa elctrica, mientras que una bocina es un actuador que convierte una seal elctrica en una seal sonora.

Hardware de adquisicin de datos Es el corazn de cualquier sistema de adquisicin de datos. Su funcin es convertir seales analgicas provenientes del mundo real a seales digitales (convertidores analgico a digital, ADC) y/o convertir seales digitales a analgicas (convertidores digital a analgico, DAC).

Hardware de acondicionamiento de la seal Generalmente las seales de los sensores son incompatibles con el hardware de adquisicin de datos; para lograr la compatibilidad se requiere acondicionar la seal. Por ejemplo, si la seal es muy pequea, es necesario amplificarla; por el contrario, si la seal es muy grande se requiere atenuarla. Tambin es muy comn eliminar componentes de frecuencias indeseables que se encuentran presentes en la seal a procesar. En el caso de las seales de salida, generalmente estas son de baja corriente y mediante hardware se les amplifica y aumenta la corriente.

La computadora o procesador La computadora proporciona un procesador, un reloj, un bus para transferir datos y espacio de memoria o disco para almacenar datos.

Software El software de adquisicin de datos permite intercambiar informacin entre la computadora y el hardware. Por ejemplo, los programas tpicos permiten configurar la tasa de muestreo de una tarjeta adquisitora de datos y adquirir un nmero predefinido de muestras.

VII.1 Hardware de adquisicin de datos


El hardware de adquisicin de datos puede conectarse directamente a una ranura de expansin en la computadora o conectarse a ella externamente a ella mediante cables y

36

algn puerto. En este caso, el hardware de adquisicin de datos ser la tarjeta de sonido de la computadora. De forma simple, el hardware de adquisicin de datos se caracteriza por los subsistemas que posee. Un subsistema es un componente del hardware de adquisicin de datos que ejecuta una tarea especfica. Entre los subsistemas ms comunes se encuentran: Entradas analgicas Salidas analgicas Entradas/Salidas digitales Contadores y temporizadores

Subsistemas de entradas analgicas Estos subsistemas convierten (digitalizan) las seales analgicas de entrada provenientes de un sensor a una secuencia de bits que pueden ser interpretados por la computadora. Generalmente son dispositivos multicanal de 12 o 16 bits de resolucin (ADC). En este caso, la entrada analgica se refiere a la entrada de micrfono de la tarjeta de sonido de la PC.

Subsistemas de salidas analgicas Estos subsistemas convierten datos digitales almacenados en la computadora en seales reales analgicas. Las tarjetas de adquisicin de datos comunes generalmente ofrecen dos canales analgicos de salida de 12 bits de resolucin (DAC). En este caso, la salida analgica se refiere a la salida de bocinas (speakers) de la tarjeta de sonido de la PC.

Subsistemas de entrada/salida digital Estos subsistemas estn diseados para manipular entradas y salidas digitales (niveles lgicos) de y hacia el hardware. Estos valores generalmente se manejan como bits individuales o lneas o como un puerto generalmente de ocho lneas o bits.

Subsistemas contador/temporizador Se utilizan para contar eventos, para medir frecuencias, determinar perodos y generar trenes de pulsos.

37

VII.2 El toolbox de adquisicin de datos


El toolbox de adquisicin de datos se divide en tres componentes principales: Las funciones M establecidas El motor de adquisicin de datos Los manejadores (drivers) de la tarjeta de adquisicin de datos (en este caso, la de sonido) Como se muestra en la figura VII.2, estos componentes permiten intercambiar informacin entre Matlab y el hardware de adquisicin de datos.
MATLAB Datos y funciones interactivas
Toolbox de aquisicin de datos Funciones M

Motor de Adquisicn de datos

Archivo en disco

Adaptador del Manejador de Hardware

Propiedades, datos y eventos Manejador de Hardware Sensor Hardware (Tarjeta) Actuador

Figura VI.2 Componentes del toolbox de adquisicin de datos

La figura anterior muestra como fluye la informacin de componente a componente. Esta informacin consiste de:

Propiedades Con el manejo de las propiedades es posible controlar el comportamiento de la aplicacin. Las propiedades contienen informacin sobre la configuracin del hardware.

38

Datos Pueden ser datos provenientes de un sensor conectado a un subsistema de entrada analgica para ser almacenados en Matlab o tambin pueden ser datos de salida de Matlab a un actuador conectado a un subsistema de salida analgica.

Eventos Un evento ocurre en un tiempo particular una vez que ciertas condiciones se hayan cumplido y se produzcan una o ms acciones predeterminadas. Los eventos solo pueden generarse despus de haber configurado las propiedades correspondientes. Una forma de utilizar los eventos puede ser el analizar o graficar datos una vez que se adquiere un nmero predeterminado de ellos.

Funciones M Para ejecutar cualquier tarea con la aplicacin de adquisicin de datos, debe llamarse algunas funciones M. Entre otras cosas, estas funciones permiten: crear dispositivos de objetos que proporcionan un camino de Matlab al hardware y permite controlar el comportamiento de la aplicacin capturar datos o sacar datos configurar las propiedades evaluar el estado y los recursos del hardware de adquisicin

El motor de adquisicin de datos El motor de adquisicin de datos, o simplemente motor, es una librera de enlace dinmico (dll) en forma de archivo MEX que: guarda los dispositivos de objetos y sus valores asociados de configuracin que controlan la aplicacin de adquisicin de datos controla la sincronizacin de eventos controla el almacenaje de datos capturados o en espera de ser sacados

Mientras el motor ejecuta estas tareas, puede usarse Matlab para ejecutar otras tareas como el anlisis de los datos adquiridos. En otras palabras, el motor y Matlab son asncronos.

39

El adaptador del manejador del hardware El adaptador del manejador del hardware, o simplemente el manejador, es una interfaz entre el motor de adquisicin de datos y el manejador de la tarjeta. El propsito principal del adaptador es pasar informacin entre Matlab y la tarjeta adquisitora a travs del manejador (driver) generalmente proporcionado por el fabricante. Por ejemplo, si se usa una tarjeta adquisitora de National Instruments, entonces debe estar instalado el manejador correspondiente de NI-DAQ proporcionado por el fabricante. En la tabla VII.1 se muestran las tarjetas soportadas por el toolbox de adquisicin de datos.

Tabla VII.1 Tarjetas soportadas por el toolbox de adquisicin de datos Fabricante National Instruments ComputerBoards Agilent Technologies Tarjetas de sonido para Windows Nombre del adaptador nidaq cbi hpel432 winsound

VII.3.1 Adquisicin de datos En este caso, se utilizar la tarjeta de sonido instalada en la computadora. Con el siguiente ejemplo, se capturar un segundo de datos de un canal analgico de entrada y posteriormente se graficarn dichos datos. 1. Creacin el dispositivo de objeto. Crear el objeto del canal analgico de entrada ai para la tarjeta de sonido
ai=analoginput(winsound)

2. Agregar canales. Agregar un canal de hardware


addchannel(ai,1);

3. Configurar los valores correspondientes. Configure la tasa de muestreo a 44.1 KHz y capture un segundo de muestras (44100 muestras)
set(ai,'SampleRate',44100) set(ai,'SamplesPerTrigger',44100)

4. Adquirir datos. Iniciar la adquisicin. Cuando terminen de adquirir todos los datos, ai automticamente detiene la ejecucin.
start(ai)

40

data = getdata(ai); plot(data)

5. Limpiar el espacio de trabajo. Una vez que ya no se requiera utilizar ai, debe eliminarse de la memoria y del espacio de trabajo de Matlab.
delete(ai) clear ai

VII.3.2 Sacar datos En este caso, se utilizar la tarjeta de sonido instalada en la computadora. Con el siguiente ejemplo, se sacar un segundo de datos por un canal analgico de salida. 1. Creacin el dispositivo de objeto. Crear el objeto del canal analgico de salida ao para la tarjeta de sonido
ao=analogoutput(winsound)

2. Agregar canales. Agregar un canal de hardware a ao


addchannel(ao,1);

3. Configurar los valores correspondientes. Configure la tasa de muestreo a 44.1 KHz y capture un segundo de muestras (44100 muestras)
set(ao,'SampleRate',44100)

4. Sacar datos. Iniciar la adquisicin. Crear un segundo de datps de salida y almacenarlos en el motor para una eventual salida por el subsistema de salida analgico. Debe almacenarse una columna de datos para cada canal aadido.
n=0:1:88200; data = sin(2*pi*n*1000/44100); putdata(ao,[data])

Iniciar la salida. Cuando todos los datos hayan salido, ao automticamente finaliza la ejecucin.
start(ao)

Esta lnea bloquea la lnea de comando de Matlab hasta que se detiene ao


while strcmp(ao.Running,'On') end

5. Limpiar el espacio de trabajo. Una vez que ya no se requiera utilizar ao, debe eliminarse de la memoria y del espacio de trabajo de Matlab. 41

delete(ao) clear ao

A continuacin se presenta un segundo ejemplo de adquisicin y de envo de datos Entrada


ai=analoginput(winsound) addchannel(ai,1); ai.samplerate=8000; ai.samplespertrigger=40000; ai.triggertype=immediate; start(ai) [d,t]=getdata(ai); figure plot(t,d); Salida ao=analogoutput(winsound) addchannel(ao,[1 2]) set(ao,samplerate,8000); t=linspace(0.2*pi,1600); y=sin(500*t); y1==sin(800*t); putdata(ao,[y y]); putdata(ao,[y1 y1]); set(ao,triggertype,immediate) start(ao) set(ao,repeatoutput,1); putdata(ao,[y y]); putdata(ao,[y1 y1]); start(ao); delete(ao);

Para desplegar informacin general sobre el toolbox de adquisicin de datos, teclear:


out = daqhwinfo out = ToolboxName: 'Data Acquisition Toolbox' ToolboxVersion: [1x39 char]

42

MatlabVersion: '6.0.0.74976 (R12)' InstalledAdaptors: {4x1 cell}

El campo InstalledAdaptors contiene una lista de los adaptadores de dispositivos instalados en el sistema. Para desplegar los adaptadores instalados, teclear:
out.InstalledAdaptors ans = 'cbi' 'hpe1432' 'nidaq' 'winsound'

43

Construccin de interfaces grficas de usuario en Matlab


MATLAB permite desarrollar fcilmente un conjunto de pantallas (paneles) con botones, mens, ventanas, etc., que permiten utilizar de manera muy simple programas realizados dentro de este entorno. Este conjunto de herramientas se denomina interfaz grfica de usuario (GUI). Las posibilidades que ofrece MATLAB no son muy amplias, en comparacin a otras aplicaciones de Windows como Visual Basic, Visual C. La elaboracin de GUIs puede llevarse a cabo de dos formas, la primera de ellas consiste en escribir un programa que genere la GUI (script), la segunda opcin consiste en utilizar la herramienta de diseo de GUIs, incluida en el Matlab, llamada GUIDE. En esta seccin se abordarn ambas formas de crear CUIS. Para poder hacer programas que utilicen las capacidades grficas avanzadas de MATLAB hay que conocer algunos conceptos que se explican en las siguientes secciones. El panel GUI se crea en una ventana, identificada como figura y est formada por los siguientes elementos: Men de interfaz con el usuario Dispositivos de control de la interfaz con el usuario Ejes para desplegar las grficas o imgenes.

Mediante la GUI, el flujo de informacin est controlado por las acciones (eventos) que sucedan en la interfaz. Comparando con los scripts, en estos los comandos estn en un orden preestablecido, mientras que en la GUI no lo estn. Los comandos para crear una GUI se escriben en un script, pero una vez que se ejecuta la GUI, esta permanece en la pantalla aunque se haya terminado la ejecucin del script. La interaccin con el usuario contina hasta que se cierra la GUI.

VII.1 Estructura de los grficos en MATLAB


Los grficos de MATLAB tienen una estructura jerrquica formada por objetos de distintos tipos. Esta jerarqua tiene forma de rbol, con el aspecto mostrado en la figura VIII.1.

44

Panel Pantalla (screen)

Ventana 1 (figure)

Ventana 2 (figure)

Ejes 1 (axes)

Ejes 1 (axes)

Controles (uicontrol)

Mens (uimenu)

Lneas (lines)

Superficies (surfaces)

Texto (text)

Imagen (imagen)

Polgono (patch)

Fig VIII.1 Jerarqua grfica en MATLAB

VII.1.1 Objetos grficos en MATLAB Segn se muestra en la figura VIII.1, el objeto ms general es la pantalla o panel (screen). Dicho objeto es la raz de todos los dems y slo puede haber un objeto pantalla. Una pantalla puede contener una o ms ventanas (figures). A su vez cada una de las ventanas puede tener uno o ms ejes de coordenadas (axes) en los que se puede representar otros objetos de ms bajo nivel. Una ventana puede tener tambin controles (uicontrols) tales como botones, barras de desplazamiento, botones de seleccin o de opcin, etc.) y mens (uimenus). Finalmente, los ejes pueden contener los cinco tipos de elementos grficos que permite MATLAB: lneas (line), polgonos (patch), superficies (surfacs), imgenes tipo bitmap (image) y texto (text). La jerarqua de objetos mostrada en la figura VIII.1 indica que en MATLAB hay objetos padres e hijos. Por ejemplo, todos los objetos ventana son hijos de pantalla, y cada ventana es padre de los objetos ejes, controles o mens que estn por debajo. A su vez los elementos grficos (lneas, polgonos, etc.) son hijos de un objeto ejes, y no tienen otros objetos que sean sus hijos. Cuando se borra un objeto de MATLAB automticamente se borran todos los objetos que son sus descendientes. Por ejemplo, al borrar unos ejes, se borran todas las lneas y polgonos que son hijos suyos.

45

VII.1.2 Identificadores (Handles) Cada uno de los objetos de MATLAB tiene un identificador nico (handle), a los cuales se les llamar handle o simplemente id, indistintamente. Algunos grficos tienen muchos objetos, en cuyo caso tienen mltiples handles. El objeto raz (pantalla) es siempre nico y su identificador es el cero. El identificador de las ventanas es un entero, que aparece en la barra de nombre de dicha ventana. Los identificadores de otros elementos grficos son nmeros float, que pueden ser obtenidos como valor de retorno y almacenados en variables de MATLAB. MATLAB puede tener varias ventanas abiertas, pero siempre hay una y slo una que es la ventana activa. A su vez una ventana puede tener varios ejes, pero slo unos son los ejes activos. MATLAB dibuja en los ejes activos de la ventana activa. Los identificadores de la ventana activa, de los ejes activos y del objeto activo se pueden obtener respectivamente con los comandos gcf (get current figure), gca (get current axes) y gco (get current object). Ejemplo: gcf gca gco devuelve un entero, que es el handle de la ventana activa devuelve el handle de los ejes activos devuelve el handle del objeto activo

Los objetos se pueden eliminar con el comando delete,. delete(handle) borra el objeto correspondiente y todos sus hijos

Como ejemplo, ejectense los siguientes comandos, observando la evolucin de lo dibujado en la ventana y como MATLAB devuelve el id de cada objeto como valor de retorno:
fig = figure li1 = line([0,5],[0,5]) li2 = line([0,5],[5,0]) po1 = patch([1,4,3],[1,1,4],'g') delete(po1) delete(li1)

Estos valores de retorno pueden ser almacenados en variables para un uso posterior. En ocasiones el id es un vector de valores, como por ejemplo al crear una superficie que consta de lneas y polgonos. Los comandos anteriores han abierto una ventana y dibujado sobre ella dos lneas cruzadas y un tringulo de color verde. 46

VII.2 Propiedades de los objetos


Todos los objetos de MATLAB tienen distintas propiedades. Algunas de stas son el tipo, el estilo, el padre, los hijos, si es visible o no, y otras propiedades particulares del objeto concreto de que se trate. Las propiedades comunes a todos los objetos son: children, clipping, parent, type, UserData, Visible. Otras propiedades son propias de un tipo determinado de objeto. Las propiedades tienen valores por omisin, que se utilizan siempre que el usuario no indique otra cosa. Es posible cambiar las propiedades por omisin, y tambin devolverles su valor original (llamado factory, por ser el valor por defecto con que salen de fbrica). El usuario puede consultar (query) los valores de las propiedades de cualquier objeto. Algunas propiedades pueden ser modificadas y otras no (son read only). Hay propiedades que pueden tener cualquier valor y otras que slo pueden tener un conjunto limitado de valores (por ejemplo, on y off en el caso de los comandos zoom y grid).

VII.2.1 Funciones set( ) y get( ) MATLAB dispone de las funciones set y get para consultar y cambiar el valor de las propiedades de un objeto. Las funciones set(id) lista en pantalla todas las propiedades del objeto al que corresponde el handle (slo los nombres, sin los valores de las propiedades). La funcin get(id) produce un listado de las propiedades y de sus valores. Como ejemplo, siendo li1 el id de la primera lnea dibujada en el ejemplo anterior. Teclee lo siguiente,
li1 = line([0,5],[0,5]); set(li1) Color EraseMode: [ {normal} | background | xor | none ] LineStyle: [ {-} | -- | : | -. | none ] LineWidth Marker: [ + | o | * | . | x | square | diamond | v | ^ | > | < | pentagram | hexagram | {none} ] MarkerSize MarkerEdgeColor: [ none | {auto} ] -or- a ColorSpec. MarkerFaceColor: [ {none} | auto ] -or- a ColorSpec. XData YData ZData

47

ButtonDownFcn Children Clipping: [ {on} | off ] CreateFcn DeleteFcn BusyAction: [ {queue} | cancel ] HandleVisibility: [ {on} | callback | off ] HitTest: [ {on} | off ] Interruptible: [ {on} | off ] Parent Selected: [ on | off ] SelectionHighlight: [ {on} | off ] Tag UIContextMenu UserData Visible: [ {on} | off ]

La sentencia set(li1) muestra las propiedades del objeto lnea; las propiedades que tienen un conjunto finito de valores presentan estos valores entre corchetes ([]) separados por barras verticales (|). La opcin por omisin se muestra entre llaves ({}). El comando get(id) devuelve las propiedades del objeto junto con sus valores.
get(li1) Color = [0 0 1] EraseMode = normal LineStyle = LineWidth = [0.5] Marker = none MarkerSize = [6] MarkerEdgeColor = auto MarkerFaceColor = none XData = [0 5] YData = [0 5] ZData = []

ButtonDownFcn = Children = [] Clipping = on

48

CreateFcn = DeleteFcn = BusyAction = queue HandleVisibility = on HitTest = on Interruptible = on Parent = [73.0002] Selected = off SelectionHighlight = on Tag = Type = line UIContextMenu = [] UserData = [] Visible = on

Para conocer el valor de una propiedad en particular de un objeto, se utiliza la funcin get(id,propiedad).
get(li1,'color') ans = 0 0 1

Las propiedades de un objeto pueden ser cambiadas o modificadas (salvo que sean readonly) con el comando set(id,propiedad,valor). Por ejemplo, para cambiar el color de la segunda lnea en el ejemplo anterior, teclear:
set(li1,'color','r')

Teclense las siguientes lneas y obsrvese como se alteran las propiedades de los objetos.
close(gcf) fig=figure li1=line([0,5],[0,5]) li2=line([0,5],[5,0],'color','w') po1=patch([1,4,3],[1,1,4],'g') pause(3) set(li1,'LineWidth',2), pause(1); set(li2,'LineWidth',2,'color','r'), pause(1); set(po1,'LineWidth',2,'EdgeColor','w','FaceColor','b')

El comando set permite cambiar varias propiedades a la vez, poniendo sus nombres entre apstrofos seguidos de sus valores. Los ejemplos anteriores demuestran que es esencial

49

disponer de los id si se desea modificar un grfico o utilizar propiedades distintas de las de omisin. Es posible tambin establecer las propiedades en el momento de la creacin del objeto, como en el ejemplo siguiente que crea una figura con fondo blanco:
fig=figure('color','w')

VII.2.2 Propiedades por omisin Anteponiendo la palabra Default al nombre de un objeto y de una propiedad se puede acceder al valor por omisin de una propiedad, o para consultar su valor, o bien para modificarlo. Por ejemplo, DefaultLineColor representa el color por defecto de una lnea, y DefaultFigureColor representa el color de fondo por omisin de las ventanas. Cambiando un valor por omisin a un determinado nivel de la jerarqua de objetos se cambia ese valor para todos los objetos que estn por debajo y que se creen a partir de ese momento. Por ejemplo, el siguiente comando cambia el color de fondo de todas las ventanas (hijas de pantalla) que sean creadas a partir de ese momento:
set(0,'DefaultFigureColor','w')

VII.3 Creacin de objetos grficos


MATLAB permite desarrollar programas con el aspecto tpico de las aplicaciones de Windows En esta seccin se estudiar la forma de crear algunos de los controles ms utilizados. Para todos los controles, se utilizar la funcin uicontrol, que permite desarrollar dichos controles. La forma general del comando uicontrol es la siguiente:
id_control = uicontrol( id_parent,... 'Propiedad1',valor1,... 'Propiedad2',valor2,... otras propiedades 'callback','sentencias')

Las propiedades son las opciones del comando, que se explican en el apartado siguiente. stas tendrn comillas sencillas (') a su izquierda y derecha, e irn seguidas de los parmetros necesarios. En caso de que el conjunto de propiedades de un control exceda una lnea de cdigo, es posible continuar en la lnea siguiente, poniendo tres puntos seguidos ().

50

VII.3.1 Opciones del comando uicontrol El comando uicontrol permite definir los controles grficos de MATLAB descritos en la siguiente seccin. En esta seccin se explican las distintas propiedades de uicontrol.

Color del fondo objeto (BackGroundColor) Controla el color fondo del objeto. Por omisin este suele ser color gris claro, aunque puede tomar diferentes colores, los cuales van definidos entre comillas simples; por ejemplo ('green'). Cadena de invocacin (CallBack) Este comando especifica la accin que va a ejecutar MATLAB al actuar sobre el control. Puede ser una expresin, orden, serie de comandos , un script o una funcin M.

Control de Activado/Desactivado (Enable) Este comando permite desactiva un control, de tal forma que una accin ejecutada sobre el mismo no produzca ningn efecto. Los valores que toma son on y off.

Alineacin horizontal del ttulo (HorizontalAlignment) Esta opcin determina la posicin del ttulo del control en el mismo; los valores que acepta son: left, right o center.

Valor mximo (Max) Esta opcin determina el mximo valor que puede tomar un valor cuando se utilizan cajas de textos o botones de opcin. En caso de botones tipo on/off, que solamente admiten las dos posiciones de abierto y cerrado, esta variable corresponde al valor del mismo cuando est activado.

Valor mnimo (Min) Similar a la opcin anterior, pero para el valor mnimo.

Control del objeto padre (Parent)

51

Esta opcin especifica el id del objeto padre. Debe ir siempre en primer lugar.

Posicin del objeto (Position) En esta opcin se determina la posicin y el tamao del control dentro del objeto padre. Para ello se define un vector de cuatro elementos, cuyos valores siguen el siguiente orden: [posicin x, posicin y, ancho, alturo]. Aqu posicin x y posicin y son la distancia a la esquina inferior izquierda de la figura y ancho y alto las dimensiones del control.

Nombre del objeto (String) Esta opcin define el nombre que aparecer en el control. Cuando el control sea una opcin de men desplegable (popup menu), los nombres se sitan en orden dentro del string, separados por un carcter barra vertical (|).

Tipo de control (Style) Esta opcin puede tomar los siguientes valores: pushbutton, radiobutton, checkbox, slider, edit, popupmenu y text, segn el tipo de control que se desee.

Unidades (Units) Unidades de medida en las que se interpretar el comando position. Los valores que puede tomar Units son: pixels (puntos de pantalla), normalized (coordenadas de 0 a 1), inches (pulgadas), cent (centmetros), points (equivalente a 1/72 parte de una pulgada). La opcin por omisin es pixels.

Valor (Value) Permite utilizar el valor que tiene del control en un momento dado. Por ejemplo, un botn de chequeo (check button) puede tener dos tipos de valores, definidos por las variables Max y Min. Segn sea uno u otro el programa ejecutar una accin. La variable value permite controlar dicho valor.

Visible (Visible)

52

Puede tomar dos valores: on/off. Indica si el control es visible en la ventana o no. Este comando es similar al Enable, si bien ste adems de quedar inhabilitado el control adems desaparece de la pantalla.

VII.4 Men de interfaz con el usuario


El men de interfaz con el usuario es un men o grupo de mens que se encuentra en la parte superior de un pantalla de figura. El men se desenrolla hacia abajo cuando se hace clic en el y este muestra una serie de opciones. Es posible que cuando se seleccione una opcin, active otro men en otro nivel. Los mens de interfaz con el usuario se especifican con el comando uimenu, cuya sintaxis es la siguiente:
m1=uimenu (gcf, ... 'Label', 'Nombre del men 1',... 'Position', [numero de prioridad (entero)], ... 'BackGroundColor', [r,g,b], ... 'CallBack', 'cadena de invocacin') m1=uimenu (gcf, ... 'Label', 'Nombre del men 2',... 'Position', [numero de prioridad (entero)], ... 'BackGroundColor', [r,g,b], ... 'CallBack', 'cadena de invocacin') m1=uimenu (gcf, ... 'Label', 'Nombre del men 3',... 'Position', [numero de prioridad (entero)], ... 'BackGroundColor', [r,g,b], ... 'CallBack', 'cadena de invocacin')

A continuacin se muestra el cdigo de ejemplo guidm_1.m, el cual ilustra el uso de los mens.
close, clear figure(1) set(gcf,'Position',[100,300,300,220],... 'Color', [0.5, 0.5, 0.2], ... 'NumberTitle','off',... 'Name','GuiDm_1') x=0:0.1:10;, y=sin(x); p=plot(x,y);xlabel('x');ylabel('y=sin(x)'); stl = uimenu(gcf,... 'Label',' Line Style',...

'BackGroundColor',[0.8, 0.0, 0.8],...

53

'Position',2); clr = uimenu(gcf,... 'Label',' Line Color',...

'BackGroundColor',[0.8, 0.8, 0.8],... 'Position',1); lw = uimenu(gcf,... 'Label',' Line width',...

'BackgroundColor',[0.8, 0.8, 0.8],... 'Position',3); solid = uimenu(stl, ... 'Label', 'Solid',... 'CallBack','set(p,''LineStyle'',''-'')'); dotted = uimenu(stl, ... 'Label', 'Dotted',... 'CallBack','set(p,''LineStyle'','':'')'); yellow = uimenu(clr,... 'Label', 'Yellow',... 'BackgroundColor',[0.9, 0.9, 0.1],... 'CallBack','set(p,''Color'',''y'')'); green = uimenu(clr, ... 'Label','Green',... 'BackgroundColor',[0.1, 0.9, 0.1],... 'CallBack','set(p,''Color'',''g'')'); red = uimenu(clr,... 'Label', 'Red',... 'BackgroundColor',[0.9, 0.1 , 0.1],... 'CallBack','set(p,''Color'',''r'')'); solid = uimenu(lw, ... 'Label', '0.5',... 'CallBack','set(p,''LineWidth'',0.5)'); dotted = uimenu(lw, ... 'Label', '3.0',... 'CallBack','set(p,''LineWidth'',1.0)');

El siguiente ejemplo (guidm_2.m) muestra otro ejemplo del uso de los mens.
close, clear fg=figure(1); set(fg, 'Position',[100 100 350 350],...

54

'Color',[0.6, .4, .4],... 'NumberTitle','off',... 'Name','GuiDm_2') x=0:0.1:10;, y=sin(x); p=plot(x,y);xlabel('x');ylabel('y=sin(x)'); stl = uimenu(gcf,... 'Label','Select Equation',... 'BackgroundColor',[0.8, 0.8, 0.8]); F1 = uimenu(stl, ... 'Label', 'y=sin(x)',... 'CallBack',... 'plot(x,sin(x));xlabel(''x'');ylabel(''y=sin(x)'')'); F2 = uimenu(stl, ... 'Label', 'y=exp(-x)',... 'CallBack',... 'plot(x,exp(-x));xlabel(''x'');ylabel(''y=exp(-x)'')'); F3 = uimenu(stl, ... 'Label', 'y=cos(x^2)',... 'CallBack',... [ 'plot(x,cos(x.^2));',... 'xlabel(''x'');ylabel(''y=cos(x.^2)'')'... ]); F4 = uimenu(stl, ... 'Label', 'y=exp(-x.^2)',... 'CallBack',... [ 'plot(x,exp(-x.^2));',... 'xlabel(''x'');ylabel(''y=exp(-x.^2)'')'... ]);

VII.5 Controles de la interfaz grfica con el usuario


Los controles de la interfaz con el usuario en Matlab se especifican con el comando uicontrol. Estos controles son similares a los mens de la interfaz con el usuario, aunque los controles tienen ms opciones. La sintaxis de uicontrol es:
k=uicontrol('Style', 'especificacin del estilo',... 'String', 'texto a desplegar',...

55

'Value', [valor],... 'BackgroundColor', [r,g,b],... 'Max', [valor],... 'Minx', [valor],... 'Position',[posicin x, posicin y, ancho, alto],... 'Callback', 'cadena de invocacin')

donde especificacin de estilo puede ser una de las siguientes cadenas (opciones):
popup, push, radio, checkbox, slider, edit

(texto editable), text (texto esttico)

o frame. Las propiedades de uicontrol son similares a las de uimenu.

Texto esttico (text) El texto esttico puede exhibir smbolos, mensajes o incluso valores numricos en una GUI y puede colocarse en el lugar apropiado. Este control no tiene cadena de invocacin. A continuacin se muestra un ejemplo del uso del texto esttico.
close; clf h1=figure(1); set(h1,'Position',[300,300,400,100],... 'Color', [0.7, 0.9, 0.6],.... 'NumberTitle','off',... 'Name','GuiDm_3 Valor numrico en texto esttico') k1=uicontrol('Style','text',... 'String',num2str(pi),... 'Position',[ 20,10,140,30]);

El contenido de un texto esttico puede modificarse utilizando el comando set. Por ejemplo, teclee la siguiente lnea en la ventana de comando mientras tiene activo el ejemplo anterior: set(k1, 'String', 'Ahora modificamos el texto') El siguiente ejemplo muestra el uso de cadenas combinadas
close; clf h1=figure(1); set(h1,'Position',[300,300,400,100],... 'Color',[0, .3, .3], ... 'NumberTitle','off',... 'Name','GuiDm_4 Cadenas combinadas')

k1=uicontrol('Style','text',... 'String',['pi=',num2str(3.14159)],... 'Position',[ 20,10,140,30]);

56

Men desplegable (popup) Estos mens desplegables difieren de los mens de interfaz con el usuario en que pueden aparecer en cualquier punto del panel, mientras que los mens de interfaz con el usuario solo se encuentran en la parte superior de la ventana. A continuacin se presenta un ejemplo del men desplegable.
clf h1=figure(2); set(h1,'Position',[30,50,280,100], ... 'Color',[0,0.5, 0.5],'Name','GuiDm_5') j=uicontrol('Position',[ 0,60,250,30], ... 'Style','text',... 'String','Select from A, B, C, D or Close'); k=uicontrol('Style','Popup',... 'String','A|B|C|D|Close',... 'Position',[ 0,30,100,30], ... 'Callback', [ ... 'val = get(k,''Value'');',... ' if val == 1, fprintf(''A \n''),',...

'elseif val == 2, fprintf(''B \n''),',... 'elseif val == 3, fprintf(''C \n''),',... 'elseif val == 4, fprintf(''D \n''),',... 'elseif val == 5, close(h1),',... 'end' ... ]);

Botn (push) Los botones son pequeos objetos de la pantalla generalmente acompaados con texto. Al presionar el botn con el ratn, se producir una accin que ser ejecutada por Matlab. A continuacin se presenta un ejemplo de este control.
close;clf h1=figure(1); set(h1,'Position',[130,350,280,100], ... 'Color',[0.5,0.5, 0.5],... 'Name','GuiDm_8 Push Button',... 'NumberTitle','off'); j=uicontrol('Position',[0,60,250,30], ...

57

'Style','pushbutton',... 'String','Presione aqui para graficar sen(x)' ,... 'Callback',... [ 'h2=figure(2);x=0:0.1:10;plot(x,sin(x));,',... 'xlabel(''x''),ylabel(''y''),'... 'set(h2,''Position'',[130,310,280,200])' ]);

Casilla de verificacin (checkbox) Las casillas estn diseadas para realizar operaciones de encendido/apagado. En el siguiente ejemplo se grafica una funcin senoidal y se crea una casilla de verificacin pequea en la parte superior de la grfica. La casilla activa o desactiva la aparicin de los ejes. Las posiciones de encendido/apagado se registran en value que puede examinarse con
get(handle, Value). clear,close h1=figure(2); set(h1,'Position',[130,350,300,200], ... 'Color',[0,0.5, 0.5],'Name','GuiDm_9',... 'NumberTitle','off'); hold on x=0:0.1:10;plot(x,sin(x)) j=uicontrol('Position',[ 5,0,250,15], ... 'Style','checkbox',... 'Value',1,... 'String','Seleccione aqui activar/desactivar los ejes' ,... 'Callback',... [ ... 'if get(j,''Value'')==0, axis off; ',... 'elseif get(j,''Value'')==1, axis on, end' ... ]);

Botn de radio (radio) Cuando se usa un solo botn de radio, es igual que la casilla ve verificacin. Sin embargo, cuando se usan en grupo, estos son mutuamente exclusivos, es decir, si un botn de radio

58

esta encendido, los dems estarn apagados, mientras que las casillas de verificacin son independientes entre s.

Control deslizante (slider) Es un dispositivo que permite modificar un parmetro. El siguiente ejemplo sirve para demostrar el uso de estos controles; se demuestra su efecto de modificar los colores RGB modificando individualmente cada uno de sus componentes mediante una barra deslizante.
clear,close h6=figure(1); clf R=0.7;G=0.6;B=0.9; set(h6,'Position',[60, 150,380,380],... 'Name','GuiDm_10 Demostracin RGB',... 'NumberTitle','off',... 'Color',[ 0. 0.0 0.]); [x,y,z]=sphere(10); ah=axes( 'Position', [0.4 0.1, 0.55 0.50],... 'Box', 'on', ... 'Color',[R,G,B],... 'XColor',[0,0,0],'YColor',[0,0,0]); %============================= t1 = uicontrol(gcf,'Style','text', ... 'String',... 'Los colores RGB consisten de rojo, verde y azul. ',... 'HorizontalAlignment','Left',... 'Position',[30,360,320,20],... 'BackgroundColor',[0.8 0.8 0.8]); t2 = uicontrol(gcf,'Style','text', ... 'String',... 'Al mover el control deslizante, se cambia',... 'HorizontalAlignment','Left',... 'Position',[30,340,320,20],... 'BackgroundColor',[0.8 0.8 0.8]); t3 = uicontrol(gcf,'Style','text', ... 'String',... 'la intensidad del color y el resultado cambia ',... 'HorizontalAlignment','Left',... 'Position',[30,320,320,20],... 'BackgroundColor',[0.8 0.8 0.8]); t4 = uicontrol(gcf,'Style','text', ... 'String',... 'El color RGB resultante se observa en el cuadro. ',... 'HorizontalAlignment','Left',... 'Position',[30,300,320,20],... 'BackgroundColor',[0.8 0.8 0.8]); %=============================Slider control b1 = uicontrol(gcf,'Style','text', ... 'String','Intensidad de azul',... 'Position',[10,50,110,20],... 'BackgroundColor',[0.8,0.8,1]); b2 = uicontrol(gcf,'Style','text',...

59

'String','0............1',... 'Position',[10,30,110,20]); b3 = uicontrol(gcf,... 'Style','slider',... 'Min' ,0,'Max', 1, ... 'Position',[10,10,110,20], ... 'Value', B,... 'CallBack', ... 'B=get(b3,''Value'');set(ah,''Color'',[R,G,B])'); %=============================Slider for Green g1 = uicontrol(gcf,'Style','text', ... 'String','Intensidad de verde',... 'Position',[10,150,110,20],... 'BackgroundColor',[0.8,1,0.8]); g2 = uicontrol(gcf,'Style','text',... 'String','0............1',... 'Position',[10,130,110,20]); g3 = uicontrol(gcf,... 'Style','slider',... 'Min' ,0,'Max', 1, ... 'Position',[10,110,110,20], ... 'Value', G,... 'CallBack', ... 'G=get(g3,''Value'');set(ah,''Color'',[R,G,B])'); %=============================Slider for RED r1 = uicontrol(gcf,'Style','text', ... 'String','Intensidad de rojo',... 'Position',[10,250,110,20],'BackgroundColor',[1,0.8,0.8]); r2 = uicontrol(gcf,'Style','text',... 'String','0............1',... 'Position',[10,230,110,20]); r3 = uicontrol(gcf,... 'Style','slider',... 'Min' ,0,'Max',1, ... 'Position',[10,210,110,20], ... 'Value', R,... 'CallBack', ... 'R=get(r3,''Value'');set(ah,''Color'',[R,G,B])');

Texto editable (edit) El dispositivo de texto editable le permite al usuario introducir una cadena. Puede aceptar valores numricos en forma de vector o matriz como una cadena mediante el mismo dispositivo. La cadena de entrada puede convertirse a valores numricos mediante la instruccin str2num. A continuacin se presentan dos ejemplos de este control
cla,clf,close h1=figure(2); set(h1,'Position',[130,250,480,150], ... 'Color',[0,0.5, 0.5],... 'NumberTitle','off',... 'Name','GuiDm_11 Texto editable'); ed0 = uicontrol(gcf, 'Style','text', ...

60

'Position', [110,60, 260,40],... 'String',... ' Modifique la matriz y presione Enter al final.'); ed2 = uicontrol(gcf, 'Style','edit', ... 'Position', [110,20, 210,40],... 'String',' [1 3 5; 5 -2 1; 3 1 7]',... 'CallBack',['inp_txt=get(ed2,''String''),',... 'eigenvalues=eig(str2num(inp_txt))']);

El segundo ejemplo es:


close,clear h1=figure(2); set(h1,'Position',[130,250,480,210], ... 'Color',[0,0.5, 0.5],'Name','GuiDm_12 Resultados en Texto',... 'NumberTitle','off') axis('off'); hold on ed0 = uicontrol(gcf, 'Style','text', ... 'Position', [110,150, 260,40],... 'String',... ' Edite la matriz y presione Enter al finalizar.'); ed1 = uicontrol(gcf, 'Style','text', ... 'Position', [110,50, 260,40],... 'String',' Eigenvalores'); ed2 = uicontrol(gcf, 'Style','text', ... 'Position', [110,20, 260,40],... 'String',' '); ed3 = uicontrol(gcf, 'Style','edit', ... 'Position', [110,110, 210,40],... 'String',' [1 3 5; 5 -2 1; 3 1 7]',... 'CallBack',... ['axis off; inp_txt=get(ed3,''String'');',... 'eigen=eig(str2num(inp_txt));',... 'ans=[num2str(eigen(1)),'' '',',... 'num2str(eigen(2)),'' '',',... 'num2str(eigen(3))];',... 'set(ed2,''String'',ans) ']);

Uso de varios ejes para graficacin Generalmente es necesario desplegar varias grficas dentro de una interfaz. El comando axes abre un eje (grfica) en un punto especfico dentro de un panel. Primero se presenta un ejemplo donde se abre un solo eje de graficacin. Posteriormente se utilizan dos ejes.

close,h1=figure(1);clf set(h1,'Position',[100,200,350,300],... 'NumberTitle','off',... 'Name','GuiDm_13 Uso del comando axes') x=0:0.1:10; axes('Position',[0.1, 0.1, 0.5, 0.5]); plot(x,sin(x))

61

La ubicacin y tamao de los ejes se controla mediante un vector que sigue a Position. Los valores de este vector se utilizan igual que en uicontrol, excepto que los valores se encuentran en una escala normalizada. La ubicacin y el tamao se modifican cambiando los valores en los parmetros de posicin. La diferencia entre subplot y axes esta en que axes permite modificar libremente el tamao, ubicacin y permite abrir ejes en posiciones especficas, mientras que subplot no lo permite. Observe el ejemplo siguiente:
close,h1=figure(1);clf set(h1,'Position',[200,200,250,250],... 'NUmberTitle','off',... 'Name','GuiDm_14 Uso de mltiples ejes') x=0:0.1:10; axes('Position',[0.1, 0.3, 0.3, 0.3]); plot(x,sin(x)); axes('Position',[0.5, 0.1, 0.4, 0.4]); plot(x,exp(-x))

En el siguiente ejemplo, se utilizan subplot y axes.


close,h1=figure(1); set(h1,'Position',[300,100,350,350],... 'NUmberTitle','off',... 'Name','GuiDm_15 Usando subplot con axes') x=0:0.1:10; h1=axes('Position',[0.1, 0.3, 0.3, 0.3]); plot(x,sin(x)); h2=axes('Position',[0.55, 0.1, 0.4, 0.4]); plot(x,exp(-x)) % subplot(h1) hold on; plot(x,cos(x),':'); hold off % subplot(h2) hold on; plot(x,sin(x.*x),':'); hold off

VIII. 6 Elaboracin de GUIs mediante la herramienta GUIDE GUIDE (Graphical User Interfase Development Environment) es un juego de herramientas que se extiende por completo el soporte de MATLAB, diseadas para crear GUIs (Graphical User Interfaces) fcil y rpidamente dando auxiliando en el diseo y presentacion de los controles de la interfaz, reduciendo la labor al grado de seleccionar, tirar, arrastrar y personalizar propiedades.

62

Una vez que los controles estn en posicin se editan las funciones de llamada (Callback) de cada uno de ellos, escribiendo el cdigo de MATLAB que se ejecutar cuando el control sea utilizado. Siempre ser difcil disear GUIs, pero la no debera ser difcil y implementarlas. para entre GUIDE esta como diseado para ser menos tediosos el proceso de aplicacin de interfaz grafica de obviamente de GUIs, trabajar sus herramienta trazado poderosos

componentes esta el editor de propiedades (property editor), este se encuentra disponible cualquier momento que se est lidiando con los por controles separado se de MATLAB, el editor como de una propiedades puede concebir

herramienta de trazado, y asistente de codificacin (revisin de nombres y valores de propiedades). Cuando se fusiona con el panel de control, el editor de men, y herramienta de alineacin, resulta una combinacin que brinda inigualable control de los grficos en MATLAB. Utilizando GUIDE A la herramienta GUIDE se accede de varias maneras, la primera de ellas es tecleando guide en la ventana de comando.
>> guide

Otra manera de entrar a GUIDE es travs del File opcin New y por ultimo el GUI, (como se muestra en la figura).

63

Otra de ellas consiste en buscar en el Launch Pad la opcin referente a Matlab, hacer clic en ella, con lo que Matlab despliega las opciones que contiene, entre las que se encuentra la opcin Guide (GUI Builder), tal como se muestra en la figura.

La ventana principal de GUIDE es la siguiente:

64

Las Componentes principales de GUIDE son: Barra de Mens: Aqu se encuentran las funciones elementales

de Edicin de GUIs. Paleta de Componentes (component Palette): Aqu se encuentras los uicontrols estos componentes permite seleccionar los controles (objetos) que son los que se muestra en la figura.

La Barra de Herramienta: En ella se encuentran lo siguientes botones

Botn de ejecucin (Run button ): Al presionarse de crea la figura de la interfaz diseada en el Layout rea.

Alineacin de Componentes (Alignment tool): esta opcin permite alinear los componentes que se encuentra en el rea de trabajo (Layout rea) de manera personalizada.

65

Propiedades del Inspector (Property Inspector): con esta opcin se asignan y modifican las propiedades de cada objeto en forma personalizada.

Navegador de Objetos (Object Browser): Muestra todos los objetos que se encuentra en la figura (en forma de rbol) y a travs de Object Browser se puede seleccionar los objetos.

Editor de Mens (Men Editor): El redactor de Men crea mens de ventana y mens de contexto.

La Interfaz de Grafica de Usuario (GUI) se crea en una ventana de figura que consta de los siguientes componentes:

1. Men de interfaz con el usuario. 2. Dispositivo de control de interfaz con el usuario. 3. Ejes para exhibir graficas o imgenes

66

Puede personalizar el GUIDE en la opcin Preferences hallada en el men File, ahi posible desplegar los nombres de los componentes hallados en la paleta y la de presentar las herramientas.

FLUJO DE OPERACIN CON GUI


Con una GUI, el flujo de computo esta controlado por las acciones en la interfaz. Mientras que en un guin el flujo de comandos esta predeterminado, el flujo de operaciones con una GUI no lo est. Los comandos para crear una interfaz con el usuario se escribe en un guin, la interfaz imboca el guin que se ejecute, mientras la interfaz del usuario permanece en la pantalla aunque no se haya completado la ejecucin del guin.

En la figura 1 se muestra el concepto bsico de la operacin del software con una GUI. Cuando se interactua con un control, el programa registra el valor de esa opcin y

67

ejecuta los comandos prescritas en la cadena de invocacin. Los mens de interfaz con el usuario, los botones, los mens desplegables, los controladores deslizantes y el texto editable son dispositivos que controlan las operaciones del software. Al completarse la ejecucin de las instrucciones de la cadena de invocacin, el control vuelve a la interfaz para que puedan elegirse otra opcin del men. Este ciclo se repite hasta que se cierra la GUI.

El control guarda un string que describe la accion a realizar cuando se invoca puede consistir en un solo comando de MATLAB o una secuencia de comandos, o en una llamada a una funcin. Es recomendable utilizar llamadas a funciones, sobre todo cuando se requieren de mas de unos cuantos comandos en la invocacin.

DIAGRAMA 1 Flujo de opciones de GUI

68

Basicamente solo se necesita entender cinco comandos para poder describir una GUI: uimenu, uicontrol, get, set y axes. No obstante, lo que hace relativamente complicadas a estos comandos es el gran numero de formas de uso que tiente. Es imposible describir todos lo tipo de situaciones, pues requiere demasiado espacio y seria muy laborioso leerlo. Por tanto, solo se trataremos de explicar los elementos bsicos de una GUI a travs de ejemplos. Los lectores que deseen informacin mas detallada sobre los comandos consultar MATLAB: building a graphical user interface y al final del manual encontraran un apendice que describe las propiedades de los controles.

MENU DE INTERFAZ CON EL USUARIO El men de interfaz con el usuario es un men o un grupo de mens que se encuentran en la parte superior de una ventana de la figura. El men se desarrolla de arriba hacia abajo cuando se hace clic con el ratn y se muestra una lista de opciones siguiente figura. Cuando se elige una opcin de la lista, es posible que se desenrolle otro nivel de mens (si el men se diseo para ello).

Los menus de interfaz con el usuario se especifican con siguiente:


m1 = uimenu (gcf, ... Label, cadena de rtulos 1, ... Position [nmeros de prioridad (entero)], ... Backgroundcolor [r, g, b], ... CallBack cadena de invocacin)

uimenu,

cuya sintaxis es la

69

m2 = uimenu (gcf, ... Label, cadena de rtulos 2, ... Position [nmeros de prioridad (entero)], ... Backgroundcolor [r, g, b], ... CallBack cadena de invocacin) m3 = uimenu (gcf, ... Label, cadena de rtulos 1, ... Position [nmeros de prioridad (entero)], ... Backgroundcolor [r, g, b], ... CallBack cadena de invocacin)

Aqu se esta suponiendo que hay tres mens en una ventana de figura. En los comandos, m1 m2, ... son mangos (get) de los mens que a menudo son necesarios en CallBack y otros comandos. Los argumentos que siguen a gcf son las propiedades del men y tiene el siguiente significado:
Label, cadena de rtulos especifica el

a)

rotulo que aparecer en el men.

b) Position, k

determina la posicin secuencial del rotulo en el men, donde k es un

numero entero que indica en orden de prioridad.


c) Backgroundcolor, [r, g, b], especificas

el color de segundo plano del men.

d) CallBack cadena de invocacin especifica los comandos que se ejecutan cuando se selecciona el rotulo. En la sintaxis anterior es posible omitir las lneas correspondientes a positicion y
backgroundcolor

si son aceptable los valores por omisin. Adems, callBack no es

necesario cuando el men va seguido de una lista de opciones que se abre cuando se hace clic en el men.

Tambin podemos especificar otras opciones; sin embargo, la mejor forma de aprenderlas es ejecutando el comando get (mango) despus de ejecutarse el comando
uimenu,

donde mango deber ser como m1 o m2 de la explicacin de la sintaxis anterior. El

70

comando get (mango) devuelve las propiedades actuales del men, que en su mayora se establecen por omisin pero que pueden modificarse en los argumentos del enunciado del comando uimenu. Si una opcin del men tiene subopciones, estas tambin se especifican como uimenu. Si consideramos la lista de opciones para el primer men cuyo mango es m1, la sintaxis con tres opciones seria la siguiente:
m1sA = uimenu (m1, ... Label, opcion A, ... CallBack cadena de invocacin) m1sB = uimenu (m1, ... Label, opcion B, ... CallBack cadena de invocacin) m1sC = uimenu (m1, ... Label, opcion C, ... CallBack cadena de invocacin)

Las tres opciones pertenecen al primer men con mango m1. se omitieron as propiedades de Position y BackgroundColor, pero pueden incluirse si se desea.

La propiedad CallBack es importante aqu si uicontrol es para el nivel terminal del men. La cadena de invocacin es una cadena que consiste en un comando, un conjunto de ordenes o una llamada de funcin. En esta cadena se especifican todas las tareas de computo que deben ejecutarse al elegirse la opcin. Las instrucciones pueden ser un solo comando o varios; sin embargo, a fin de simplificar la programacin es recomendable no escribir mas de unos cuantos comandos o ms de una llamada de funcin en la cadena de invocacin. Todos los detalles de los clculos se pueden escribir en un archivo M.

71

Nota: el archivo M puede o no ser de funcin. En cualquier caso, cadena de invocacin es remplazado por nombre del archivo M la diferencia entre utilizar un archivo M de funcin y uno no de funcin es la siguiente. Si se emplea un archivo M de funcin, es necesario proporcionar como argumentos las variables necesarias para el archivo M de funcin, pues de lo contrario este no podra ver las variables del archivo M que invoca. Por otro lado, si se utiliza un archivo M no de funcin, todas las variables del archivo M invocado estarn visibles.

CONTROLES DE LA INTERFAZ DE GUIDE. Los controles de la interfaz con el usuario en MATLAB se especifican con la orden uicontrol. Estos controles tienen mucho en comn con los mens de la interfaz con el usuario, pero los primeros tienen mucho estilos. La sintaxis de uicontrol es

k = uicontrol (Style, especificacoin de estilo, String, cadena para exhibir, Value, [valor], BackgroundColor, [r,g,b], Max [valor], Min [valor], Position, [izq, base, ancho, alto], CallBack, cadena de invocacion)

donde especificacin de estilo es una de las siguientes cadenas:

popup push radio checkbox slider edit

(texto editable)

text (texto esttico) frame

72

Las propiedades de iucontrol son similares a las de uimenu. las propiedades que aparecen aqu por primera vez son:

a) Value, valor: especifica el valor por omisin de ajuste. En el caso de interruptores de encendido/apagado, valor es 0 o 1. En el caso de un control deslizante
(slider),

puede ser cualquier valor entre el mnimo y el mximo.

b) Min, Valor: establece el valor mnimo. Su significado difiere dependiendo del estilo. c) Max, Valor: establece el valor mximo. Su significado difiere dependiendo del estilo.

Hay muchas ms propiedades que pueden incluirse en los comandos de uicontrol, tal como sucede con las propiedades de uimenu, aunque al programar conviene minimizar el nmero de propiedades a fin de simplificar el guin. Si se desea saber mas acerca de las propiedades adicionales, investigue utilizando el comando get.

Texto esttico. Un static text puede exhibir smbolos, mensajes o incluso valores numricos de una GUI, y puede colocarse en lugar deseado. El texto esttico no tiene cadenas de invocacin. A continuacin mostramos un ejemplo de texto esttico.

k1 = uicontrol (Style, text, String, cadena para exhibir, Position, [20, 50, 140, 30])

El contenido de un texto exhibido puede modificarse si es necesario. Esto se hace con el comando set. Por ejemplo, ejecute el comando que sigue desde la ventana de comandos mientras est vigente el ejemplo anterior de orden uicontrol:

set (k1, string,

Ahora aparece un texto modificado.)

73

Men desplegable. Los pop-up mens difieren de los mens de interfaz con el usuario en que pueden aparecer en cualquier punto de la ventana de figura, mientras que los mens de interfaz con el usuario solo se localizan en la parte superior.

Los Push button generan una accin cuando das click con el puntero del ratn sobre ellos. Cuando usted da click en un push button, aparece presionado; Cuando sueltas el botn del ratn, el botn aparece levantado; y su rutina de llamada se ejecuta.

Casilla de verificacin. Las casillas de verificacin estn diseadas para realizar operaciones de encendido/apagado. La casilla activa o desactiva la aparicin de los ejes. Las posiciones de encendido/apagado se registran en Value que puede examinarse con get(handle, value). Los comandos axis on y axis off se escriben en la cadena de invocacin.

Botn de radio. Cuando solo se usa un botn de radio, no existe diferencia funcional alguna con respecto a una casilla de verificacin. Por otro lado, los botones de radio en grupo son mutuamente exclusivos (es decir, si un botn esta encendido, todos los dems botones se apagan), mientras que las casillas de verificacin son independientes entre s. Sin embargo, esta caractersticas exclusiva de los botones de radio slo puede implementarse mediante la programacin del usuario en la cadena de invocacin.

74

Barra deslizadora. Los sliders aceptan datos de entrada numricos con un rango especifico. Los usuarios mueven la barra dejando presionado el botn del mouse y arrastrndola, Dando click en el canal, en la flecha. La posicin de la barra indica un valor numerico.

Texto editable. El dispositivo de texto editable permite al usuario teclear una cadena de entrada. Se pueden escribir varios valores numricos en forma de vector o matriz como cadena mediante el mismo dispositivo; esta cadena se convertir posteriormente en valores numricos con el comando str2num.

Un ejemplo de uicontrol para texto editable es:

ed1 = uicontrol (gcf, Style, edit, Position, [10, 260, 110, 20], CallBack, inp_txt = get (ed1, string))

Las palabras clave en el comando anterior son Style, edit y get (mango,
string)

que capturan el texto introducido.

Marcos. El estilo marcos puede servir para agrupar dispositivos como lo botones de radio o las casillas de verificacin.

Botn de palanca. El toggle button genera una accin que indica un estado binario (on o off). Cuando das click en un toggle button , aparece presionado y permanece as hasta que sueltes el boton de el mouse, y en ese momento ejecuta la llamada. Un click del mouse subsecuente regresa al toggle button a su estado original y vuelve a ejecutar la rutina de llamada.

75

Cajas de lista. El componente List Box muestra una lista de artculos y permite a usuarios seleccionar unos o ms artculos.

EJES MLTIPLES Al crear una interfaz con el usuario, a menudo hay necesidad de trazar una o ms grficas dentro de la interfaz. Podemos usar el comando subplot para este fin, pero el comando
axes

es ms flexible y ofrece opciones verstiles a los programadores.

El comando axes abre un eje en un punto especificado dentro de una ventana de figura. Aunque podemos abrir varios ejes en una ventana de figura con axes, primero consideramos nicamente uno. Property Inspector El inspector de propiedades esta compuesta de la siguiente forma como se muesta en la figura.

Cada uno de los controles tienen propiedades particulares, esta se pueden consultar en el apendice. 76

Practicando con GUIDE

Una vez ya conocidas las herramientas de GUIDE es conveniente que empecemos a usarlas. Como primera prctica utilizaremos todos los componentes, los haremos interactuar unos con los otros de tal manera que al usar un control, se produzca un efecto en los otros.

Practica 1. Usando Todos los Controles.

1.- Emboquemos la herramienta GUIDE. Anteriormente se mostraron las maneras de hacerlo, o bien solo escriba guide en la lnea de comandos.

2.- Una vez en la herramienta lo primero que se hace es tirar en la rea de trabajo dos controles, un Edit Text y Uno Estatic Text.

3.- Haga doble clic sobre el control Edit Text y Aparecera el Propety Inspector. En el modifique el atributo de color de fondo a Blanco. BackgroudColor puede modificarlo de dos maneras una es presionando y la otra es extendiendo las opciones interiores de la

propiedad presionando en el signo de +, y colocando 1s en red, green y blue.

4.- Cambie el Texto por defecto del control Edit Text por: Escriba Aqu.

Propiedad: String

Nuevo Valor: Escriba Aqu

5.- Haga mas ancho el control.

Coloque el mouse sobre uno de los rectngulos del control y estirelo. O Tambin: Propiedad: Position ! Width Nuevo Valor: 20.

6.- Modifique es texto del control Static Text, A <<Mensaje>> y estirelo.

77

Propiedad: String

Nuevo Valor: <<Mensaje>>

Propiedad: Position ! Width Nuevo Valor: 20.

7.- Ejecute su GUI. Presione y como no se ha grabado la interfaz, aparecer un dialogo avisndole que no

lo ha gravado, gravelo y entonces se ejecutara la GUI.

Contemple su interfaz, deber lucir similar a la siguiente figura y le recomendamos cerrar la figura antes de hacer alguna modificacin en la figura o en el archivo-M.

8.- Ahora Crearemos una funcin que al presionar Enter o una vez ya activo el control y presionemos fuera de el, se llame. Este evento invocar a la funcin Callback. Coloque el mouse sobre el control, presione el botn derecho, Expanda View Callbacks y escoja Callback. Entonces aparecer la ventana de edicin de archivos-M.

Estar ya colocado en la lnea de la funcin correspondiente al control. Puede verificar el nombre:

function varargout = edit1_Callback(h, eventdata, handles, varargin)

la sintaxis para nombrar las funciones es la siguiente:

function <variable salida> = Nombre del control_Funcion llamada(<manejador del objeto que llama>, <datos evento>, <manejador>, <variable entrada>)

78

Escriba el siguiente cdigo:

msg= get(h,'string') set(handles.text1,'string',msg)

9.- Ejecute el Programa y Escriba en el Edit Text: Hola Mundo y presione enter. Deber tener el siguiente resultado.

10.- Tire un Control Frame en la rea de trabajo. Acomode los objetos de tal manera que luzcan de la siguiente manera.

Nota: Tendr un inconveniente, el Frame tapara los objetos anteriores, resuelva el problema presionando el botn derecho del mouse sobre el frame y seleccione Send to Back. 11.- Agregue al rea de Trabajo un Frame, un Slider y un edit box. En el Edit Box Cambie el Color de Fondo a Blanco.

79

Ordnelos de la Siguiente manera.

Nota: Para Hacer que luzcan ordenadamente los objetos le recomendamos alinearlos, a travs de la herramienta Align Objects configuracin que se muestra: , seleccione los objetos y seleccione la

12.- Agreguemos cdigo que al deslizar el slider, el valor de este se presente en el edit box, y valor del edit box se represente en el slider al presionar sobre el edit box el botton derecho.

Valla a la funcin de llamado CallBack del slider y escriba el siguiente cdigo: value = get(h,'value'); set(handles.edit2,'string',value);

80

Vaya a la function de llamado ButtonDownFcn del edit text y y escriba el siguiente cdigo:

set(handles.slider1,'value',str2num(get(h,'string')))

13.- Ejecute la Figura. Y Realice pruebas con ella.

14.- Supongamos que se requiere que el slider maneje un valor de 0 a 1000 y al momento de presionar las flechas de los costados el valor vari una unidad y al presionar entre el bloque deslizante y una flecha de los costados el valor vari 10 unidades. Para lograr estos efectos se requiere modificar las siguientes propiedades:

Propiedad: Max

Nuevo Valor: 1000 Nuevo Valor: 0.001 Nuevo Valor: 0.01

Propiedad: SliderStep ! x Propiedad: SliderStep ! y

X indica el % de cambio al presionar las flechas. Y indica el % de cambio al presionar entre el bloque y la flecha de un costado.

Nota: Los valores en SliderStep son valores que se calculan a partir del porcentaje de cambio, como en x el cambio es de una milsima se indico el valor 0.001 y el cambio de y es de un centsima se indico el valor de 0.01.

15.- Agregue un Control Push Botton, y modifique la siguiente propiedad.

81

Propiedad: String

Nuevo Valor: Lema Nuevo Valor: 15

Propiedad: Position ! Width

16.- Escriba en la funcin de llamado Callback del Push Botton, el siguiente cdigo.

Warndlg ('Por la Superacin Plena del Hombre..!','Lema de la UABC')

17.- Ejecute la GUI. Y Presione el botn.

Y se mostrara un dialogo de aviso con el lema de la UABC.

18.- Introduzca en la rea de trabajo un Frame y un Toggle Button, modifique los siguientes atributos de los controles: Control: togglebutton1 Propiedad: String Nuevo Valor: Habilitar Boton Nuevo Valor: 20 Propiedad: Position ! Width

Control: pushbutton1 Propiedad: Enable Nuevo Valor: off

Ordene los controles para que luzcan as:

82

19.- Escriba el siguiente cdigo en la funcin Callback del control togglebutton1.

if get(h,'value') == 1 set(handles.pushbutton1,'enable','on') else set(handles.pushbutton1,'enable','off') end

El objetivo de este cdigo es habilitar o deshabilitar el control pushbutton1 dependiendo del estado de togglebutton1.

20.- Ejecute la figura. Y verifique que funcione.

21.- Agregue un Checkbox y un frame, y programemos el checkbox para cuando este marcado pinte el color de fondo. Modifique las propiedades del checkbox Propiedad: String Nuevo Valor: Verde el Fondo Nuevo Valor: 20 Propiedad: Position ! Width

Entonces ordenemos a los controles para que luzcan de esta manera:

83

22.- Escribamos el siguiente cdigo en la funcin de llamado Callback del control Checkbox1:

if get(h,'value') == 1 set(h,'Backgroundcolor','green') set(handles.frame4,'Backgroundcolor','green') else set(h,'Backgroundcolor','factory') set(handles.frame4,'Backgroundcolor','factory') end

23.- Ejecute la figura. Y verifique que funcione.

24.- Ahora utilizaremos el control Popup Menu, Inserte un control Popup, Static Text y un frame. Cambie los atributos de los siguientes objetos:

Control: text2 Propiedad: String Nuevo Valor: Color del Fondo de la Pantalla * Nuevo Valor: 20 84 Propiedad: Position ! Width

Propiedad: BackgroundColor ! red, green, blue

Nuevo Valor: 1, 1, 1 del Property Inspector.

*Escriba este valor en dos lineas con ayuda del editor de String

Control: popupmenu1 Propiedad: String Nuevo Valor:

Amarrillo|Morado|Cielo|Rojo|Verde|Azul|Blanco|Negro

Ordene los controles para que luzcan de esta manera:

25.- En el Callback del Popup men escriba lo siguiente: color = {'y';'m';'c';'r';'g';'b';'w';'k'}; whitebg(char(color(get(h,'value'))))

26.- Ejecute la figura. Y verifique que funcione.

85

27.- Har una lista de nmeros selecionables a travs de 3 Radios Buttons, donde cada Radio desplegara un conteo diferente el Listbox.

Inserte en el rea de trabajo un Frame, un Listbox, un Static Text y 3 Radio Button. Modifique los siguientes atributos:

Control: text3 Propiedad: String Nuevo Valor: Contando..

Control: radiobutton1 Propiedad: String Propiedad: Value Nuevo Valor: 1 al 10 Nuevo Valor: 1

Control: radiobutton2 Propiedad: String Nuevo Valor: 100 al 200

Control: radiobutton3 Propiedad: String Nuevo Valor: 5 en 5 al 50

Ordene los controles para que luzcan de la siguiente manera. 86

28.- Es necesario considerar que al utilizar los radio botton en MatLab uno debe actualizar en cdigo el estado de esto, esto significa que al momento de dispararse el evento callback de un radio button, el programador debe actualizar los valores de todos los otros que conciernen al radio button presionado.

Por lo tanto ser necesario agregar el siguiente cdigo a las funciones callback del los tres radio botton.

Control: radiobutton1 Funcin: Callback

serie = 1:1:10; set(handles.listbox1,'string',serie) set(handles.radiobutton1,'value',1) set(handles.radiobutton2,'value',0) set(handles.radiobutton3,'value',0)

Control: radiobutton2 Funcin: Callback

serie = 100:1:200; set(handles.listbox1,'string',serie)

87

set(handles.radiobutton1,'value',0) set(handles.radiobutton2,'value',1) set(handles.radiobutton3,'value',0)

Control: radiobutton3 Funcin: Callback

serie = 0:5:50; set(handles.listbox1,'string',serie) set(handles.radiobutton1,'value',0) set(handles.radiobutton2,'value',0) set(handles.radiobutton3,'value',1)

29.- Ejecute la figura. Y verifique que funcione.

30.- Notara que cuando empieza la GUI no tiene datos en el listbox, aunque tiene seleccionado por default el radio button 1. Para dar este efecto ser necesario agregar cdigo a la funcin de llamado CreateFcn del ListBox de esta manera lo inicializaremos.

serie = 1:1:10; set(h,'string',serie)

30.- Ejecute la figura. Y en esta ocasin si tendr datos iniciales

88

31.- Implementaremos mens para la interfaz a travs de Men Editor

. Llammoslo

presionando el icono en la barra de herramientas. Una vez abierto crearemos un men llamada Archivo, los mens principales se crean presionando el boton con . Con las flechas movemos la posicin de los mens y los submens . Las

propiedades de los UIMenu son Label que es el mensaje a mostrar, Tag la etiqueta de identificacin, el primer check box coloca un separador en la parte superior de men, el segundo marca el men con una palomita, y el edit box de Callback va el nombre de la funcin.

Creer el siguiente rbol de mens con su respectivo efecto

89

32.- Men Editor no da soporte creando la funcin Callback en el archivo-M, por lo tanto tendremos que crearlo por nosotros mismos. Cuando Cerramos y Volvemos a abrir el Men Editor el pondr automticamente el nombre de las funcin en el edit box de callback ya que las dejamos con su valor por default <automatic>. Busque el nombre del control de UIMENU referente al men de Salir. Y escriba el siguiente cdigo:

delete(gcf)

33.- Compruebe que se cierra la figura.

34.- Agregue las siguientes instrucciones de una lnea en los Callbacks de los mens correspondientes:

Men: Copiar al portapapeles Callback: print dbitmap

Men: Archivo TIF Callback: print temp.tif ; msgbox('Se Gravo en el Archivo temp.tif') 90

31.- Por Ultimo Agregaremos un mensaje de despedida, que ser desplegado al momento de cerrar la figura. Esto se lograra a travs de la funcin de llamado DeleteFcn del objeto figura, se llega a el dando clic derecho sobre el rea de trabajo.

En esa funcin escriba: msgbox('Buena Suerte..','Despedida','help')

26.- Ejecute la figura. Y Compruebe el Mensaje de Despedida.

91

Practica 2. Usando los ejes.

1.- Primero Insertaremos todos los controles que utilizaremos: 1 frame, 1 static text, 2 radio botton, 2 axes, 3 push botton. Modifique las propiedades de los controles con los siguientes datos.

Control: radiobutton1 Propiedad: String Propiedad: Value Nuevo Valor: Plano Izquierdo Nuevo Valor: 1

Propiedad: Position ! Width Nuevo Valor: 21.

Control: radiobutton2 Propiedad: String Nuevo Valor: Plano Derecho Propiedad: Position ! Width Nuevo Valor: 21.

Control: text1 Propiedad: String Nuevo Valor: Escoja plano destino Propiedad: Position ! Width Nuevo Valor: 22.

Control: pushbutton1 Propiedad: String Nuevo Valor: Lineal Propiedad: Position ! Width Nuevo Valor: 24.

92

Control: pushbutton2 Propiedad: String Nuevo Valor: Espacial Propiedad: Position ! Width Nuevo Valor: 24.

Control: pushbutton1 Propiedad: String Nuevo Valor: Polar Propiedad: Position ! Width Nuevo Valor: 24.

Ordene los controles como se muestra

93

2.- Escriba el siguiente cdigo en los callback de los controles:

Control: radiobutton1 axes(handles.axes1) %con esto selecciona el eje a utilizar. set(h,'value',1); set(handles.radiobutton2,'value',0);

Control: radiobutton2 axes(handles.axes2) set(h,'value',1); set(handles.radiobutton1,'value',0);

Control: pushbutton1 newplot % Con esta line reinicializa el axes x = 0:pi/100:2*pi; y = sin(x); 94

y2 = sin(x-.25); y3 = sin(x-.5); plot(x,y,x,y2,x,y3) legend('sin(x)','sin(x-.25)','sin(x-.5)') xlabel('x = 0:2\pi') ylabel('Seno de x') title('Graficando Funciones Senoidales','FontSize',12)

Control: pushbutton2 newplot t = 0:pi/50:10*pi; plot3(sin(t),cos(t),t) axis square; grid on

Control: pushbutton3 newplot t = 0:.01:2*pi; polar(t,sin(2*t).*cos(2*t),'--r')

3.- Ejecute y pruebe la GUI.

95

Nota: Los axes se manipulan de igual manera que en los archivos-m, solo indique que eje es el destino de sus comandos antes.

96

Bibliografa y Referencias

[1] J. Garca Lpez, Manual de simulaciones

usando la plataforma de simulacin

MATLAB (manual que forma parte del Mdulo para desarrollo de prcticas de Procesamiento Digital de Seales, proyecto de investigacin del CITEDI-IPN), CITEDIIPN, Departamento de Posgrado, 1999-2000.

[2] J. Garca Lpez, Procesamiento Digital de Seales, (libro en proceso de publicacin por el Fondo de Cultura Econmica, Coleccin Ciencias de la Computacin), CITEDI-IPN, Departamento de Posgrado, 1999.

[3] The MathWorks Inc., Getting Started with MATLAB Version 5.x

[4] The MathWorks Inc., Using MATLAB Version 5.x

[5] The MathWorks Inc., Using MATLAB Graphics Version 5.x

[6] The MathWorks Inc., Manuales de las siguientes herramientas (toolboxes): Control, Fuzzy Logic, Signal Processing, Data Acquisition, Building GUIs in Matlab.

[7] Escuela Superior de Ingenieros Industriales Universidad de Navarra, Aprenda Matlab.

[8] Nakamura, Shoichiro, Anlisis numrico y visualizacin grfica con Matlab, Pearson Educacin

97

APENDICE.

UICONTROLS BackgroundColor El color usado para rellenar el rectngulo de unicontrol. Especfica un color usando un vector de tres elementos RGB(rojo, verde y azul) o uno de los nombres ya predefinidos en Matlab. El color por "default" es determinado por la configuracin del sistema

BusyAction Interrupcin de la rutina de llamada(callback). Si una es ejecutada y el usuario activa un evento en un objeto para el cual una llamada esta definida, esa llamada trata de interrumpir la primera llamada. La primera llamada puede ser interrumpida solamente por uno de los siguientes comandos: drawnow, figure, getframe, pause o waitfor; si la llamado no contiene ninguno de estos comandos no puede ser interrumpida. Si la propiedad Interruptible de el objeto que se esta ejecutando la llamada esta desactivada (off), la llamada no puede ser interrumpida (exepto por algunas llamadas). La propiedad BusyAction del objeto que su llamada esta esperando para ejecutarse determina lo que le pasa a la llamada: Si el valor es queue, la llamada es agregada al evento queue y se ejecuta despus de que la primera llamada termina de ejecutarse. 1 Si el valor es Cancel, el evento es descartado y la llamada no se ejecuta. Nota: Si la llamada interrumpida es una llamada de DeleteFcn o CreateFcn o una de una figura de CloseRequest or ResizeFcn, se interrumpe y ejecuta sin importar el valor de la propiedad Interrumpible del objeto

ButtonDownFcn Una rutina de llamada que se ejecuta cuando presionas un botn del mouse mientras el cursor esta en un unicontrol. Cuando la propiedad enable del unicontrol esta desactivada, el

98

ButtonDownFcn se ejecuta cuando haces click

en el unicontrol. Esto es til para

implementar acciones para modificar interactivamente las propiedades de control del objeto, como el tamao y la posicin. Esta rutina se define como una cadena(string) que es una expresin valida en Matlab o el nombre de un archivo M (M-file). La expresin se ejecuta en el espacio de trabajo de Matlab. La propiedad de llamada define la rutina de llamada que se ejecuta cuando das click en el botn Callback Controla la accin. Una rutina que se ejecuta cuando se activa un objeto de la clase uicontrol. Define esta rutina como una cadena. La expresin se ejecuta en el espacio de trabajo de Matlab. Para ejecutarla rutina para un control de texto editable, escribe el texto deseado y despus sigue uno de los siguientes pasos: -Mueve la seleccin del objeto (da click en cualquier otra parte) -Para un texto editable de una sola lnea, presiona Return -Para una caja de texto (text box), presiona Ctrl-Return. Esta rutina definida para los componentes frame y ststic text no se ejecuta por que ninguna accin esta asociada con estos objetos. Cdata Imagen de color verdadero mostrada en un control. Una matriz tridimensional de valores RGB que definen una imagen de color verdadero que es mostrada ya sea en un push button o un toggle button. Cada valor debe tener un rango entre cero y uno. CreateFcn Rutina de llamada ejecutada cuando se crea un objeto. Esta propiedad define una rutina de llamada que es ejecutada cuando Matlab crea un objeto de la clase uicontrol. Se debe definir esta propiedad como un valor por default para los uicontrols. DeleteFcn Una rutina de llamada que se ejecuta cuando borras un objeto uicontrol. Matlab ejecuta la rutina antes de destruir las propiedades del objeto, as sus valores estn disponibles para la rutina de llamada.

99

Enable Activa o desactiva el uicontrol. Esta propiedad controla como los uicontrols responden a un click del mouse, incluyendo que rutina de llamada se ejecuta.

on - El uicontrol es oreracional inactive - no es operacional pero se ve como si estubiera activado off - No es operacional y su etiqueta se vuelve gris Cuando se da click izquierdo a un objeto uicontrol que tiene su propiedad enable activada (en on), Matlab ejecuta estas en este orden: - Asigna la propiedad de la figura SelectionType - Ejecuta la rutina de llamada de el control. - No asigna la propiedad de la figura CurrentPoint y tampoco ejecuta ni la propiedad de control ButtonDownFcn ni la rutina de llamada de la figura WindowButtonDownFcn Cuando se da click izquierdo en un uicontrol en el cual su propiedad Enable esta inactiva, o cuando das click derecho en uno en el que Enable tiene cualquier valor, Matlab ejecuta estas acciones in este orden: - Asigna la propiedad de la figura SelectionType. - Asigna la propiedad de la figura CurrentPoint. - Ejecuta la rutina de llamada WindowButtonDownFcn de la figura. - En un click derecho, si el uicontrol esta asociado con un context menu, registra el context menu - Ejecuta la llamada ButtonDownFcn del control - Ejecuta la llamada del elemento seleccionado del context menu - No ejecuta la rutina de llamada del control Poniendo esta propiedad inactiva te capacita para implementar arrastre o cambio de

tamao de objetos usando la rutina de llamada ButtonDownFcn Extent Tamao de un caracter cadena uicontrol. Un vector de cuatro elementos que define el tamao y la posicion de un caracter de tipo cadena usado para etiquetar el uicontrol. Tiene la forma: [0, 0, width,height] 100

Los dos primeros elementos siempre son cero. width (ancho) y height (alto) son las dimenciones del rectngulo. Todas las medidas son unidades especificadas por la propiedad Units. Ya que la propiedad Extent esta definida en las mismas unidades que el uicontrol mismo, puedes usar esta propiedad para determinar el tamao adecuado del ancho del uicontrol con respecto a su etiqueta. Haciendo lo siguiente: - Definiendo la propiedad String y seleccionando la fuente usando las propiedades relevantes. - Tomando el valor de la propiedad Extend - Definiendo width y height de la propiedad Position (posicion) propiamente a ser de alguna manera mas grandes que width y height de Extend. FontAngle Inclinacion de un Caracter. Poniendo esta propiedad en Italic (italica) o oblique (oblicua) selecciona una version inclinada de la fuente, cuando esta disponible en tu sistema.

FontName El nombre de la fuente que mostrara la cadena. Para mostrar e imprimir correctamente, debe ser un tipo de fuente que tu sistema soporte. Para usar un ancho ajustado que se vea bien en cualquier exterior (y que se muestre correctamente en Japon, donde usan caracteres "multibyte"), Pon al FontName la cadena FixedWidth (esta cadena es sencible a la mayusculas): Set ( uicontrol_handle, 'FontName', 'FixedWidth' )

FontSize Tamao de la fuente. Un numero que especifica el tamao de la fuente que va a ser mostrado en la cadena, in unidades determinadas por la propiedad FontUnits. El tamao por default es dependiente del sistema.

101

FontUnits Unidades del tamao de la fuente. Esta propiedad determina las unidades usadas por la propiedad FontSize.Las unidades normalizadas interpretan el FontSize como una fraccion de la altura de el uicontrol. Cuando tu cambias el tamao del uicontrol, Matlab modifica la pantalla FontSize. pixels (pixeles), inches (pulgadas), centimeters (centimetros) y points (puntos) son unidades absolutas (1 punto = 1/72 pulgada). FontWeight Peso de un caracter. Poniendo esta propiedad en Bold hace que Matlab use una version "negrita" de la fuente, cuando esta disponible en tu sistema.

ForegroundColor Color de texto. Esta propiedad determina el color de el texto definido por la propiedad String. Especifica un color usando un vector de tres elementos RGB o un nombre predefinido en Matlab.

HandleVisibility Controla el acceso al manejador (handle) de un objeto por usuarios de la linea de comando y GUI's. Esta propiedad determina cuando un manejador de un objeto es visible en la lista de los objetos hijos de su clase papa.

HandleVisibility es util para prevenir usuarios de la linea de comando de accidentalmente borrar o dibujar en una figura que contiene solo dispositivos de interfase de usuarios.

Los identificadores son siempre visibles cuando HandleVisibilty esta activada (en on). Asignando HandleVisibility a una llamada hace que el manejador sea visible para rutinas de llamada o funciones invocadas po rutinas de llamada, pero no para las que son invocadas desde la linea de comando. Esto es para proteger los GUI's de los usuarios de la linea de comando, y tambien permite a las rutinas de llamada tener el completo acceso a los identificadores de los objetos.

Poniendo HandleVisibility en off hace al manejador siempre invisible. Esto puede ser 102

necesario cuando una rutina de llamada invoca a una funcion que puede daar al GUI, por que asi temporalmente esconde sus propios identificadores mientras se ejecuta dicha funcion. Cuando un manejador no es visible en la lista de hijos de su clase papa, no puede ser regresado por funciones que obtengan identificadores buscando la jerarquia del objeto o "preguntando" las propiedades del manejador. Esto incluye get, findobj, gca, gcf, gco, newplot, cla, clf y close.

Cuando la visibilidad del manejador (HandleVisibility) es restringida usando llamadas o poniendola en off, el manejador del objeto no aparece en la propiedad children de su papa, las figuras no aparecen en la propiedad CurrentFigure de Root (raiz), los objetos no aparecen en la propiedad de Root CallbackObjet o en la propiedad de la figura CurrentObjet, y los Axes (ejes) no aparecen en la propiedad CurrentAxes de sus padres. Puedes poner la propiedad de Root ShowHiddenHandles en on para hacer visibles a todos los identificadores, sin importar los ajustes de su propiedad HandleVisibility (esto no afecta sus valores). Los identificadores que estan escondidos siguen siendo validos, si se conoce el manejador de un objeto tu puedes asigner (set) y obtener (get) sus propiedades, y pasarcelas a cualquier funcion que opere identificadores

HorizontalAlignment Alineacion Horisontal de una cadena de una etiqueta. Esta propiedad determina la justificaion de el texto definido por la propiedad String (la etiqueta uicontrol): "# left - El texto se justifica a la izquierda con respecto al uicontrol "# center - El texto se centra con respecto al uicontrol "# right - El texto se justifica a la derecha con respecto al uicontrol

En el sistema operativo Windows de Microsoft, esta propiedad afecta solo a los uicontrols edit y text. 103

Interruptible Rutina de llamada modo de interupcion. Si una llamada se esta ejecutando y el usuario dispara un evento (como un click del mouse) en un objeto para el cual esta definida uina llamada, la llamada intenta interumpir la primera llamada. Matlab procesa las llamadas conforme a estos factores: La propiedad Interruptible de el objeto que se esta ejecutando la llamada "# Si la llamada que se esta ejecutando contiene las declaraciones drawnow, figure, getframe, pause o waitfor "# LA propiedad BusyAction de el objeto que su llamada esta esperando para ejecutarse Si la propiedad Interruptible de el objeto que su llamada se esta ejecutando esta en on, la llamada puede ser interrumpida. La llamada interumpe ejecucion a la siguiente declaracion drawnow, figure, getframe, pause o waitfor, y procesa los eventos en el evento de la cola, en el cual incluye la llamada que esta espreando. Si la propiedad Interruptible de el objeto que su llamada se esta ejecutando esta en off, la llamada no puede ser interrumpida (a excepcio de ciertas llamadas). La propiedad BusyAction de el objeto de el cual su llamada esta esperando para ejecutarse determina que pasa con la llamada. Nota: Si la llamada interumpida es una llamada de DeleteFcn o CreateFcn o una llamada de CloseRequest o ResizeFcn de una figura, interrumpe la llamada que se esta ajecutando sin importar el valor de la propiedad Interruptible de ese objeto. La llamada interruptora empiesa la ejecucion a la siguiente declaracion de drawnow, figure, getframe, pause o waitfor. la rutina de llamada WindowButtonDownFcn de una figura, o las propiedades ButtonDownFcn o Callback de un objeto son procesadas de acuerdo a las reglas descritas arriba.

ListboxTop Esta propiedad se aplica solo al estilo de uicontrol listbox. Especifica que cadena aparece en la posicion mas alta de un Listbox (caja de lista) que no es lo suficientemente largo para mostrar todos los elementos de la lista. ListboxTop es un indice en el arreglo de cadenas definido por la propiedad String y debe tener un valor entre cero y el numero de cadenas. Valores no enteros son redondeados al proximo valor entero mas chico. 104

Max Valor Maximo. Esta propiedad especifica el valor mas grande aceptado por la propiedad Value. Diferentes estilos de uicontrols interpretan la propiedad max de diferente manera: - Check boxes - Max es el valor de la propiedad Value mientras el check box esta seleccionado. - Editable text - Si Max - Min > 1, entonces el editable text (texto editable) ecepta varias una linea lineas de entrada. Si Max - Min <= 1, entonces el editable text solo aceptan de entrada.

- List boxes - Si Max - Min > 1, entonces el list box acepta seleccion multiple de elementos. Si Max - Min <= 1, entonces no aceptan seleccion multiple - Radio buttons - Max es el valor de la propiedad Value mientras el radio button esta seleccionado. - Sliders - Max es el valor maximo del slider (deslisador) y tiene que ser mas grande que l a propiedad min. El valor por defecto es 1.

- Toggle buttons - Max es el valor de la propiedad Value mientras el radio button esta seleccionado. El valor por defecto es 1. - Frames, pop-up menus, push buttons, y static text no usan la propiedad Max

Min Valor Maximo. Esta propiedad especifica el valor mas pequeo aceptado por la propiedad Value. Diferentes estilos de uicontrols interpretan la propiedad min de diferente manera:

- Check boxes - Min es el valor de la propiedad Value mientras el check box no esta seleccionado. - Editable text - Si Max - Min > 1, entonces el editable text (texto editable) ecepta varias una linea lineas de entrada. Si Max - Min <= 1, entonces el editable text solo aceptan de entrada.

- List boxes - Si Max - Min > 1, entonces el list box acepta seleccion multiple de elementos. Si Max - Min <= 1, entonces no aceptan seleccion multiple 105

- Radio buttons - Min es el valor de la propiedad Value mientras el radio button no esta seleccionado. - Sliders - Min es el valor minimo del slider (deslisador) y tiene que ser menos que la propiedad max. El valor por defecto es 0. - Toggle buttons - Min es el valor de la propiedad Value mientras el radio button no esta seleccionado. El valor por defecto es 0. - Frames, pop-up menus, push buttons, y static text no usan la propiedad Min

Parent Papa de un unicontrol. El manejador de el objeto padre del uicontrol. El papa de un objeto uicontrol es la figura (figure) en el que aparece. Puedes mover un objeto uicontrol a otra figura asignando esta propiedad el manejador de el nuevo padre.

Position Tamao y posicion de un uicontrol. El rectangulo definido por esta propiedad especifica el tamao y la posicion de el control en la ventana de la figura. Especifica la posicion como: [left bottom width height] left (izquierda) y bottom (abajo) son la distancia de la esquina izquierda de abajo de la figura a la esquina izquierda de abajo del objeto. width (ancho) y height (alto) son las dimenciones de el rectangulo uicontrol. Todas las medidas estan en unidades especificadas por la propiedad Units.

En el sistema operativo Windows de Microsoft, la altura de los pop-up menus es automaticamente determinada por el tamao de la fuente. El valor que tu especifiques para height de la propiedad Position no tiene ningun efecto.

Los valores de width y height determinan la orientacion de los sliders (deslisadores). Si width es mas grande que height, entonces el slider es orientado horizontalmente, de lo contratio es orientado de manera vertical.

106

Selected Objeto seleccionado. Cuando esta propiedad esta activada (en on), Matlab muestra identificadores de seleccion si la propiedad SelectionHighlight esta tambien en on. Tu puedes, por ejemplo, definir ButtonDownFcn para que ajuste a esta propiedad, permitiendo al usuario que seleccione el objeto con el mouse.

SelectionHighlight Objeto resaltado cuando esta seleccionado. Cuando la Propiedad esta en on, Matlab indica el estado de seleccionado dibujando cuatro identificadores de filo y cuatro de horilla. Cuando la propiedad esta en off, Matlab no dibuja los identificadores. ****

SliderStep Paso del slider (deslizador). Esta propiedad controla la cantidad que la propiedad del slider Value cambia cuando le das click en el boton de la flecha (min_step) o en la barra del slider (max_step). Especifica SliderStep como un vector de dos elementos; cada valor debe estar en un rango de cero y uno. El tamao del paso es una funcion de el especificado SliderStep y al rango total del slider (Max - Min). El valor por defecto, [0 .01 0 .10], proporciona 1 por ciento oportunidades de clicks en el boton de la flecha y 10 porciento en la barra.

Por ejemplo, si creas el siguiente slider, uicontrol ('style', 'slider', 'min', 1, 'max', 7,... 'SliderStep', [0 .1 0 .6] ) dando click en el boton de la flecha mueve el indicador por, 0.1*(7-1) ans = 0.6 y dando click en la barra mueve el indicador 0.6*(7-1) ans = 3.6

107

Nota: que si el tamao del paso especificado mueve el slider a un valor fuera del rango, el indicador se muve solo al valor max o min.

String
Para los check boxes, editable text, push buttons, radio buttons, static text, and toggle buttons, el texto que se muestra en el objeto. Para los list boxes y pop-up menu, el conjunto de elementos o articulos del objeto. Para objetos uicontrol que muestran solo una linea de texto, si el valor de String es especificado como arreglo de celdas tipo cadena (los elementos en las celdas son cadenas) o una matriz rellena, solo la primer cadena se muestra; los demas son ignorados, el caracter guion vertical ('|') no es interpretado como un cambio de linea sino que se muestra en el texto del uicontrol. Para texto editable o estatico(editable text o static text), cambios de linea ocurren entre cada columna de la matriz, cada celda de el arreglo tipo cadena y despues de cada caracter \n. Para multiples elementos en un list box o un pop-up menu, tu puedes especificar los elementos como un arreglo de celdas tipo cadenas, una matriz rellena de cadenas, o en un vector separados por guiones verticales ('|'). Para editable text, el valor de esta propiedad es asignado a la cadena capturada por el usuario.

Style Estilo del objeto uicontrol a crear. La propiedad Style (estilo) especifica el tipo de uicontrol a crear.

Tag Etiqueta del objeto especificada por el usuario. La propiedad tag proporciona una manera de identificar objetos graficos con una etiqueta espesificada por el usuario. Esta es particularmente util cuando construyes programas graficos interactivos que de otra manera necesitarian definir identificadores de objetos como variables globales o pasarlas como argumentos entre rutinas de llamada. Puedes definir la propiedad tag como cualquier cadena.

108

TooltipString Contenido de la "pista" (el letrero que aparece si dejas el mouse sobre un objeto sin dar click). La propiedad TooltipString especifica el texto de la "pista" asociado con el uicontrol. Cuando el usuario mueve el puntero mouse sobre un control y lo deja hay, la pista aparece. Type Clase de objeto grafico. Para los objetos uicontrol, la propiedad Type siempre es la cadena 'uicontrol'.

UIContextMenu Asocia un context menu con uicontrol. Asigna a esta propiedad el manejador de un objeto uicontextmenu. Matlab muestra el context menu cuando das click derecho en el uicontrol. Usa la funcion uicontextmenu para crear el context menu.

Units Unidades de medida. Las unidades que Matlab usa para interpretar las propiedades Extend y Position. Todas las unidades son medidas de la esquina inferior izquierda de la figura ventana. UserData Datos especificados por el usuario. Cualquier deto que quieras asociar con un objeto uicontrol. Matlab no usa este dato pero tu puedes accesar a el utilisando los comandos set (asigna) y get (recupera).

Value
Valor actual de el uicontrol.La clase (o estilo) uicontrol determina los posibles valores que esta propiedad puede tener: - Check boxes - ponen su propiedad Value (valor) en Max (el maximo) cuando estan seleccionados y en Min (el minimo) cuando no estan selaccionados. - List boxes - ajustan su valor a un vector corrspondiente a los elementos de la lista

109

- Pop-up menu - ajustan su valor a un indice de articulos seleccionados , donde 1 corresponde al primer elemento del menu. - Radio buttons - ponen su propiedad Value (valor) en Max (el maximo) cuando estan seleccionados y en Min (el minimo) cuando no estan selaccionados. - Sliders - ajustan su valor al numero indicado por la posicion de el slider (deslisador) - Toggle buttons - ponen su propiedad Value en Max cuando estan presionados (seleccionados) y en Min cuando no estan selaccionados. - Editable text, Frames, Push buttons, y Static text no usan esta propiedad.

Puedes ajustar este valor ya sea interactivamente con el mouse o atraves de la funcion set.

Visible Visibilidad de el uicontrol. Por defecto, todos los uicontrols son visibles. Cuando esta propiedad esta desactivada (en off), el control no es visible, pero sigue existiendo y puedas buscar y modificar su propiedades.

UIMENUS Accelerator Un caracter que espesifica la tecla equivalenteal articulo del menu. Esto permite a los usuarios seleccionar un elemento en particular persionando un caracter especifico en

conjuncion con otra tecla, en lugar de hacerlo con el mouse. La secuencia de las teclas depende de la plataforma: "# Para Windows de Microsoft, la secuencia es Ctrl-Accelerator. Las teclas reservadas para los elementos del menu por defecto son: c, v, y x "# Para Unix, la secuencia es Ctrl-Accelerator. Las teclas reservadas para los elementos del menu por defecto son: o, p, s, y w

110

Puedes definir un accelerator (acelerador) solamente para elementos que no tienen menus hijos. Los Accelerators solo funcionan para elementos del menu que ejecutan una rutina de llamada directamente, y no para los que abren otros menus. Note que los elementos de el menu no tienen que estar a la vista para que el accelerator funcione. Pero la figura papa de el menu tiene que estar seleccionada.

BusyAction Interrupcion de la rutina de llamada(callback). Si una es ejecutada y el usuario activa un evento en un objeto para el cual una llamada esta definida, esa llamada trata de interumpir la primera llamada. La primera llamada puede ser interrumpida sola mente por uno de los siguientes comandos: drawnow, figure, getframe, pause o waitfor; si la llamado no contiene ninguno de estos comandos no puede ser interrumpida. Si la propiedad Interruptible de el objeto que se esta ejecutando la llamada esta desactivada(off), la llamada no puede ser interrumpida (exepto por algunas llamadas). La propiedad BusyAction de el objeto que su llamada esta esperando para ejecutarse determina lo que le pasa a la llamada:

Si el valor es queue, la llamada es agregada al evento queue y se ejecuta despus de que la primera llamada termina de ejecutarse. 1 Si el valor es Cancel, el evento es descartado y la llamada no se ejecuta. Nota: Si la llamada interrumpida es una llamada de DeleteFcn o CreateFcn o una de una figura de CloseRequest or ResizeFcn, se interrumpe y ejecuta sin importar el valor de la propiedad Interruptible del objeto ButtonDownFcn Rutia de llamada de presionar un boton. Una rutina de llamada que se ejecuta cuando presionas un boton del mouse mientras el cursor esta en un unicontrol. Cuando la propiedad enable del unicontrol esta desactivada, el ButtonDownFcn se ejecuta cuando haces click en el unicontrol. Esto es util para implementar acciones para modificar interactivamente las propiedades de control del objeto, como el tamao y la posicin.

111

Esta rutina se define como una cadena(string) que es una expresin valida en Matlab o el nombre de un archivo M (M-file). La expresin se ejecuta en el espacio de trabajo de matlab. La propiedad de llamada define la rutina de llamada que se ejecuta cuando das click en el boton

Callback Controla la accion. Una rutina que se ejecuta cuando se activa un objeto de la clase uicontrol. Define esta rutina como una cadena. La exprecion se ejecuta en el espacio de trabajo de matlab.

Para ejecutarla rutina para un control de texto editable, escribe el texto deseado y despues suige uno de los siguientes pasos:

-Mueve la seleccion del objeto (da click en cualquier otra parte) -Para un texto editable de una sola linea, presiona Return -Para una caja de texto (text box), presiona Ctrl-Return.

Esta rutina definida para los componentes frame y ststic text no se ejecuta por que ninguna accion esta asociada con estos objetos.

Checked Indicador del articulo del menu seleccionado. Poniendo esta propiedad en on muestra una marca a un lado de el elemanto de el menu correspondiente. Poniendola en off remueve la marca. Tu puedes usar esta opcion para crear menus que indiquen el estado de una opcion en particular. Children Manejador de submenus. Un vector que contiene los identificadores de todos los hijos del objeto uimenu. Los objetos hijos de los uimenus son otros uimenus, que funcionan como submenus. 112

Esta propiedad es util para reordenar los menus CreateFcn Rutina de llamada ejecutada cuando se crea un objeto. Esta propiedad define una rutina de llamada que es ejecutada cuando matlab crea un objeto de la clase uimenu. Se debe definir esta propiedad como un valor por default para los uicontrols.

DeleteFcn Una rutina de llamada que se ejecuta cuando borras un objeto uicontrol. Matlab ejecuta la rutina antes de destruir las propiedades del objeto, asi sus valorea estan disponibles para la rutina de llamada.

Enable Activa o desactiva el uimenu. Esta propiedad controla cuando un elemento del menu puede ser seleccionado. Cuando esta inactiva (en off), la etiqueta del menu aparece osbcurecida, indicandoque no puede ser seleccionada por el usuario

ForegroundColor Color de texto. Esta propiedad determina el color de el texto definido por la propiedad String. Especifica un color usando un vector de tres elementos RGB o un nombre predefinido en Matlab.

HandleVisibility Controla el acceso al manejador (handle) de un objeto por usuarios de la linea de comando y GUI's. Esta propiedad determina cuando un manejador de un objeto es visible en la lista de los objetos hijos de su clase papa.

HandleVisibility es util para prevenir usuarios de la linea de comando de accidentalmente borrar o dibujar en una figura que contiene solo dispositivos de interfase de usuarios.

Los identificadores son siempre visibles cuando HandleVisibilty esta activada (en on). Asignando HandleVisibility a una llamada hace que el manejador sea visible para rutinas 113

de llamada o funciones invocadas po rutinas de llamada, pero no para las que son invocadas desde la linea de comando. Esto es para proteger los GUI's de los usuarios de la linea de comando, y tambien permite a las rutinas de llamada tener el completo acceso a los identificadores de los objetos.

Poniendo HandleVisibility en off hace al manejador siempre invisible. Esto puede ser necesario cuando una rutina de llamada invoca a una funcion que puede daar al GUI, por que asi temporalmente esconde sus propios identificadores mientras se ejecuta dicha funcion. Cuando un manejador no es visible en la lista de hijos de su clase papa, no puede ser regresado por funciones que obtebgan identificadores buscando la jerarquia del objeto o "preguntando" las propiedades del manejador. Esto incluye get, findobj, gca, gcf, gco, newplot, cla, clf y close.

Cuando la visibilidad del manejador (HandleVisibility) es restringida usando llamadas o poniendola en off, el manejador del objeto no aparece en la propiedad children de su papa, las figuras no aparecen en la propiedad CurrentFigure de Root (raiz), los objetos no aparecen en la propiedad de Root CallbackObjet o en la propiedad de la figura CurrentObjet, y los Axes (ejes) no aparecen en la propiedad CurrentAxes de sus padres. Puedes poner la propiedad de Root ShowHiddenHandles en on para hacer visibles a todos los identificadores, sin importar los ajustes de su propiedad HandleVisibility (esto no afecta sus valores). Los identificadores que estan escondidos siguen siendo validos, si se conoce el manejador de un objeto tu puedes asigner (set) y obtener (get) sus propiedades, y pasarcelas a cualquier funcion que opere identificadores

Interruptible Rutina de llamada modo de interupcion. Si una llamada se esta ejecutando y el usuario dispara un evento (como un click del mouse) en un objeto para el cual esta definida uina

114

llamada, la llamada intenta interumpir la primera llamada. Matlab procesa las llamadas conforme a estos factores: "# La propiedad Interruptible de el objeto que se esta ejecutando la llamada "# Si la llamada que se esta ejecutando contiene las declaraciones drawnow, figure, getframe, pause o waitfor "# LA propiedad BusyAction de el objeto que su llamada esta esperando para ejecutarse Si la propiedad Interruptible de el objeto que su llamada se esta ejecutando esta en on, la llamada puede ser interrumpida. La llamada interumpe ejecucion a la siguiente declaracion drawnow, figure, getframe, pause o waitfor, y procesa los eventos en el evento de la cola, en el cual incluye la llamada que esta espreando. Si la propiedad Interruptible de el objeto que su llamada se esta ejecutando esta en off, la llamada no puede ser interrumpida (a excepcio de ciertas llamadas). La propiedad BusyAction de el objeto de el cual su llamada esta esperando para ejecutarse determina que pasa con la llamada.

Nota: Si la llamada interumpida es una llamada de DeleteFcn o CreateFcn o una llamada de CloseRequest o ResizeFcn de una figura, interrumpe la llamada que se esta ajecutando sin importar el valor de la propiedad Interruptible de ese objeto. La llamada interruptora empiesa la ejecucion a la siguiente declaracion de drawnow, figure, getframe, pause o waitfor. la rutina de llamada WindowButtonDownFcn de una figura, o las propiedades ButtonDownFcn o Callback de un objeto son procesadas de acuerdo a las reglas descritas arriba. Label Etiqueta del menu. Una cadena especificando el texto en la etiqueta de el articulo de el menu. Puedes especificar un mnemonic usando el caracter "&". Cualquier letra siguiente de el "&" aparece subrrayada y se selecciona el articulo del menu cuando oprimes esa letra mientras el menu es visible. El caracter "&" no se muestra. Para mostrarlo en una etiqueta usa dos "&" en la cadena.

Parent Papa de el uimenu. El manejador de el objeto papa de un uimenu. El papa de un objeto 115

uimenu es la figura en donde se muestra, o el uimenu de el que es un submenu. Puedes mover un objeto uimenu a otra figura asignando esta propiedad el manejador de el nuevo padre

Position Posicion relativa del uimenu . El valor de la propiedad position (posicion) indica el lugar en una barra de menu o en un menu. Los menus de el nivel de arriba son acomodados de izquierda a derecha en la barra de menu dependiendo de el valor de la propiedad position, donde 1 representa la primera posicion de la izquierda. Los elementos individuales en cualquier menu son acomodados de arriba hacia abajo, con 1 representando la primera posicion de arriba.

Separator Linea de separacion. Activando esta propiedad (on) dibuja una linea divisora sobre el articulo del menu

Tag Etiqueta del objeto especificada por el usuario. La propiedad tag proporciona una manera de identificar objetos graficos con una etiqueta espesificada por el usuario. Esta es particularmente util cuando construyes programas graficos interactivos que de otra manera necesitarian definir identificadores de objetos como variables globales o pasarlas como argumentos entre rutinas de llamada. Puedes definir la propiedad tag como cualquier cadena.

Type Clase de objeto grafico. Para los objetos uimenu, la propiedad Type siempre es la cadena 'uimenu'.

UserData

116

Datos especificados por el usuario. Cualquier matriz que quieras asociar con un objeto uimenu. Matlab no usa este dato pero tu puedes accesar a el utilisando los comandos set (asigna) y get (recupera).

Visible Visibilidad de el uimenu. Por defecto, todos los uimenus son visibles. Cuando esta propiedad esta desactivada (en off), el control no es visible, pero sigue existiendo y puedas buscar y modificar su propiedades.

UICONTEXTMENU BusyAction Interrupcion de la rutina de llamada(callback). Si una es ejecutada y el usuario activa un evento en un objeto para el cual una llamada esta definida, esa llamada trata de interumpir la primera llamada. La primera llamada puede ser interrumpida sola mente por uno de los siguientes comandos: drawnow, figure, getframe, pause o waitfor; si la llamado no contiene ninguno de estos comandos no puede ser interrumpida.

Si la propiedad Interruptible de el objeto que se esta ejecutando la llamada esta desactivada(off), la llamada no puede ser interrumpida (exepto por algunas llamadas). La propiedad BusyAction de el objeto que su llamada esta esperando para ejecutarse determina lo que le pasa a la llamada:

Si el valor es queue, la llamada es agregada al evento queue y se ejecuta despus de que la primera llamada termina de ejecutarse. 1 Si el valor es Cancel, el evento es descartado y la llamada no se ejecuta. Nota: Si la llamada interrumpida es una llamada de DeleteFcn o CreateFcn o una de una figura de CloseRequest or ResizeFcn, se interrumpe y ejecuta sin importar el valor de la propiedad Interruptible del objeto

117

Callback Controla la accion. Una rutina que se ejecuta cuando das click derecho a un objeto de la clase uicontextmenu. La rutina se ejecuta inmediatamente despues de que el context menu es registrada. Define esta rutina como una cadena. La exprecion se ejecuta en el espacio de trabajo de matlab. Children Los uimenus definidos por el uicontextmenu. CreateFcn Rutina de llamada ejecutada cuando se crea un objeto. Esta propiedad define una rutina de llamada que es ejecutada cuando matlab crea un objeto de la clase uimenu. Se debe definir esta propiedad como un valor por default para los uicontrols. DeleteFcn Una rutina de llamada que se ejecuta cuando borras un objeto uicontrol. Matlab ejecuta la rutina antes de destruir las propiedades del objeto, asi sus valorea estan disponibles para la rutina de llamada. HandleVisibility Controla el acceso al manejador (handle) de un objeto por usuarios de la linea de comando y GUI's. Esta propiedad determina cuando un manejador de un objeto es visible en la lista de los objetos hijos de su clase papa.

HandleVisibility es util para prevenir usuarios de la linea de comando de accidentalmente borrar o dibujar en una figura que contiene solo dispositivos de interfase de usuarios.

Los identificadores son siempre visibles cuando HandleVisibilty esta activada (en on). Asignando HandleVisibility a una llamada hace que el manejador sea visible para rutinas de llamada o funciones invocadas po rutinas de llamada, pero no para las que son invocadas desde la linea de comando. Esto es para proteger los GUI's de los usuarios de la linea de comando, y tambien permite a las rutinas de llamada tener el completo acceso a los identificadores de los objetos. 118

Poniendo HandleVisibility en off hace al manejador siempre invisible. Esto puede ser necesario cuando una rutina de llamada invoca a una funcion que puede daar al GUI, por que asi temporalmente esconde sus propios identificadores mientras se ejecuta dicha funcion. Cuando un manejador no es visible en la lista de hijos de su clase papa, no puede ser regresado por funciones que obtebgan identificadores buscando la jerarquia del objeto o "preguntando" las propiedades del manejador. Esto incluye get, findobj, gca, gcf, gco, newplot, cla, clf y close.

Cuando la visibilidad del manejador (HandleVisibility) es restringida usando llamadas o poniendola en off, el manejador del objeto no aparece en la propiedad children de su papa, las figuras no aparecen en la propiedad CurrentFigure de Root (raiz), los objetos no aparecen en la propiedad de Root CallbackObjet o en la propiedad de la figura CurrentObjet, y los Axes (ejes) no aparecen en la propiedad CurrentAxes de sus padres. Puedes poner la propiedad de Root ShowHiddenHandles en on para hacer visibles a todos los identificadores, sin importar los ajustes de su propiedad HandleVisibility (esto no afecta sus valores). Los identificadores que estan escondidos siguen siendo validos, si se conoce el manejador de un objeto tu puedes asigner (set) y obtener (get) sus propiedades, y pasarcelas a cualquier funcion que opere identificadores Interruptible Rutina de llamada modo de interupcion. Si una llamada se esta ejecutando y el usuario dispara un evento (como un click del mouse) en un objeto para el cual esta definida uina llamada, la llamada intenta interumpir la primera llamada. Matlab procesa las llamadas conforme a estos factores: "# La propiedad Interruptible de el objeto que se esta ejecutando la llamada "# Si la llamada que se esta ejecutando contiene las declaraciones drawnow, figure, getframe, pause o waitfor

119

"# La propiedad BusyAction de el objeto que su llamada esta esperando para ejecutarse Si la propiedad Interruptible de el objeto que su llamada se esta ejecutando esta en on, la llamada puede ser interrumpida. La llamada interumpe ejecucion a la siguiente declaracion drawnow, figure, getframe, pause o waitfor, y procesa los eventos en el evento de la cola, en el cual incluye la llamada que esta espreando. Si la propiedad Interruptible de el objeto que su llamada se esta ejecutando esta en off, la llamada no puede ser interrumpida (a excepcio de ciertas llamadas). La propiedad BusyAction de el objeto de el cual su llamada esta esperando para ejecutarse determina que pasa con la llamada.

Nota: Si la llamada interumpida es una llamada de DeleteFcn o CreateFcn o una llamada de CloseRequest o ResizeFcn de una figura, interrumpe la llamada que se esta ajecutando sin importar el valor de la propiedad Interruptible de ese objeto. La llamada interruptora empiesa la ejecucion a la siguiente declaracion de drawnow, figure, getframe, pause o waitfor. la rutina de llamada WindowButtonDownFcn de una figura, o las propiedades ButtonDownFcn o Callback de un objeto son procesadas de acuerdo a las reglas descritas arriba. Parent Papa de el uicontextmenu. El manejador de el objeto papa de un uicontextmenu. El papa de un objeto uicontextmenu es la figura en donde se muestra. Puedes mover un objeto uicontextmenu a otra figura asignando esta propiedad el manejador de el nuevo padre Position Posicion del uicontextmenu . Una vector de dos elementos que define la posicion de el menu. Especifica la posicion como: [left bottom] donde los elementos del vector representan la distancia en pixeles desde la esquina inferior izquierda de la figura hasta la esquina superior izquierda de el context menu.

120

Tag Etiqueta del objeto especificada por el usuario. La propiedad tag proporciona una manera de identificar objetos graficos con una etiqueta espesificada por el usuario. Esta es particularmente util cuando construyes programas graficos interactivos que de otra manera necesitarian definir identificadores de objetos como variables globales o pasarlas como argumentos entre rutinas de llamada. Puedes definir la propiedad tag como cualquier cadena.

Type Clase de objeto grafico. Para los objetos uicontextmenu, la propiedad Type siempre es la cadena 'uicontextmenu'.

UserData Datos especificados por el usuario. Cualquier matriz que quieras asociar con un objeto uicontext menu. Matlab no usa este dato pero tu puedes accesar a el utilisando los comandos set (asigna) y get (recupera).

Visible Visibilidad de el uicontextmenu. Esta propiedad puede ser usada de dos maneras: "# El valor indica cuando el contextmenu esta siendo activado. "# El valor puede ser ajustado en on para forsar su activacion. De la misma manera puedes poner su valor en off para forsar que sea removido. Cuando se usa de esta manera, la propiedad Position determina la localidad de el context menu activado

AXES AmbientLightColor El color de el fondo en una escena. Es una luz sin direccion que brilla uniformemente en todos los objetos en los ejes (axes). Sin embargo, si no hay objetos de luces visibles en los ejes, Matlab no usa AmbientLightColor. Si hay objetos de luz en los ejes, el AmbientLightColor es agregado a las otras fuentes de luz.

121

AspectRatio Esta propiedad produce un aviso de precaucion cuando es buscado o cambiado. A sido remplazada por las propiedades DataAspectRatio[Mode] y PlotBoxAspectRatio[Mode]

Box Modo "caja" de los ejes. Esta propiedad especifica si se encierran los ejes en una caja vista en dos dimenciones o en un cubo de tres dimenciones.

BusyAction Interrupcion de la rutina de llamada(callback). Te permite controlar como Matlab maneja los eventos que potencialmente interumpen ejecutando rutinas de llamada. Si hay una rutina de llamada ejecutandose, las rutinas de llamada invocadas despues siempre tratan de intrrumpirla. Si la propiedad interruptible de el objeto que esta ejecutando la llamada esta activada (en on), entonces la interrupcion ocurre en el siguiente punto el evento que esta en la cola es procesado. Si la propiedad interruptible esta en off, la propiedad BusyAction (de el objeto que esta ejecutando la llamada) determina como Matlab maneja el evento. Las opciones son: "# cancel - descarta el evento que trata de ejecutar una segunda rutina de llamada "# queue - pone en una cola al evento que trata de ejecutar la segunda llamada hasta que la llamada actual termine

ButtonDownFcn Rutia de llamada de presionar un boton. Una rutina de llamada que se ejecuta cuando presionas un boton del mouse mientras el cursor esta en los ejes, pero no sobre otros objetos graficos mostrados en los ejes. Para las vistas en 3-D, el area activa esta definida por un rectangulo que encierra los ejes.

Esta rutina se define como una cadena(string) que es una expresin valida en Matlab o el nombre de un archivo M (M-file). La expresin se ejecuta en el espacio de trabajo de matlab.

122

CameraPosition La posicion de la camara. Esta propiedad define la posicion donde la camara ve la escena. Espesifica el punto en coordenadas de los ejes. CameraPositionMode Posicion de la camara automatica o manual. Cuando esta an auto (automatica), Matlab calcula automaticamente la posicion de la camara. Asignar un valor a CameraPosition pone a esta propiedad en manual CameraTarget Punto de fijacion de la camara. Esta propiedad especifica la posicion en los ejes donde la camara apunta. El CameraTarget (blanco de la camara) y la CameraPosition (posicion de la camara) define el vector en donde la camara apunta. CameraTargetMode Propiedad CameraTarget automatica o manual. Cuando Esta propiedad esta en auto, Matlab automaticamenta posiciona el lugar donde apunta la camara (CameraTarget) en el centro de los ejes. Espesificando un valor a la propiedad CameraTarget pone a esta propiedad en manual.

CameraUpVector Rotacion de la camara. Esta propiedad especifica la rotacion de la camara alrededor de los ejes que se estan viendo definida por las propiedades CameraTarget y CameraPosition. Especifica esta propiedad como un arreglo de tres valores conteniendo los componentes del vector x, y y z.

CameraUpVectorMode Vector especificado por el usuario o por defecto. Cuando esta en auto, Matlab usa el valor de [0 0 1] para vistas en 3-D y [0 0 1] para vistas en 2-D. Asignar un valor a CameraUpVector pone esta propiedad en manual.

123

CameraViewAngle El campo de vista. esta propiedad Determina el campo de vista de la camara. Cambiando este valor afecta el tamao de los objetos graficos mostrados en los ejes, pero no afecta el grado de distorcion de la prespectiva. Entre mas grande sea el angulo, mas grande es el campo de vista, y mas pequeo es el objeto que aparece en la escena.

Children hijos de la clase Axes (ejes). Un vector que contiene los manejadores de todos los objetos graficos dejados en los ejes (sean o no visibles). Los objetos graficos que no pueden ser hijos de la calse Axes son: images (imagenes), lights (luces), lines (lineas), patches (parches), surfaces (superficies) y text (texto).

CLim Un vector del dos elemento [ cmax cmin ] que determina cmo MATLAB traza los valores de los datos de el colormap. cmin es el valor de los datos a trazar a la primera entrada del colormap, y el cmax es el valor de los datos a trazar a la ultima entrada del colormap.

Color color de los planos de fondo de los ejes. Ajustando esta propiedad a none (no) quiere decir que los ejes son transparentes y el color de la figura se ven atraves de ellos. un ColorSpec (color especifico) es un vector de tres elementos RGB o un nombre predefinido en Matlab.

ColorOrder Colores a usar para graficas multiples. Es una matriz de m por 3 de valores RGB que definen el color usado en las funciones plot y plot3 para colorear cada linea graficada.

CreateFcn Rutina de llamada ejecutada cuando se crea un objeto. Esta propiedad define una rutina de llamada que es ejecutada cuando matlab crea un objeto de la clase Axes. Se debe definir esta propiedad como un valor por default para los ejes.

124

CurrentPoint Posicion de el ultimo boton al que se le dio click, en unidades de datos de los ejes. Una matriz de 2 por 3 que contiene las coordenadas de dos puntos definidos por la locacion de el cursor. Estos dos puntos estan en la linea que es perpendicular al plano de la pantalla y pasa por el cursor. DeleteFcn Una rutina de llamada que se ejecuta cuando borras un objeto Axes. Matlab ejecuta la rutina antes de destruir las propiedades del objeto, asi la rutina de llamada puede buscar sus valores DrawMode Modo de dibujo. - normal - Dibuja los objetos de atrs hacia adelante respecto a la visin actual. fast - dibuja objetos en la orden en la cual usted la especific originalmente. Esto inhabilita clasificar tridimensional realizado generalmente por MATLAB, dando por resultado ms rpidamente la representacin. FontAngle Inclinacin de un Caracter. Poniendo esta propiedad en Italic (italica) o oblique (oblicua) selecciona una version inclinada de la fuente, cuando esta disponible en tu sistema.

FontName El nombre de la fuente que mostrara la cadena. Para mostrar e imprimir correctamente, debe ser un tipo de fuente que tu sistema soporte. Para usar un ancho ajustado que se vea bien en cualquier exterior (y que se muestre correctamente en Japon, donde usan caracteres "multibyte"), Pon al FontName la cadena FixedWidth (esta cadena es sencible a la mayusculas): set( uicontrol_handle, 'FontName', 'FixedWidth' )

125

FontSize Tamao de la fuente. Un numero que especifica el tamao de la fuente que va a ser mostrado en la cadena, in unidades determinadas por la propiedad FontUnits. El tamao por default es dependiente del sistema. FontUnits Unidades del tamao de la fuente. Esta propiedad determina las unidades usadas por la propiedad FontSize.Las unidades normalizadas interpretan el FontSize como una fraccion de la altura de el Axes.

FontWeight Peso de un caracter. El peso de un caracter para el texto de los ejes. Poniendo esta propiedad en Bold hace que Matlab use una version "negrita" de la fuente, cuando esta disponible en tu sistema. GrindLineStyle Estilo de lineas usado para dibujar la cuadricula. El estilo de linea es una cadena que consiste en un caracter en cuotas, especificando una linea solida (-), guiones (--), lineas de puntos (:), o guiones con puntos(-.) HandleVisibility Controla el acceso al manejador (handle) de un objeto por usuarios de la linea de comando y GUI's. Esta propiedad determina cuando un manejador de un objeto es visible en la lista de los objetos hijos de su clase papa. HandleVisibility es util para prevenir usuarios de la linea de comando de accidentalmente borrar o dibujar en una figura que contiene solo dispositivos de interfase de usuarios.

Los manejadores

son siempre visibles cuando HandleVisibilty esta activada (en on).

Asignando HandleVisibility a una llamada hace que el manejador sea visible para rutinas de llamada o funciones invocadas po rutinas de llamada, pero no para las que son invocadas desde la linea de comando. Esto es para proteger los GUI's de los usuarios de la linea de comando, y tambien permite a las rutinas de llamada tener el completo acceso a los

126

manejadores de los objetos. Poniendo HandleVisibility en off hace al manejador siempre invisible. Esto puede ser necesario cuando una rutina de llamada invoca a una funcion que puede daar al GUI, por que asi temporalmente esconde sus propios manejadores mientras se ejecuta dicha funcion. Cuando un manejador no es visible en la lista de hijos de su clase papa, no puede ser regresado por funciones que obtebgan manejadores buscando la jerarquia del objeto o "preguntando" las propiedades del manejador. Esto incluye get, findobj, gca, gcf, gco, newplot, cla, clf y close.

Cuando la visibilidad del manejador (HandleVisibility) es restringida usando llamadas o poniendola en off, el manejador del objeto no aparece en la propiedad children de su papa, las figuras no aparecen en la propiedad CurrentFigure de Root (raiz), los objetos no aparecen en la propiedad de Root CallbackObjet o en la propiedad de la figura CurrentObjet, y los Axes (ejes) no aparecen en la propiedad CurrentAxes de sus padres. Puedes poner la propiedad de Root ShowHiddenHandles en on para hacer visibles a todos los manejadores, sin importar los ajustes de su propiedad HandleVisibility (esto no afecta sus valores). Los manejadores que estan escondidos siguen siendo validos, si se conoce el manejador de un objeto tu puedes asigner (set) y obtener (get) sus propiedades, y pasarcelas a cualquier funcion que opere manejadores Interruptible Rutina de llamada de modo interumpible. La caracterstica interrumpible controla si una rutina de llamada de los ejes se puede interrumpir por rutinas de llamada posteriormente invocadas. Solamente las rutinas de llamada definidas para el ButtonDownFcn son afectadas por la caracterstica interrumpible. Matlab comprueba para saber si hay acontecimientos que puedan interrumpir una rutina de llamada solamente cuando encuentra un drawnow, una figura, un getframe, o un comando de la pausa en la rutina.

127

El fijar interrumpible a encendido permite que la rutina del servicio repetido de cualquier objeto de los grficos interrumpa las rutinas del servicio repetido que originan de una caracterstica de los ejes. Observe que Matlab no ahorra el estado de las variables o de la exhibicin cuando ocurre una interrupcin.

Layer Dibuja las lneas de ejes debajo o sobre objetos grficos. Esta caracterstica determina si las lineas de los ejes y las marcas de la seal dibuja en arriba o debajo de los objetos de los hijos de los ejes para cualquier vista de 2-D. Esto es til para poner lneas de rejilla y marcas de la seal encima de imgenes.

LineStyleOrder Orden del estilo de la lnea de los ejes. Una cadena que especifica estilos de la lnea en el orden que se usan para trazar lneas mltiples en los ejes.

LineWidth Ancho de las lineas de los ejes x, y, y z. El ancho, en puntos, de las lneas que representan cada eje. La anchura de la lnea de la por omisin es 0,5 puntos.

NextPlot Manipulacin de los ejes por graficas subsecuentes.

- new - Crea nuevos ejes antes de dibujar. - add - Agrega nuevos obgetos a los ejes actuales. - replace - Destruye los ejes actuales y crea nuevos

Parent Identificador de el objeto papa de los ejes. Una propiedad de solo lectura que contiene el Identificador de el objeto papa de los ejes. El papa de un objeto tipo Axes es la figura en que es expuesta.

128

Position Tamao y posicion de los ejes. Un vector de cuatro elementos [left bottom width height], donde left (izquierda) y bottom (abajo) son la distancia de la esquina inferior izquierda de la ventana a la esquina inferior izquierda de los ejes. width (ancho) y height (altura) son las dimenciones de el rectangulo de los ejes. Todas las medidas estan definidas por la propiedad Units (unidades).

TickDir
La direccin de la marca de la seal in las marcas de la seal se dirige hacia adentro de las lneas del eje out - las marcas de la seal se dirige hacia afuera de las lneas del eje

TickLength
Tamao de la marca de la seal. Un vector de dos elementos [2Dlength 3Dlength] que
especifica el tamao 2Dlength

de la marca de la seal. Donde:

es la longitud de las marcas de la seal usadas para las vistas de dos

dimensiones.
3Dlength

es la longitud de las marcas de la seal usadas para las vistas de dos

dimensiones.

Title Titulo de los ejes. El identificador de el objeto de texto que define el titulo de los ejes. Primero crea el objeto de texto para despues obtener su manejador. La siguiente declaracion ejecuta ambos pasos:

set(gca,'title',text(0,0,'axes title'))

Type Tipo de objetos graficos. Esta propiedad siempre es "axes" para los objetos axes (ejes).

Units

129

Unidades de medida. Las unidades que Matlab usa para interpretar la propiedad Position. Todas las unidades son medidas de la esquina inferior izquierda de la figura ventana.

UserData Datos especificados por el usuario. Cualquier matriz que quieras asociar con un objeto de tipo axes. El objeto no usa este dato pero tu puedes recuperarlo usando el comando get

View Punto de vista de los ejes. Un vector de dos elementos, [az, el], que establece el punto de vista usado para transformar graficas de tercera dimension en un espacion bi dimencional de la pantalla. El viewpoint (punto de vista) es la pocision de la camara que obserba la grafica de 3-D, donde az es el acimut. El acimut gira alrededor del eje z, con valores positivos haceque el punto de vista ruede en un contador en el sentido de las manecillas del reloj. el es la elevacion, y especifica el angulo sobre o bajo el objeto. Valores positivos hacen que el punto de vista se mueva arriba de el objeto. Especifica cada elemento en grados.

Visible Visibilidad de los ejes. Por defecto, todos los objetos Axes son visibles. Cuando esta propiedad esta desactivada (en off), los ejesl no es visible, pero sigue existiendo y puedas buscar y modificar su propiedades.

XForm Una matriz de 4X4 que define la transformacion de graficas tridimencionales a la pantalla bidimencional.

- Propiedades que controlan el eje X -

Xcolor
Color de el eje X. Un vector de tres elementos RGB, o una cadena predefinida por matlab. Esta propiedad determina el color de la exhibicin para el eje x ,las marcas de la seal,las etiquetas de la marca de la seal, y las lineas de las rejillas. 130

Xdir Direccin de aumentar los valores de x. normal - Los valores de x aumentan de izquierda a derecha (sistema coordinado derecho). reverse - los valores de x aumentan de derecho a la izquierda.

Xgrid
Modo de linea de rejilla del eje X. on - Matlab dibuja lineas perpendiculares al eje X en cada marca de la seal off - No dibuja lineas

Xlabel
El identificador del objeto de texto usado para etiquetar el eje X. Primero cree el objeto del texto para despus obtener el identificador. La declaracin siguiente realiza ambos pasos:
set(gca,'xlabel',text(0,0,'axis label'))

Mientras que la funcion Text requiere la posicion del dato, esto no es usado para acomodar el texto. En lugar, Matlab pone la cadena axis label a la posicin correcta para el eje X. Xlim Lmites del eje X. Un vector del dos-elemento [ xmax xmin ] que especifica los valores mnimos y mximos del eje X, donde el xmin es el valor mnimo del eje X. Y xmax es el valor mximo. El valor por defecto para XLim es [ 0 1 ].

XlimMode
Modo de los lmites del eje X. auto - Matlab calcula los lmites del eje X (XLim) que palmo el XData de los hijos de X manual - Matlab tomas de los lmites del eje X de XLim; los lmites no 131 los ejes y produce nmeros redondeados para los lmites de el eje

dependen del XData en los objetos hijos. Fijar los valores para XLim pone esta caracterstica en manual.

Xscale
Escala de los ejes X. Linear Escala linear Log Escala logartmica

Xtick
Espaciamiento de la marca de la seal del eje X. Un vector de los valores que corresponden a los valores de los datos X en cul usted desea poner marcas de la seal. Si usted no desea las marcas de la seal exhibidas, Asigne XTick el vector vaco, [ ].

XtickLabel
Etiquetas de la marca de la seal del eje X. Una matriz de las cadenas a utilizar como etiquetas para las marcas de la seal a lo largo del eje X. Estas etiquetas sustituyen las etiquetas numricas generadas por MATLAB. Si usted no especifica suficientes etiquetas del texto para todas las marcas de la seal, MATLAB utiliza todas las etiquetas especificadas, y despus etiqueta las marcas restantes de la seal reutilizando las etiquetas especificadas. El comando
set(gca,'XTickLabels',['Old Data';'New Data'])

etiqueta las primeras dos marcas de la seal en el eje X Old Data (datos viejos) y New Data (nuevos datos ) respectivamente. Cada cadena de caracteres debe tener un nmero igual de caracteres debido a la manera que MATLAB almacena las cadenas. Esta caracterstica no controla el nmero de las marcas de la seal o sus localizaciones.

XtickLabelMode
Modo de etiquetas de la marca de la seal del eje X

132

- auto - MATLAB calcula las etiquetas de la seal del eje X (XTickLabels) que expande el dato X de los hijos de los ejes. - manual - MATLAB toma etiquetas de la seal del eje X de XTickLabels; no depende del dato X en los objetos de los nios. asignarle valores a XTickLabels fija esta caracterstica en manual.

XtickMode
Modo de la marca de la seal del eje X. auto Matlab calcula el espaciamiento de la marca de la seal del eje X (XTick) que expande el dato X de los hijos de los ejes. Manual Matlab toma el espaciamiento de la marca de el eje X de Xtick; no depende de el dato X de los objetos hijos. Fijar los valores para XTick fija esta caracterstica al manual.

- Propiedades que controlan el eje Y -

Ycolor
Color de el eje Y. Un vector de tres elementos RGB, o una cadena predefinida por matlab. Esta propiedad

determina el color de la exhibicin para el

eje x ,las marcas de la seal,las etiquetas de la marca de la seal, y las lineas de las rejillas.

Ydir Direccin de aumentar los valores de x. normal - Los valores de x aumentan de izquierda a derecha (sistema coordinado derecho). reverse - los valores de x aumentan de derecho a la izquierda.

Ygrid
Modo de linea de rejilla del eje Y. on - Matlab dibuja lineas perpendiculares al eje Y en cada marca de la seal off - No dibuja lineas

133

Ylabel
El identificador del objeto de texto usado para etiquetar el eje Y. Primero cree el objeto del texto para despus obtener el identificador. La declaracin siguiente realiza ambos pasos:
set(gca,'xlabel',text(0,0,'axis label'))

Mientras que la funcion Text requiere la posicion del dato, esto no es usado para acomodar el texto. En lugar, Matlab pone la cadena axis label a la posicin correcta para el eje Y. Ylim Lmites del eje Y. Un vector del dos-elemento [ xmax xmin ] que especifica los valores mnimos y mximos del eje Y, donde el xmin es el valor mnimo del eje Y. Y xmax es el valor mximo. El valor por defecto para YLim es [ 0 1 ].

YlimMode
Modo de los lmites del eje Y. auto - Matlab calcula los lmites del eje Y (YLim) que palmo el YData de los hijos de Y manual - Matlab tomas de los lmites del eje Y de YLim; los lmites no dependen del YData en los objetos hijos. Fijar los valores para YLim pone esta caracterstica en manual. los ejes y produce nmeros redondeados para los lmites de el eje

Yscale
Escala de los ejes Y. Linear Escala linear Log Escala logartmica

134

Ytick
Espaciamiento de la marca de la seal del eje Y. Un vector de los valores que corresponden a los valores de los datos Y en cul usted desea poner marcas de la seal. Si usted no desea las marcas de la seal exhibidas, Asigne YTick el vector vaco, [ ].

YtickLabel
Etiquetas de la marca de la seal del eje Y. Una matriz de las cadenas a utilizar como etiquetas para las marcas de la seal a lo largo del eje Y. Estas etiquetas sustituyen las etiquetas numricas generadas por MATLAB. Si usted no especifica suficientes etiquetas del texto para todas las marcas de la seal, MATLAB utiliza todas las etiquetas especificadas, y despus etiqueta las marcas restantes de la seal reutilizando las etiquetas especificadas. El comando
set(gca,'YTickLabels',['Old Data';'New Data'])

etiqueta las primeras dos marcas de la seal en el eje Y Old Data (datos viejos) y New Data (nuevos datos ) respectivamente. Cada cadena de caracteres debe tener un nmero igual de caracteres debido a la manera que MATLAB almacena las cadenas. Esta caracterstica no controla el nmero de las marcas de la seal o sus localizaciones.

YtickLabelMode
Modo de etiquetas de la marca de la seal del eje Y - auto - MATLAB calcula las etiquetas de la seal del eje Y (YTickLabels) que expande el dato Y de los hijos de los ejes. - manual - MATLAB toma etiquetas de la seal del eje Y de YTickLabels; no depende del dato Y en los objetos de los nios. asignarle valores a YTickLabels fija esta caracterstica en manual.

135

YtickMode
Modo de la marca de la seal del eje Y. auto Matlab calcula el espaciamiento de la marca de la seal del eje Y (YTick) que expande el dato Y de los hijos de los ejes. Manual Matlab toma el espaciamiento de la marca de el eje Y de Ytick; no depende de el dato Y de los objetos hijos. Fijar los valores para YTick fija esta caracterstica al manual.

- Propiedades que controlan el eje Z -

Zcolor
Color de el eje Z. Un vector de tres elementos RGB, o una cadena predefinida por matlab. Esta propiedad determina el color de la exhibicin para el eje x ,las marcas de la seal,las etiquetas de la marca de la seal, y las lineas de las rejillas.

Zdir Direccin de aumentar los valores de x. normal - Los valores de x aumentan de izquierda a derecha (sistema coordinado derecho). reverse - los valores de x aumentan de derecho a la izquierda.

Zgrid
Modo de linea de rejilla del eje Z. on - Matlab dibuja lineas perpendiculares al eje Z en cada marca de la seal off - No dibuja lineas

Zlabel
El identificador del objeto de texto usado para etiquetar el eje Z. Primero cree el objeto del texto para despus obtener el identificador. La declaracin siguiente realiza ambos pasos:

136

set(gca,'xlabel',text(0,0,'axis label'))

Mientras que la funcion Text requiere la posicion del dato, esto no es usado para acomodar el texto. En lugar, Matlab pone la cadena axis label a la posicin correcta para el eje Z. Zlim Lmites del eje Z. Un vector del dos-elemento [ xmax xmin ] que especifica los valores mnimos y mximos del eje Z, donde el xmin es el valor mnimo del eje Z. Y xmax es el valor mximo. El valor por defecto para ZLim es [ 0 1 ].

ZlimMode
Modo de los lmites del eje Z. auto - Matlab calcula los lmites del eje Z (ZLim) que palmo el ZData de los hijos de Z manual - Matlab tomas de los lmites del eje Z de ZLim; los lmites no dependen del ZData en los objetos hijos. Fijar los valores para ZLim pone esta caracterstica en manual. los ejes y produce nmeros redondeados para los lmites de el eje

Zscale
Escala de los ejes Z. Linear Escala linear Log Escala logartmica

Ztick
Espaciamiento de la marca de la seal del eje Z. Un vector de los valores que corresponden a los valores de los datos Z en cul usted desea poner marcas de la seal. Si usted no desea las marcas de la seal exhibidas, Asigne ZTick el vector vaco, [ ].

137

ZtickLabel
Etiquetas de la marca de la seal del eje Z. Una matriz de las cadenas a utilizar como etiquetas para las marcas de la seal a lo largo del eje Z. Estas etiquetas sustituyen las etiquetas numricas generadas por MATLAB. Si usted no especifica suficientes etiquetas del texto para todas las marcas de la seal, MATLAB utiliza todas las etiquetas especificadas, y despus etiqueta las marcas restantes de la seal reutilizando las etiquetas especificadas. El comando
set(gca,'ZTickLabels',['Old Data';'New Data'])

etiqueta las primeras dos marcas de la seal en el eje Z Old Data (datos viejos) y New Data (nuevos datos ) respectivamente. Cada cadena de caracteres debe tener un nmero igual de caracteres debido a la manera que MATLAB almacena las cadenas. Esta caracterstica no controla el nmero de las marcas de la seal o sus localizaciones.

ZtickLabelMode
Modo de etiquetas de la marca de la seal del eje Z - auto - MATLAB calcula las etiquetas de la seal del eje Z (ZTickLabels) que expande el dato Z de los hijos de los ejes. - manual - MATLAB toma etiquetas de la seal del eje Z de ZTickLabels; no depende del dato Z en los objetos de los nios. asignarle valores a ZTickLabels fija esta caracterstica en manual.

ZtickMode
Modo de la marca de la seal del eje Z. auto Matlab calcula el espaciamiento de la marca de la seal del eje Z (ZTick) que expande el dato Z de los hijos de los ejes. Manual Matlab toma el espaciamiento de la marca de el eje Z de Ztick; no depende de el dato Z de los objetos hijos. Fijar los valores para ZTick fija esta caracterstica al manual.

138

Bibliografa y Referencias

[1] J. Garca Lpez, Manual de simulaciones

usando la plataforma de simulacin

MATLAB (manual que forma parte del Mdulo para desarrollo de prcticas de Procesamiento Digital de Seales, proyecto de investigacin del CITEDI-IPN), CITEDIIPN, Departamento de Posgrado, 1999-2000.

[2] J. Garca Lpez, Procesamiento Digital de Seales, (libro en proceso de publicacin por el Fondo de Cultura Econmica, Coleccin Ciencias de la Computacin), CITEDI-IPN, Departamento de Posgrado, 1999.

[3] The MathWorks Inc., Getting Started with MATLAB Version 5.x

[4] The MathWorks Inc., Using MATLAB Version 5.x

[5] The MathWorks Inc., Using MATLAB Graphics Version 5.x

[6] The MathWorks Inc., Manuales de las siguientes herramientas (toolboxes): Control, Fuzzy Logic, Signal Processing, Data Acquisition, Building GUIs in Matlab.

[7] Escuela Superior de Ingenieros Industriales Universidad de Navarra, Aprenda Matlab.

[8] Nakamura, Shoichiro, Anlisis numrico y visualizacin grfica con Matlab, Pearson Educacin

139

También podría gustarte