MATLAB

139
Matlab e Interfaces Gráficas Evento: CONATEC 2002 Sede: INSTITUTO TECNOLÓGICO DE CIUDAD MADERO Instructor: M. C. José Jaime Esqueda Elizondo Universidad Autónoma de Baja California, Unidad Tijuana Noviembre de 2002

Transcript of MATLAB

Matlab e Interfaces Gráficas

Evento:

CONATEC 2002

Sede:

INSTITUTO TECNOLÓGICO DE CIUDAD MADERO

Instructor:

M. C. José Jaime Esqueda Elizondo

Universidad Autónoma de Baja California, Unidad Tijuana

Noviembre de 2002

2

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 Números ..................................................................................................................12

II.1.2 Variables .................................................................................................................12

II.1.3 Operadores ..............................................................................................................13

II.1.4 Funciones ................................................................................................................13

II.1.5 Expresiones .............................................................................................................14

II.2 Generación de matrices ..............................................................................................14

II.3 Comandos save y load................................................................................................16

II.3.4 Concatenación .........................................................................................................17

III. Graficación en MATLAB y generación de secuencias discretas..............................18

III.1 Generación de secuencias discretas. .........................................................................19

III.2 Graficación en dos dimensiones. ..............................................................................20

III.3 Generación de gráficas en tres dimensiones ............................................................22

III.4 Generación de gráficas semilogarítmicas y logarítmicas. ........................................23

III.5 Graficación de matrices como superficies ................................................................24

IV. Simulación usando archivos –M...............................................................................26

IV.1 Scripts .......................................................................................................................26

IV.2 Funciones..................................................................................................................27

V. Graficación de objetos tridimensionales en MATLAB ................................................28

V.1 Rotación de objetos en el espacio tridimensional ......................................................28

VI.1.1 Rotor de un ventilador .......................................................................................29

VI.1.2 Avión .................................................................................................................31

VI. El toolbox de Adquisición de Datos (DAQ).............................................................35

VII.1 Hardware de adquisición de datos...........................................................................36

VII.2 El toolbox de adquisición de datos..........................................................................38

VII.3.1 Adquisición de datos ........................................................................................40

3

VII.3.2 Sacar datos........................................................................................................41

VII. Construcción de interfaces gráficas de usuario en Matlab........................................44

VII.1 Estructura de los gráficos en MATLAB..................................................................44

VII.1.1 Objetos gráficos 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 omisión ..................................................................................50

VII.3 Creación de objetos gráficos ...................................................................................50

VII.3.1 Opciones del comando uicontrol......................................................................51

VII.4 Menú de interfaz con el usuario ..............................................................................53

VII.5 Controles de la interfaz gráfica con el usuario ........................................................55

Texto estático (text) ......................................................................................................56

Menú desplegable (popup)............................................................................................57

Botón (push) .................................................................................................................57

Casilla de verificación (checkbox)................................................................................58

Botón de radio (radio)...................................................................................................58

Control deslizante (slider).............................................................................................59

Texto editable (edit)......................................................................................................60

Uso de varios ejes para graficación ..............................................................................61

4

¿Qué es MATLAB? MATLAB es un lenguaje de alto desempeño diseñado para realizar cálculos

técnicos. MATLAB integra el cálculo, la visualización y la programación en un ambiente

fácil de utilizar donde los problemas y las soluciones se expresan en una notación

matemática. MATLAB es un sistema interactivo cuyo elemento básico de datos es el

arreglo que no requiere de dimensionamiento previo. Esto permite resolver muchos

problemas computacionales, específicamente 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:

• Cálculos numéricos

• Desarrollo de algoritmos

• Modelado, simulación y prueba de prototipos

• Análisis de datos, exploración y visualización

• Graficación de datos con fines científicos o de ingeniería

• Desarrollo de aplicaciones que requieran de una interfaz gráfica de usuario (GUI,

Graphical User Interface).

En el ámbito académico y de investigación, es la herramienta estándar para los cursos

introductorios y avanzados de matemáticas, ingeniería e investigación. En la industria

MATLAB es la herramienta usada para el análisis, investigación y desarrollo de nuevos

productos tecnológicos.

La ventaja principal de MATLAB es el uso de familias de comandos de áreas

específicas llamadas toolboxes. Lo más importante para los usuarios de MATLAB es que

los toolboxes le permiten aprender y aplicar la teoría. Los toolboxes son grupos de

comandos de MATLAB (archivos M) que extienden el ambiente de MATLAB para

resolver problemas de áreas específicas de la ciencia e ingeniería. Por ejemplo, existen

toolboxes para las áreas de Procesamiento Digital de Señales, Sistemas de Control, Redes

Neuronales, Lógica Difusa, Wavelets, etc.

5

I.1 La ventana de comando. La ventana de comando es la ventana principal, con la cual el usuario interactúa 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 fácil y rápido a las operaciones más

comunes. Al colocar el puntero del ratón sobre algún botón durante un par de segundos,

MATLAB despliega un tooltip, el cual da el nombre del botón ha seleccionado. En la figura

I.2 se muestra la barra de herramientas y las opciones que contiene.

6

Figura I.2 La barra de herramientas y su descripción.

A través de la barra de menús se accede a las operaciones que no están disponibles en la

barra de herramientas. El menú principal es File, en el se encuentra la gran mayoría 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 opción Preferences permite fijar las opciones de despliegue de los resultados y de la

forma de operación de la ventana de comando. En la figura I.4 se muestra la ventana con la

que responde MATLAB al seleccionar la opción Preferences.

7

Figura I.4 Ventana desplegada por la opción 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.

8

Tabla I.1 Opciones de la ventana Preferences.

General Función

Numeric Format Determina el formato numérico por omisión 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 Desactiva el eco de los archivos M, es decir, no despliega mensajes.

Show Toolbar Muestra o esconde la barra de herramientas en la ventana de

comando.

Enable Graphical

Debugging

Al llegar a cada punto marcado (breakpoint), automáticamente

muestra el Debugger.

Command Window

Font

Especifica las características del tipo de letra para el texto que se

despliega en la ventana de comando.

Copying Options Especifica las opciones por omisión para copiar objetos de

MATLAB al portapapeles de Windows para pasar datos o gráficas a

otras aplicaciones.

I.2 Comandos principales En la Tabla I.2 se enlistan los comandos más comunes de la plataforma de simulación

MATLAB. Dentro de estos comandos se encuentran aquellos que realizan búsquedas, la

ayuda en línea, desplegar las variables presentes en el espacio de trabajo, entre otras.

9

Tabla I.2 Comandos más comunes de MATLAB

Comando Función

help Ayuda en línea. Despliega líneas de texto en la ventana de comando

conteniendo la descripción sobre un comando específico

helpwin Despliega una ventana con la descripción específica de un comando y

permite ver información sobre otros temas relacionados

lookfor Busca en la ayuda de todos los comandos la clave espeficada

helpdesk Realiza una búsqueda en hipertexto en un buscador Web proporcionando

un acceso directo a toda la documentación: PDFs, información sobre la

solución de problemas, etc

doc Despliega en un buscador Web la página de referencia para el comando

especificado, proporciona una descripción, referencias adicionales y

ejemplos del comando especificado

figure Crea una nueva gráfica

close Cierra una gráfica

who Despliega las variables presentes en el espacio de trabajo

whos Despliega las variables presentes en el espacio de trabajo en extenso.

which Indica la ruta en donde se encuentra la función especificada

cd Cambia la ruta al subdirectorio superior

pwd Despliega la ruta en donde se encuentra el directorio de trabajo actual

10

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 números. Las matrices

de 1x1 se conocen como escalares, y las matrices con una sola columna o renglón se

conocen como vectores. Estas matrices y/o vectores pueden contener datos tanto numéricos

como no numéricos.

Los datos pueden introducirse a MATLAB de diferentes maneras:

• como una lista explícita 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 paréntesis 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 línea 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

11

=

11415412679811105

132316

A

Respuesta. Teclear en la línea 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 3 2 13

5 10 11 8

9 6 7 12

4 15 14 1

Una vez que se he introducido la matriz en la línea de comando, esta permanece en

el espacio de trabajo, y para invocarla solo es necesario teclear A para referirse al arreglo de

números.

II.1 Expresiones en MATLAB MATLAB como cualquier lenguaje de programación proporciona expresiones

matemáticas, pero a diferencia de la mayoría de ellos, las expresiones matemáticas que

maneja involucran matrices completas.

Las expresiones se dividen en:

• Números

• Variables

• Operadores

• Funciones

12

II.1.1 Números MATLAB utiliza una notación decimal convencional con punto decimal opcional y el signo

menos para indicar números negativos. La notación científica utiliza la letra e para

especificar el factor de escala en potencias de 10. Los números imaginarios utilizan ya sea

la i o la j como sufijo. A continuación se presentan varios números permitidos.

Ejemplo. Números permitidos

3 –99 0.0001

9.6397238 1.60210e–20 6.02252e23

1i –3.14159j 3e5i

Todos los números se almacenan internamente usando el formato long especificado por el

estándar en punto flotante IEEE. Los números en punto flotante tienen una precisión finita

aproximadamente de 16 dígitos decimales y un rango finito aproximadamente de 10-308 a

10-308.

II.1.2 Variables MATLAB, a diferencia de la mayoría de los lenguajes de programación no requiere de

ningún tipo de declaraciones de tipo de datos (entero, punto flotante, complejos, etc) ni de

dimensionamiento. Cuando MATLAB encuentra una nueva variable, automáticamente crea

la variable y reserva la cantidad de localidades de memoria necesarias. Si la variable ya

existía dentro del espacio de trabajo actual, simplemente cambia el contenido, si se

requiere, o de ser necesario agrega más localidades de memoria a la variable para contener

más datos.

Ejemplo. Definición 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 mayúsculas y minúsculas; es decir A y a no son la

misma variable.

13

II.1.3 Operadores Las expresiones utilizan los operadores aritméticos comunes. Los operadores aritméticos

son los mismos que en cualquier lenguaje de programación y se sigue un orden de

evaluación similar al que se utiliza en los demás lenguajes de programación. En la Tabla

II.1 se muestran los operadores aritméticos más comunes en MATLAB.

Tabla II.1 Operadores aritméticos usados en MATLAB

Operador Operación matemática

+ Suma

- Resta

* Multiplicación

/ División

^ Potencia

‘ Transpuesta compleja conjugada

( ) Especifica el orden de evaluación

II.1.4 Funciones MATLAB proporciona un gran número de funciones matemáticas simples y avanzadas. La

gran mayoría de estas funciones acepta argumentos complejos. Las funciones más

comunes, como sqrt y sin son parte del núcleo de MATLAB y están programadas en bajo

nivel para hacerlas más eficientes y no es posible acceder a su código. El resto de las

funciones está programada en archivos M y su código está disponible para revisiones o

modificaciones.

Muchas funciones especiales proporcionan o requieren valores de constantes útiles.

MATLAB incorpora constantes matemáticas y cierta simbología, la cual se muestra en la

Tabla II.2.

14

Tabla II.2 Constantes y simbología incorporada en MATLAB.

Constante Significado

pi 3.14159265…

i Unidad imaginaria, 1−

j Igual que i

eps Precisión relativa en punto flotante, 2-52

realmin Número más pequeño representable en punto flotante, 2-1022

realmax Número más grande representable en punto flotante, (2-e) 21023

Inf Infinito

NaN No es un número

II.1.5 Expresiones A continuación se presentan algunos ejemplos de programación de expresiones

Ejemplo. Calcular:

( )2

51+=ρ

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

rho =

1.6180

Ejemplo. Calcular i43 +

»a = abs(3+4i)

a =

5

II.2 Generación de matrices Muchos de los comandos de MATLAB permiten generar vectores o matrices de datos de

algunas características. Por ejemplo, secuencias aleatorias con cierta distribución, escalones

15

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 básicas

Comando Función

Zeros Todos los elementos de la matriz son ceros

Ones Todos los elementos de la matriz son unos

Rand Genera una matriz con de elementos con distribución uniforme

Randn Genera una matriz con elementos con distribución 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 distribución 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.

16

Ejemplo. Generar una matriz de 4 x 4 con números aleatorios con distribución normal. »R = randn(4,4)

R =

-0.4326 -1.1465 0.3273 -0.5883

-1.6656 1.1909 0.1746 2.1832

0.1253 1.1892 -0.1867 -0.1364

0.2877 -0.0376 0.7258 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 también puede cargar archivos de texto que contengan

números (números en código ASCII, con extensión .dat)

Ejemplo: Generar una matriz de 4 x 4 con números aleatorios con distribución normal;

crear un archivo que la contenga y posteriormente cargarla en un espacio de trabajo vacío. » r=randn(4,4)

r =

0.4282 0.0403 -0.3775 0.1184

0.8956 0.6771 -0.2959 0.3148

0.7310 0.5689 -1.4751 1.4435

0.5779 -0.2556 -0.2340 -0.3510

» save datos r

» clear all

» load datos.mat

17

» who

Your variables are:

r

» r

r =

0.4282 0.0403 -0.3775 0.1184

0.8956 0.6771 -0.2959 0.3148

0.7310 0.5689 -1.4751 1.4435

0.5779 -0.2556 -0.2340 -0.3510

II.3.4 Concatenación La concatenación es el proceso de unir pequeñas matrices o vectores para crear otra matriz

o vector de mayor tamaño. Este proceso ya se ha usado en algunos de los ejemplos

anteriores al concatenar elementos individuales para formar vectores o matrices mediante el

operador concatenación, 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 2 3 4

5 6 7 8

Graficación en MATLAB y generación 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

graficación automáticamente 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 gráfica, borrando así la anterior. Generalmente la ventana actual es la última ventana

a la cual se le hizo clic con el ratón. Para referirse a una ventana generada anteriormente

solo es necesario teclear figure(x), donde x representa el número de identificación de la

ventana presente en la parte superior de la misma. En la Tabla III.1 se enlistan los

comandos básicos de graficación

Tabla III.1 Comandos básicos de graficación en dos y tres dimensiones.

Comando Función

Plot Crea una gráfica bidimensional continua con escala lineal en ambos ejes

Stem Crea una gráfica bidimensional muestreada con escala lineal en ambos ejes

plot3 Crea una gráfica tridimensional análoga a plot

stem3 Crea una gráfica tridimensional análoga a stem

Loglog Crea una gráfica bidimensional continua con escalas logarítmicas en ambos

ejes

Semilogx Crea una gráfica bidimensional continua con escala logarítmica en el eje x y

escala lineal en el eje y

Semilogy Crea una gráfica bidimensional continua con escala logarítmica en el eje y y

escala lineal en el eje x

Ejemplo. Generar una señal senoidal de amplitud unitaria » t=0:pi/100:2*pi;

» seno2=sin(t);

» figure

» plot(t,seno2)

19

III.1 Generación de secuencias discretas. Una señal continua x(t) se convierte a una señal discreta x(n) de la siguiente forma:

)()( nxtx ⇒

En la figura III.1 se muestra el proceso de conversión de una señal continua a una señal

discreta.

x(t)

t = nT

x(n)0 5 1 0 1 5 2 0 2 5 3 0 3 5

-1

-0. 8

-0. 6

-0. 4

-0. 2

0

0 .2

0 .4

0 .6

0 .8

1

0 5 10 15 20 25 30 35-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Figura III.1 Generación de secuencias discretas.

donde T = al periodo de muestreo y T

f m1= es la frecuencia de muestreo.

)2cos()( tfAtx s!"#Ω

⋅= π

)2cos()( nTfAnx s ⋅⋅= π

$

)2cos()( nff

Anx

f

m

s ⋅⋅= π

)2cos()( nfAnx ⋅⋅=!"#

ω

π

)cos()( nAnx ⋅= ω

donde:

Ω es la frecuencia analógica en radianes/seg

m

s

ff

f = es la frecuencia normalizada 5.0≤f

sf es la frecuencia de la señal en Hertz

sf⋅= πω 2 es la frecuencia digital en radianes

TΩ=ω es la frecuencia digital en radianes, πωπ ≤≤−

20

III.2 Graficación en dos dimensiones. Es posible generar gráficas 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 señal 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 gráfica mostrada en la figura III.2

0 5 10 15 20 25 30 35-3

-2

-1

0

1

2

3Grafica continua

Figura III.2. Gráfica de la señal contínua usando el comando plot.

» stem (n,xn)

» title ('Grafica continua');

21

5 10 15 20 25 30 35

-2

-1

0

1

2

3Grafica discreta

0-3

Figura III.3. Gráfica de la señal discreta generada con el comando stem.

Es posible graficar varias secuencias en la misma gráfica usando el comando plot. Esto se

muestra en el siguiente ejemplo.

Ejemplo. Generar una señal cosenoidal de 23 muestras de amplitud unitaria de 250 y una

señal senoidal del mismo número 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 demás comandos. MATLAB automáticamente asigna colores diferentes para

cada gráfica.

22

0 5 10 15 20 25 30 35-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Figura III.4 Graficación de dos secuencias en la misma figura usando el

comando plot.

III.3 Generación de gráficas en tres dimensiones La graficación en tres dimensiones es análoga a la graficación en dos dimensiones. Para el

caso tridimensional, se tienen los vectores x, y y z, entonces para generar la gráfica solo es

necesario teclear

» plot3(x,y,z)

Ejemplo. Generar una gráfica 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 límites de los ejes en una gráfica y la opción square fija

las coordenadas iguales en los tres ejes. En la figura III.5 se muestra la gráfica resultante.

23

-1-0.5

00.5

1

-1

-0.5

0

0.5

10

5

10

15

20

25

30

35

Figura III.5 Gráfica helicoidal resultante.

III.4 Generación de gráficas semilogarítmicas y logarítmicas. Los comandos semilogx, semilogy y loglog funcionan de manera similar al comando plot,

solo que usan una escala logarítmica y una lineal para los comandos semilogx y semilogy,

mientras que loglog utiliza ambas escalas logarítmicas.

Ejemplo. Graficar 100 muestras de la secuencia y = seno (0.2n) utilizando una escala

horizontal logarítmica. En la figura III.6 se muestra el resultado.

» n=0:1:99;

» seno=sin(0.2*n);

» semilogx(n,seno)

24

100 101 102-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Figura III.6 Gráfica semilogarítmica de y = seno (0.2*n).

III.5 Graficación 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 gráfica se forma al unir puntos adyacentes con

líneas rectas. Las gráficas de superficie son muy útiles para visualizar matrices demasiado

grandes para desplegarlas de forma numérica o graficarse en forma de funciones de dos

variables. Los comandos principales que realizan esta función son mesh y surf.

El comando mesh grafica mediante superficies delimitadas por líneas de color de acuerdo a

la posición en el eje z. El comando surf funciona de manera análoga, solo que además

despliega las caras de la superficie comprendida entre las líneas que forman la gráfica en

color. En la Tabla III.2 se mencionan estos comandos y otros más.

25

Tabla III.2 Comandos de graficación de tres dimensiones.

Comando Función

mesh, surf Genera gráficas de superficie

contour Genera gráficas de trazas de nivel

meshc, surfc Genera gráficas de superficie con trazas de nivel en el plano

inferior

pcolor Genera una gráfica plana de superficie en la cual el valor es

proporcional al color

surfl Genera una gráfica de superficie iluminada en una dirección

específica

surface Es una función de bajo nivel en la cual están basados los

comandos anteriores (excepto contour)

Ejercicio. Utilizar el comando peaks para observar el funcionamiento de los comandos de

graficación. El comando peaks es una función de dos variables resultante de desplazar y

escalar curvas de distribución gaussiana.

26

Simulación usando archivos –M

Los archivos que contienen el código de la plataforma de simulación 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 extensión .m. Estos archivos pueden crearse en cualquier editor de textos.

IV.1 Scripts Los scripts son la clase más 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 línea 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 cálculos.

Ejemplo. Teclee las siguientes líneas en el Editor/Debugger de MATLAB.

%Este archivo –M genera gráficas conocidas como “pétalos 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 líneas de este script basta teclear petalos en la línea

27

de comando. Después que el script despliegue una gráfica, presione la tecla Enter para dar

paso a la nueva gráfica. Una vez que termine la ejecución 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 líneas en el Editor/Debugger de MATLAB. Esta función

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); % Cálculo del promedio

La función PROMEDIO acepta un vector como argumento de entrada y regresa un solo

valor como argumento de salida. Para probar la función, teclear las siguientes líneas. »z = 1:99;

»promedio(z)

ans =

50

»y = promedio(z)

28

Graficación de objetos tridimensionales en MATLAB La creación de objetos tridimensionales complejos con una sola superficie o malla suele ser

difícil e ineficiente. Es más sencillo armar un objeto usando piezas que puedan crearse

fácilmente 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, serán necesarias operaciones de rotación, traslación y

cambio de escala de las coordenadas de cada pieza.

V.1 Rotación de objetos en el espacio tridimensional Transformación 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 ( )zyx ,, se convierten en:

a

a

a

zzzyyyxxx

+=+=+=

Cambio de escala. Si se cambia la escala en el sistema local por un factor de escala α, las

nuevas coordenadas en el sistema local serán:

zzyyxx

ααα

===

Rotación 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 serán:

θθθθ

coscos

zysenzzsenyy

xx

+=−=

=

Rotación 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 serán:

θθ

θθ

xsenzzyy

xzsenx

+==

+=

cos

cos

29

Rotación 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 serán:

zzyxsenyysenxx

=+=+=

θθθθ

coscos

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 = cosf.*y - sinf.*z;

zd = 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 sección se presenta el código para dibujar el rotor de un ventilador, el cual consiste

en un eje cilíndrico y seis aspas. En el listado que se da a continuación (fan_rot.m) se crea

una malla para una aspa mediante un arreglo de perfiles de sección, los cuales se calculan

con la función b_design, la cual se presenta primero.

function [thb,zb]=b_design

minz=-0.5;

30

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;

Código 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

31

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 Avión

En el segundo ejemplo, se dibuja un avión formado por cinco piezas. Primero se crea el

fuselaje con un arreglo de círculos . Con la función wing_2d se crea el ala, y la cola y el

estabilizador son copias del ala principal con cambios de escala, rotación y traslación.

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 :0.4;

length(yt);

32

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) -yc(i))/(-yfb(i) + yc(i));

b = (-yfb(i) +yc(i));

for j=1:jmax

y(i,j)=yr(j)*b+yc(i);

if th(j)<pi y(i,j)=yr(j)*b*a + yc(i); end

x(i,j)=xr(j)*b;

z(i,j)=xc(i);

33

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('Avión')

caxis([-2, 2])

colormap(hsv)

Código de la función que genera la información de las alas. function [zw,xw,yw] = wing_

% Genera los datos para dibujar las alas del avión

x=0:0.1:1;

n=length(x);

for k=1:30

for i=2:n-1

34

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])

35

El toolbox de Adquisición de Datos (DAQ) El toolbox de Adquisición de Datos (DAQ) le permite al usuario capturar y/o generar

señales reales e interactuar con ellas desde Matlab. De lo anterior, puede deducirse que un

sistema de adquisición de datos es un conjunto de software y hardware que permiten a un

sistema digital “conectarse” al mundo real. Un sistema de adquisición de datos típico está

formado de:

• Sensores y actuadores

• Hardware de adquisición de datos

• Hardware de acondicionamiento de señal

• Computadora o procesador

• Programa

En la figura VII.1 se muestra un sistema típico de adquisición de datos y posteriormente se

describe brevemente cada una de las etapas que forman el sistema típico de adquisición de

datos.

.

Proceso ofenómeno

físico

Proceso ofenómeno

físico

Sensor

Actuador

Hardware deAdquisición Computadora Programa

Acondicionamientode la señal

Acondicionamientode la señal

Figura VI.1 Sistema típico de adquisición de datos.

Sensores y actuadores (transductores)

A los sensores y actuadores también se les conoce como transductores. Transductor es

aquel elemento que convierte una señal de entrada de cierta naturaleza en una señal de

salida de otra naturaleza. Por ejemplo, un micrófono es un sensor que convierte energía

36

sonora (en forma de presión) en energía eléctrica, mientras que una bocina es un actuador

que convierte una señal eléctrica en una señal sonora.

Hardware de adquisición de datos

Es el corazón de cualquier sistema de adquisición de datos. Su función es convertir señales

analógicas provenientes del mundo real a señales digitales (convertidores analógico a

digital, ADC) y/o convertir señales digitales a analógicas (convertidores digital a analógico,

DAC).

Hardware de acondicionamiento de la señal

Generalmente las señales de los sensores son incompatibles con el hardware de adquisición

de datos; para lograr la compatibilidad se requiere acondicionar la señal. Por ejemplo, si la

señal es muy pequeña, es necesario amplificarla; por el contrario, si la señal es muy grande

se requiere atenuarla. También es muy común eliminar componentes de frecuencias

indeseables que se encuentran presentes en la señal a procesar. En el caso de las señales 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 adquisición de datos permite intercambiar información entre la computadora

y el hardware. Por ejemplo, los programas típicos permiten configurar la tasa de muestreo

de una tarjeta adquisitora de datos y adquirir un número predefinido de muestras.

VII.1 Hardware de adquisición de datos El hardware de adquisición de datos puede conectarse directamente a una ranura de

expansión en la computadora o conectarse a ella externamente a ella mediante cables y

37

algún puerto. En este caso, el hardware de adquisición de datos será la tarjeta de sonido de

la computadora.

De forma simple, el hardware de adquisición de datos se caracteriza por los subsistemas

que posee. Un subsistema es un componente del hardware de adquisición de datos que

ejecuta una tarea específica. Entre los subsistemas más comunes se encuentran:

• Entradas analógicas

• Salidas analógicas

• Entradas/Salidas digitales

• Contadores y temporizadores

Subsistemas de entradas analógicas

Estos subsistemas convierten (digitalizan) las señales analógicas 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 resolución (ADC). En este

caso, la entrada analógica se refiere a la entrada de micrófono de la tarjeta de sonido de la

PC.

Subsistemas de salidas analógicas

Estos subsistemas convierten datos digitales almacenados en la computadora en señales

reales analógicas. Las tarjetas de adquisición de datos comunes generalmente ofrecen dos

canales analógicos de salida de 12 bits de resolución (DAC). En este caso, la salida

analógica se refiere a la salida de bocinas (speakers) de la tarjeta de sonido de la PC.

Subsistemas de entrada/salida digital

Estos subsistemas están diseñados para manipular entradas y salidas digitales (niveles

lógicos) de y hacia el hardware. Estos valores generalmente se manejan como bits

individuales o líneas o como un puerto generalmente de ocho líneas o bits.

Subsistemas contador/temporizador

Se utilizan para contar eventos, para medir frecuencias, determinar períodos y generar

trenes de pulsos.

38

VII.2 El toolbox de adquisición de datos El toolbox de adquisición de datos se divide en tres componentes principales:

• Las funciones M establecidas

• El motor de adquisición de datos

• Los manejadores (drivers) de la tarjeta de adquisición de datos (en este caso, la de

sonido)

Como se muestra en la figura VII.2, estos componentes permiten intercambiar información

entre Matlab y el hardware de adquisición de datos.

MATLAB

Toolbox de aquisición de datos

Funciones M

Motor de Adquisicón de datos

Adaptador del Manejador de Hardware

Manejadorde Hardware

Hardware(Tarjeta)

Archivo en disco

Actuador

Sensor

Propiedades, datos y eventos

Datos y funciones interactivas

Figura VI.2 Componentes del toolbox de adquisición de datos

La figura anterior muestra como fluye la información de componente a componente. Esta

información consiste de:

Propiedades

Con el manejo de las propiedades es posible controlar el comportamiento de la aplicación.

Las propiedades contienen información sobre la configuración del hardware.

39

Datos

Pueden ser datos provenientes de un sensor conectado a un subsistema de entrada analógica

para ser almacenados en Matlab o también pueden ser datos de salida de Matlab a un

actuador conectado a un subsistema de salida analógica.

Eventos

Un evento ocurre en un tiempo particular una vez que ciertas condiciones se hayan

cumplido y se produzcan una o más acciones predeterminadas. Los eventos solo pueden

generarse después 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 número

predeterminado de ellos.

Funciones M

Para ejecutar cualquier tarea con la aplicación de adquisición 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 aplicación

• capturar datos o sacar datos

• configurar las propiedades

• evaluar el estado y los recursos del hardware de adquisición

El motor de adquisición de datos

El motor de adquisición de datos, o simplemente motor, es una librería de enlace dinámico

(dll) en forma de archivo MEX que:

• guarda los dispositivos de objetos y sus valores asociados de configuración que

controlan la aplicación de adquisición de datos

• controla la sincronización 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 análisis de los datos adquiridos. En otras palabras, el motor y Matlab son asíncronos.

40

El adaptador del manejador del hardware

El adaptador del manejador del hardware, o simplemente el manejador, es una interfaz

entre el motor de adquisición de datos y el manejador de la tarjeta. El propósito principal

del adaptador es pasar información entre Matlab y la tarjeta adquisitora a través 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 adquisición de datos.

Tabla VII.1 Tarjetas soportadas por el toolbox de adquisición de datos

Fabricante Nombre del adaptador

National Instruments nidaq

ComputerBoards cbi

Agilent Technologies hpel432

Tarjetas de sonido para Windows winsound

VII.3.1 Adquisición 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 analógico de entrada y

posteriormente se graficarán dichos datos.

1. Creación el dispositivo de objeto. Crear el objeto del canal analógico 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 adquisición. Cuando terminen de adquirir todos los datos,

‘ai’ automáticamente detiene la ejecución. start(ai)

41

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 analógico de salida.

1. Creación el dispositivo de objeto. Crear el objeto del canal analógico 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 adquisición. Crear un segundo de datps de salida y almacenarlos

en el motor para una eventual salida por el subsistema de salida analógico. Debe

almacenarse una columna de datos para cada canal añadido. n=0:1:88200;

data = sin(2*pi*n*1000/44100);

putdata(ao,[data’])

Iniciar la salida. Cuando todos los datos hayan salido, ‘ao’ automáticamente finaliza la

ejecución. start(ao)

Esta línea bloquea la línea 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.

42

delete(ao)

clear ao

A continuación se presenta un segundo ejemplo de adquisición y de envío 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 información general sobre el toolbox de adquisición de datos, teclear: »out = daqhwinfo

out =

ToolboxName: 'Data Acquisition Toolbox'

ToolboxVersion: [1x39 char]

43

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'

44

Construcción de interfaces gráficas de usuario en Matlab MATLAB permite desarrollar fácilmente un conjunto de pantallas (paneles) con botones,

menús, ventanas, etc., que permiten utilizar de manera muy simple programas realizados

dentro de este entorno. Este conjunto de herramientas se denomina interfaz gráfica de

usuario (GUI). Las posibilidades que ofrece MATLAB no son muy amplias, en

comparación a otras aplicaciones de Windows como Visual Basic, Visual C. La elaboración

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 opción consiste en utilizar la herramienta

de diseño de GUIs, incluida en el Matlab, llamada GUIDE. En esta sección se abordarán

ambas formas de crear CUIS. Para poder hacer programas que utilicen las capacidades

gráficas 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 gráficas o imágenes.

Mediante la GUI, el flujo de información está controlado por las acciones (eventos) que

sucedan en la interfaz. Comparando con los scripts, en estos los comandos están en un

orden preestablecido, mientras que en la GUI no lo están. 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 ejecución del script. La interacción con el usuario

continúa hasta que se cierra la GUI.

VII.1 Estructura de los gráficos en MATLAB Los gráficos de MATLAB tienen una estructura jerárquica formada por objetos de distintos

tipos. Esta jerarquía tiene forma de árbol, con el aspecto mostrado en la figura VIII.1.

45

PanelPantalla(screen)

Ventana 1(figure)

Ventana 2(figure)

Controles(uicontrol)

Ejes 1(axes)

Ejes 1(axes)

Menús(uimenu)

Texto(text)

Imagen(imagen)

Superficies(surfaces)

Líneas(lines)

Polígono(patch)

Fig VIII.1 Jerarquía gráfica en MATLAB

VII.1.1 Objetos gráficos en MATLAB

Según se muestra en la figura VIII.1, el objeto más general es la pantalla o panel (screen).

Dicho objeto es la raíz de todos los demás y sólo puede haber un objeto pantalla. Una

pantalla puede contener una o más ventanas (figures). A su vez cada una de las ventanas

puede tener uno o más ejes de coordenadas (axes) en los que se puede representar otros

objetos de más bajo nivel. Una ventana puede tener también controles (uicontrols) tales

como botones, barras de desplazamiento, botones de selección o de opción, etc.) y menús

(uimenus). Finalmente, los ejes pueden contener los cinco tipos de elementos gráficos que

permite MATLAB: líneas (line), polígonos (patch), superficies (surfacs), imágenes tipo

bitmap (image) y texto (text). La jerarquía 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 menús que están

por debajo. A su vez los elementos gráficos (líneas, polígonos, etc.) son hijos de un objeto

ejes, y no tienen otros objetos que sean sus hijos.

Cuando se borra un objeto de MATLAB automáticamente se borran todos los objetos que

son sus descendientes. Por ejemplo, al borrar unos ejes, se borran todas las líneas y

polígonos que son hijos suyos.

46

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 gráficos tienen muchos

objetos, en cuyo caso tienen múltiples handles. El objeto raíz (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 gráficos son

números 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 sólo una que es la

ventana activa. A su vez una ventana puede tener varios ejes, pero sólo 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 devuelve un entero, que es el handle de la ventana activa

gca devuelve el handle de los ejes activos

gco 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, ejecútense los siguientes comandos, observando la evolución 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 líneas y polígonos. Los comandos anteriores han abierto una ventana y dibujado sobre

ella dos líneas cruzadas y un triángulo de color verde.

47

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 omisión, que se utilizan siempre que el usuario no

indique otra cosa. Es posible cambiar las propiedades por omisión, y también devolverles

su valor original (llamado factory, por ser el valor por defecto con que salen de fábrica). 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 sólo 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 (sólo los nombres, sin los valores de las propiedades).

La función get(id) produce un listado de las propiedades y de sus valores. Como ejemplo,

siendo li1 el id de la primera línea 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

48

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 línea; las propiedades que tienen

un conjunto finito de valores presentan estos valores entre corchetes ([]) separados por

barras verticales (|). La opción por omisión 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

49

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 función

get(id,’propiedad’). » get(li1,'color')

ans =

0 0 1

Las propiedades de un objeto pueden ser cambiadas o modificadas (salvo que sean read-

only) con el comando set(id,’propiedad’,’valor’). Por ejemplo, para cambiar el color de la

segunda línea en el ejemplo anterior, teclear: » set(li1,'color','r')

Tecléense las siguientes líneas y obsérvese 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

apóstrofos seguidos de sus valores. Los ejemplos anteriores demuestran que es esencial

50

disponer de los id si se desea modificar un gráfico o utilizar propiedades distintas de las de

omisión.

Es posible también establecer las propiedades en el momento de la creación del objeto,

como en el ejemplo siguiente que crea una figura con fondo blanco: fig=figure('color','w')

VII.2.2 Propiedades por omisión

Anteponiendo la palabra Default al nombre de un objeto y de una propiedad se puede

acceder al valor por omisión de una propiedad, o para consultar su valor, o bien para

modificarlo. Por ejemplo, DefaultLineColor representa el color por defecto de una línea, y

DefaultFigureColor representa el color de fondo por omisión de las ventanas. Cambiando

un valor por omisión a un determinado nivel de la jerarquía de objetos se cambia ese valor

para todos los objetos que están 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 Creación de objetos gráficos MATLAB permite desarrollar programas con el aspecto típico de las aplicaciones de

Windows En esta sección se estudiará la forma de crear algunos de los controles más

utilizados. Para todos los controles, se utilizará la función 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 tendrán comillas sencillas (') a su izquierda y derecha, e irán seguidas de los

parámetros necesarios. En caso de que el conjunto de propiedades de un control exceda una

línea de código, es posible continuar en la línea siguiente, poniendo tres puntos seguidos

(…).

51

VII.3.1 Opciones del comando uicontrol

El comando uicontrol permite definir los controles gráficos de MATLAB descritos en la

siguiente sección. En esta sección se explican las distintas propiedades de uicontrol.

Color del fondo objeto (BackGroundColor)

Controla el color fondo del objeto. Por omisión este suele ser color gris claro, aunque puede

tomar diferentes colores, los cuales van definidos entre comillas simples; por ejemplo

('green').

Cadena de invocación (CallBack)

Este comando especifica la acción que va a ejecutar MATLAB al actuar sobre el control.

Puede ser una expresión, orden, serie de comandos , un script o una función M.

Control de Activado/Desactivado (Enable)

Este comando permite desactiva un control, de tal forma que una acción ejecutada sobre el

mismo no produzca ningún efecto. Los valores que toma son on y off.

Alineación horizontal del título (HorizontalAlignment)

Esta opción determina la posición del título del control en el mismo; los valores que acepta

son: left, right o center.

Valor máximo (Max)

Esta opción determina el máximo valor que puede tomar un valor cuando se utilizan cajas

de textos o botones de opción. 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 mínimo (Min)

Similar a la opción anterior, pero para el valor mínimo.

Control del objeto padre (Parent)

52

Esta opción especifica el id del objeto padre. Debe ir siempre en primer lugar.

Posición del objeto (Position)

En esta opción se determina la posición y el tamaño del control dentro del objeto padre.

Para ello se define un vector de cuatro elementos, cuyos valores siguen el siguiente orden:

[posición x, posición y, ancho, alturo]. Aquí posición x y posición 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 opción define el nombre que aparecerá en el control. Cuando el control sea una opción

de menú desplegable (popup menu), los nombres se sitúan en orden dentro del string,

separados por un carácter barra vertical (|).

Tipo de control (Style)

Esta opción puede tomar los siguientes valores: pushbutton, radiobutton, checkbox, slider,

edit, popupmenu y text, según 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 (centímetros), points (equivalente a 1/72 parte de una pulgada). La opción

por omisión es pixels.

Valor (Value)

Permite utilizar el valor que tiene del control en un momento dado. Por ejemplo, un botón

de chequeo (check button) puede tener dos tipos de valores, definidos por las variables Max

y Min. Según sea uno u otro el programa ejecutará una acción. La variable value permite

controlar dicho valor.

Visible (Visible)

53

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 además de quedar inhabilitado el control además

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 menús 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

opción, active otro menú en otro nivel.

Los menús 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 invocación') m1=uimenu (gcf, ... 'Label', 'Nombre del menú 2',... 'Position', [numero de prioridad (entero)], ... 'BackGroundColor', [r,g,b], ... 'CallBack', 'cadena de invocación') m1=uimenu (gcf, ... 'Label', 'Nombre del menú 3',... 'Position', [numero de prioridad (entero)], ... 'BackGroundColor', [r,g,b], ... 'CallBack', 'cadena de invocación')

A continuación se muestra el código de ejemplo guidm_1.m, el cual ilustra el uso de los

menús. 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],...

54

'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 menús. close, clear

fg=figure(1);

set(fg, 'Position',[100 100 350 350],...

55

'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 gráfica 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 menús de la interfaz con el usuario, aunque

los controles tienen más opciones. La sintaxis de uicontrol es: k=uicontrol('Style', 'especificación del estilo',... 'String', 'texto a desplegar',...

56

'Value', [valor],... 'BackgroundColor', [r,g,b],... 'Max', [valor],... 'Minx', [valor],... 'Position',[posición x, posición y, ancho, alto],... 'Callback', 'cadena de invocación')

donde ‘especificación de estilo’ puede ser una de las siguientes cadenas (opciones):

popup, push, radio, checkbox, slider, edit (texto editable), text (texto estático)

o frame.

Las propiedades de uicontrol son similares a las de uimenu.

Texto estático (text)

El texto estático puede exhibir símbolos, mensajes o incluso valores numéricos en una GUI

y puede colocarse en el lugar apropiado. Este control no tiene cadena de invocación. A

continuación se muestra un ejemplo del uso del texto estático. 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 numérico en texto estático') k1=uicontrol('Style','text',... 'String',num2str(pi),... 'Position',[ 20,10,140,30]);

El contenido de un texto estático puede modificarse utilizando el comando set. Por ejemplo,

teclee la siguiente línea 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]);

57

Menú desplegable (popup)

Estos menús desplegables difieren de los menús de interfaz con el usuario en que pueden

aparecer en cualquier punto del panel, mientras que los menús de interfaz con el usuario

solo se encuentran en la parte superior de la ventana. A continuación 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' ...

]);

Botón (push)

Los botones son pequeños objetos de la pantalla generalmente acompañados con texto. Al

presionar el botón con el ratón, se producirá una acción que será ejecutada por Matlab. A

continuación 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], ...

58

'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 verificación (checkbox)

Las casillas están diseñadas para realizar operaciones de encendido/apagado. En el

siguiente ejemplo se grafica una función senoidal y se crea una casilla de verificación

pequeña en la parte superior de la gráfica. La casilla activa o desactiva la aparición 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' ...

]);

Botón de radio (radio)

Cuando se usa un solo botón de radio, es igual que la casilla ve verificación. Sin embargo,

cuando se usan en grupo, estos son mutuamente exclusivos, es decir, si un botón de radio

59

esta encendido, los demás estarán apagados, mientras que las casillas de verificación son

independientes entre sí.

Control deslizante (slider)

Es un dispositivo que permite modificar un parámetro. 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 Demostración 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',...

60

'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 numéricos en forma de vector o matriz como una cadena mediante el mismo

dispositivo. La cadena de entrada puede convertirse a valores numéricos mediante la

instrucción str2num. A continuación 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', ...

61

'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 graficación

Generalmente es necesario desplegar varias gráficas dentro de una interfaz. El comando

axes abre un eje (gráfica) en un punto específico dentro de un panel. Primero se presenta un

ejemplo donde se abre un solo eje de graficación. 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))

62

La ubicación y tamaño 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 ubicación y el tamaño se modifican cambiando

los valores en los parámetros de posición.

La diferencia entre subplot y axes esta en que axes permite modificar libremente el

tamaño, ubicación y permite abrir ejes en posiciones específicas, 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 múltiples 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 Elaboración 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,

diseñadas para crear GUIs (Graphical User Interfaces) fácil y rápidamente dando

auxiliando en el diseño y presentacion de los controles de la interfaz, reduciendo la labor al

grado de seleccionar, tirar, arrastrar y personalizar propiedades.

63

Una vez que los controles están en posición se editan

las funciones de llamada (Callback) de cada uno de ellos,

escribiendo el código de MATLAB que se ejecutará cuando el

control sea utilizado. Siempre será difícil diseñar GUIs,

pero no debería ser difícil implementarlas. GUIDE esta

diseñado para ser menos tediosos el proceso de aplicación de

la interfaz grafica y obviamente para trabajar como

herramienta de trazado de GUIs, entre sus poderosos

componentes esta el editor de propiedades (property editor),

este se encuentra disponible cualquier momento que se esté

lidiando con los controles de MATLAB, el editor de

propiedades por separado se puede concebir como una

herramienta de trazado, y asistente de codificación (revisión

de nombres y valores de propiedades). Cuando se fusiona con

el panel de control, el editor de menú, y herramienta de

alineación, resulta una combinación que brinda inigualable

control de los gráficos 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 través del File opción New y por ultimo el GUI,

(como se muestra en la figura).

64

Otra de ellas consiste en buscar en el “Launch Pad” la

opción referente a Matlab, hacer clic en ella, con lo que

Matlab despliega las opciones que contiene, entre las que se

encuentra la opción “Guide (GUI Builder)”, tal como se

muestra en la figura.

La ventana principal de GUIDE es la siguiente:

65

Las Componentes principales de GUIDE son:

Barra de Menús: Aquí se encuentran las funciones elementales

de Edición de GUI’s.

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

Botón de ejecución (Run button ): Al presionarse de crea la figura de la interfaz

diseñada en el Layout Área.

Alineación de Componentes (Alignment tool): esta opción permite alinear los

componentes que se encuentra en el área de trabajo (Layout Área) de manera personalizada.

66

Propiedades del Inspector (Property Inspector): con esta opción 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 través de Object Browser se puede seleccionar los objetos.

Editor de Menús (Menú Editor): El redactor de Menú crea menús de ventana y menús 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 imágenes

67

Puede personalizar el GUIDE en la opción 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 OPERACIÓN CON GUI

Con una GUI, el flujo de computo esta controlado por las acciones en la interfaz.

Mientras que en un guión 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 guión, la interfaz imboca el guión que se ejecute, mientras la interfaz del usuario

permanece en la pantalla aunque no se haya completado la ejecución del guión.

En la figura 1 se muestra el concepto básico de la operación del software con una

GUI. Cuando se interactua con un control, el programa registra el valor de esa opción y

68

ejecuta los comandos prescritas en la cadena de invocación. Los menús de interfaz con el

usuario, los botones, los menús desplegables, los controladores deslizantes y el texto

editable son dispositivos que controlan las operaciones del software. Al completarse la

ejecución de las instrucciones de la cadena de invocación, el control vuelve a la interfaz

para que puedan elegirse otra opción 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 función. Es recomendable utilizar llamadas a funciones, sobre todo cuando se

requieren de mas de unos cuantos comandos en la invocación.

DIAGRAMA 1 Flujo de opciones de GUI

69

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 básicos de una GUI

a través de ejemplos. Los lectores que deseen información 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 menús 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 ratón y se muestra una lista de opciones siguiente

figura. Cuando se elige una opción de la lista, es posible que se desenrolle otro nivel de

menús (si el menú se diseño para ello).

Los menus de interfaz con el usuario se especifican con uimenu, cuya sintaxis es la

siguiente:

m1 = uimenu (gcf, ...

‘Label’, ‘cadena de rótulos 1’, ...

‘Position’ [números de prioridad (entero)], ...

‘Backgroundcolor’ [r, g, b], ...

‘CallBack’ ‘ cadena de invocación’)

70

m2 = uimenu (gcf, ...

‘Label’, ‘cadena de rótulos 2’, ...

‘Position’ [números de prioridad (entero)], ...

‘Backgroundcolor’ [r, g, b], ...

‘CallBack’ ‘ cadena de invocación’)

m3 = uimenu (gcf, ...

‘Label’, ‘cadena de rótulos 1’, ...

‘Position’ [números de prioridad (entero)], ...

‘Backgroundcolor’ [r, g, b], ...

‘CallBack’ ‘ cadena de invocación’)

Aquí se esta suponiendo que hay tres menús en una ventana de figura. En los

comandos, m1 m2, ... son mangos (get) de los menús 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:

a) ‘Label’, ‘cadena de rótulos especifica el rotulo que aparecerá en el menú.

b) ‘Position’, k determina la posición 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 invocación’ especifica los comandos que se ejecutan

cuando se selecciona el rotulo.

En la sintaxis anterior es posible omitir las líneas correspondientes a positicion y

backgroundcolor si son aceptable los valores por omisión. Además, callBack no es

necesario cuando el menú va seguido de una lista de opciones que se abre cuando se hace

clic en el menú.

También podemos especificar otras opciones; sin embargo, la mejor forma de

aprenderlas es ejecutando el comando get (mango) después de ejecutarse el comando

uimenu, donde mango deber ser como m1 o m2 de la explicación de la sintaxis anterior. El

71

comando get (mango) devuelve las propiedades actuales del menú, que en su mayoría se

establecen por omisión pero que pueden modificarse en los argumentos del enunciado del

comando uimenu.

Si una opción del menú tiene subopciones, estas también 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 invocación’)

m1sB = uimenu (m1, ...

‘Label’, ‘opcion B’, ...

‘CallBack’ ‘ cadena de invocación’)

m1sC = uimenu (m1, ...

‘Label’, ‘opcion C’, ...

‘CallBack’ ‘ cadena de invocación’)

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 invocación es una cadena que consiste en un comando, un conjunto de

ordenes o una llamada de función. En esta cadena se especifican todas las tareas de

computo que deben ejecutarse al elegirse la opción. Las instrucciones pueden ser un solo

comando o varios; sin embargo, a fin de simplificar la programación es recomendable no

escribir mas de unos cuantos comandos o más de una llamada de función en la cadena de

invocación. Todos los detalles de los cálculos se pueden escribir en un archivo M.

72

Nota: el archivo M puede o no ser de función. En cualquier caso, ‘cadena de invocación’ es

remplazado por ‘nombre del archivo M’ la diferencia entre utilizar un archivo M de

función y uno no de función es la siguiente. Si se emplea un archivo M de función, es

necesario proporcionar como argumentos las variables necesarias para el archivo M de

función, pues de lo contrario este no podría ver las variables del archivo M que invoca. Por

otro lado, si se utiliza un archivo M no de función, todas las variables del archivo M

invocado estarán 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 común con los menús 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 ‘especificación de estilo’ es una de las siguientes cadenas:

popup

push

radio

checkbox

slider

edit (texto editable)

text (texto estático) frame

73

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 omisión 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 mínimo y el máximo.

b) ‘Min’, Valor: establece el valor mínimo. Su significado difiere dependiendo del

estilo.

c) ‘Max’, Valor: establece el valor máximo. Su significado difiere dependiendo del

estilo.

Hay muchas más propiedades que pueden incluirse en los comandos de uicontrol, tal

como sucede con las propiedades de uimenu, aunque al programar conviene minimizar el

número de propiedades a fin de simplificar el guión. Si se desea saber mas acerca de las

propiedades adicionales, investigue utilizando el comando get.

Texto estático. Un static text puede exhibir símbolos, mensajes o

incluso valores numéricos de una GUI, y puede colocarse en lugar deseado. El texto

estático no tiene cadenas de invocación. A continuación mostramos un ejemplo de texto

estático.

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

74

Menú desplegable. Los pop-up menús difieren de los menús de

interfaz con el usuario en que pueden aparecer en cualquier punto de la ventana de

figura, mientras que los menús de interfaz con el usuario solo se localizan en la parte

superior.

Los Push button generan una acción cuando das click con el puntero

del ratón sobre ellos. Cuando usted da click en un push button, aparece presionado;

Cuando sueltas el botón del ratón, el botón aparece levantado; y su rutina de llamada se

ejecuta.

Casilla de verificación. Las casillas de verificación están diseñadas

para realizar operaciones de encendido/apagado. La casilla activa o desactiva la

aparición 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 invocación.

Botón de radio. Cuando solo se usa un botón de radio, no existe

diferencia funcional alguna con respecto a una casilla de verificación. Por otro lado, los

botones de radio en grupo son mutuamente exclusivos (es decir, si un botón esta

encendido, todos los demás botones se apagan), mientras que las casillas de verificación

son independientes entre sí. Sin embargo, esta características exclusiva de los botones

de radio sólo puede implementarse mediante la programación del usuario en la cadena

de invocación.

75

Barra deslizadora. Los sliders aceptan datos de entrada numéricos con un

rango especifico. Los usuarios mueven la barra dejando presionado el botón del mouse y

arrastrándola, Dando click en el canal, en la flecha. La posición 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 numéricos en forma de

vector o matriz como cadena mediante el mismo dispositivo; esta cadena se convertirá

posteriormente en valores numéricos 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 verificación.

Botón de palanca. El toggle button genera una acción 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.

76

Cajas de lista. El componente List Box muestra una lista de artículos y

permite a usuarios seleccionar unos o más artículos.

EJES MÚLTIPLES

Al crear una interfaz con el usuario, a menudo hay necesidad de trazar una o más gráficas

dentro de la interfaz. Podemos usar el comando subplot para este fin, pero el comando

axes es más flexible y ofrece opciones versátiles 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.

77

Practicando con GUIDE

Una vez ya conocidas las herramientas de GUIDE es conveniente que empecemos a

usarlas. Como primera práctica 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 línea 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 1’s 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 rectángulos del control y estirelo.

O También:

Propiedad: “Position ! Width” Nuevo Valor: “20”.

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

78

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 avisándole 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 modificación en la figura o en el archivo-M.

8.- Ahora Crearemos una función que al presionar Enter o una vez ya activo el control y

presionemos fuera de el, se llame. Este evento invocará a la función “Callback”. Coloque

el mouse sobre el control, presione el botón derecho, Expanda “View Callbacks” y escoja

“Callback”. Entonces aparecerá la ventana de edición de archivos-M.

Estará ya colocado en la línea de la función 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>)

79

Escriba el siguiente código:

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 botón 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.

80

Ordénelos de la Siguiente manera.

Nota: Para Hacer que luzcan ordenadamente los objetos le recomendamos alinearlos, a

través de la herramienta Align Objects , seleccione los objetos y seleccione la

configuración que se muestra:

12.- Agreguemos código 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 función de llamado “CallBack” del slider y escriba el siguiente código:

value = get(h,'value');

set(handles.edit2,'string',value);

81

Vaya a la function de llamado “ButtonDownFcn” del edit text y y escriba el siguiente

código:

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”

Propiedad: “SliderStep ! x” Nuevo Valor: “0.001”

Propiedad: “SliderStep ! y” Nuevo Valor: “0.01”

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 milésima se indico el valor 0.001 y el cambio de y

es de un centésima se indico el valor de 0.01.

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

82

Propiedad: “String” Nuevo Valor: “Lema”

Propiedad: “Position ! Width” Nuevo Valor: “15”

16.- Escriba en la función de llamado Callback del Push Botton, el siguiente código.

Warndlg ('Por la Superación Plena del Hombre..!','Lema de la UABC')

17.- Ejecute la GUI. Y Presione el botón.

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”

Propiedad: “Position ! Width” Nuevo Valor: “20”

Control: pushbutton1

Propiedad: “Enable” Nuevo Valor: “off”

Ordene los controles para que luzcan así:

83

19.- Escriba el siguiente código en la función 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 código 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”

Propiedad: “Position ! Width” Nuevo Valor: “20”

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

84

22.- Escribamos el siguiente código en la función 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” *

Propiedad: “Position ! Width” Nuevo Valor: “20”

85

Propiedad: “BackgroundColor ! red, green, blue” Nuevo Valor: “1, 1, 1”

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

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.

86

27.- Hará una lista de números selecionables a través 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” Nuevo Valor: “1 al 10”

Propiedad: “Value” 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.

87

28.- Es necesario considerar que al utilizar los radio botton en MatLab uno debe actualizar

en código 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 código a las funciones callback del los tres

radio botton.

Control: radiobutton1

Función: 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

Función: Callback

serie = 100:1:200;

set(handles.listbox1,'string',serie)

88

set(handles.radiobutton1,'value',0)

set(handles.radiobutton2,'value',1)

set(handles.radiobutton3,'value',0)

Control: radiobutton3

Función: 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

código a la función 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 ocasión si tendrá datos iniciales

89

31.- Implementaremos menús para la interfaz a través de Menú Editor . Llamémoslo

presionando el icono en la barra de herramientas. Una vez abierto crearemos un menú

llamada Archivo, los menús principales se crean presionando el boton y los submenús

con . Con las flechas movemos la posición de los menús . Las

propiedades de los UIMenu son Label que es el mensaje a mostrar, Tag la etiqueta de

identificación, 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

función.

Creer el siguiente árbol de menús con su respectivo efecto

90

32.- Menú Editor no da soporte creando la función 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á automáticamente el

nombre de las función 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 código:

delete(gcf)

33.- Compruebe que se cierra la figura.

34.- Agregue las siguientes instrucciones de una línea en los Callback’s de los menús

correspondientes:

Menú: Copiar al portapapeles

Callback: print –dbitmap

Menú: Archivo TIF…

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

91

31.- Por Ultimo Agregaremos un mensaje de despedida, que será desplegado al momento

de cerrar la figura. Esto se lograra a través de la función de llamado DeleteFcn del objeto

figura, se llega a el dando clic derecho sobre el área de trabajo.

En esa función escriba:

msgbox('Buena Suerte..','Despedida','help')

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

92

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” Nuevo Valor: “Plano Izquierdo”

Propiedad: “Value” 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”.

93

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

94

2.- Escriba el siguiente código 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);

95

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.

96

Nota: Los axes se manipulan de igual manera que en los archivos-m, solo indique que eje

es el destino de sus comandos antes.

97

Bibliografía y Referencias

[1] J. García López, “Manual de simulaciones usando la plataforma de simulación

MATLAB” (manual que forma parte del “Módulo para desarrollo de prácticas de

Procesamiento Digital de Señales”, proyecto de investigación del CITEDI-IPN), CITEDI-

IPN, Departamento de Posgrado, 1999-2000.

[2] J. García López, “Procesamiento Digital de Señales”, (libro en proceso de publicación

por el Fondo de Cultura Económica, Colección Ciencias de la Computación), 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, “Análisis numérico y visualización gráfica con Matlab”, Pearson

Educación

98

APENDICE.

UICONTROLS

BackgroundColor

El color usado para rellenar el rectángulo de unicontrol. Específica 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 configuración del sistema

BusyAction

Interrupción 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 después 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 botón del mouse mientras el

cursor esta en un unicontrol. Cuando la propiedad enable del unicontrol esta desactivada, el

99

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 tamaño y la posición.

Esta rutina se define como una cadena(string) que es una expresión valida en Matlab o el nombre de un archivo M (M-file). La expresión 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 botón Callback

Controla la acción. Una rutina que se ejecuta cuando se activa un objeto de la clase uicontrol. Define esta rutina como una cadena. La expresión se ejecuta en el espacio de trabajo de Matlab. Para ejecutarla rutina para un control de texto editable, escribe el texto deseado y después sigue uno de los siguientes pasos: -Mueve la selección del objeto (da click en cualquier otra parte) -Para un texto editable de una sola línea, 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 acción 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 están disponibles para la rutina de llamada.

100

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

tamaño de objetos usando la rutina de llamada ButtonDownFcn

Extent

Tamaño de un caracter cadena uicontrol. Un vector de cuatro elementos que define el tamaño y la posicion de un caracter de tipo cadena usado para etiquetar el uicontrol. Tiene la forma: [0, 0, width,height]

101

Los dos primeros elementos siempre son cero. width (ancho) y height (alto) son las

dimenciones del rectángulo. 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 tamaño 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

Tamaño de la fuente. Un numero que especifica el tamaño de la fuente que va a ser

mostrado en la cadena, in unidades determinadas por la propiedad FontUnits. El tamaño

por default es dependiente del sistema.

102

FontUnits

Unidades del tamaño 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 tamaño 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

103

necesario cuando una rutina de llamada invoca a una funcion que puede dañar 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.

104

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.

105

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 lineas de entrada. Si Max - Min <= 1, entonces el editable text solo aceptan

una linea 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 pequeño 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 lineas de entrada. Si Max - Min <= 1, entonces el editable text solo aceptan

una linea 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

106

- 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

Tamaño y posicion de un uicontrol. El rectangulo definido por esta propiedad especifica el

tamaño 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 tamaño 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.

107

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 tamaño 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

108

Nota: que si el tamaño 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.

109

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

110

- 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

111

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 después 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 tamaño y la posición.

112

Esta rutina se define como una cadena(string) que es una expresión valida en Matlab o el

nombre de un archivo M (M-file). La expresión 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.

113

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

114

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 dañar 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

115

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

116

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

117

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 después 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

118

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.

119

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

necesario cuando una rutina de llamada invoca a una funcion que puede dañar 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

120

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

121

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.

122

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 expresión valida en Matlab o el

nombre de un archivo M (M-file). La expresión se ejecuta en el espacio de trabajo de

matlab.

123

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.

124

CameraViewAngle

El campo de vista. esta propiedad Determina el campo de vista de la camara. Cambiando

este valor afecta el tamaño 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 pequeño 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 cómo 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.

125

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 atrás hacia adelante respecto a la visión 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 más rápidamente la representación.

FontAngle

Inclinación 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' )

126

FontSize

Tamaño de la fuente. Un numero que especifica el tamaño de la fuente que va a ser

mostrado en la cadena, in unidades determinadas por la propiedad FontUnits. El tamaño

por default es dependiente del sistema.

FontUnits

Unidades del tamaño 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

127

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 dañar 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 característica 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 característica 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.

128

El fijar interrumpible a encendido permite que la rutina del servicio repetido de cualquier

objeto de los gráficos interrumpa las rutinas del servicio repetido que originan de una

característica de los ejes. Observe que Matlab no ahorra el estado de las variables o de la

exhibición cuando ocurre una interrupción.

Layer

Dibuja las líneas de ejes debajo o sobre objetos gráficos. Esta característica determina si las

lineas de los ejes y las marcas de la señal 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 líneas de rejilla y

marcas de la señal encima de imágenes.

LineStyleOrder

Orden del estilo de la línea de los ejes. Una cadena que especifica estilos de la línea en el

orden que se usan para trazar líneas múltiples en los ejes.

LineWidth

Ancho de las lineas de los ejes x, y, y z.

El ancho, en puntos, de las líneas que representan cada eje. La anchura de la línea de la por

omisión es 0,5 puntos.

NextPlot

Manipulación 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.

129

Position

Tamaño 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 dirección de la marca de la señal

- in – las marcas de la señal se dirige hacia adentro de las líneas del eje

- out - las marcas de la señal se dirige hacia afuera de las líneas del eje

TickLength Tamaño de la marca de la señal. Un vector de dos elementos [2Dlength 3Dlength] que

especifica el tamaño de la marca de la señal. Donde:

2Dlength es la longitud de las marcas de la señal usadas para las vistas de dos

dimensiones.

3Dlength es la longitud de las marcas de la señal 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

130

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 exhibición para el eje x ,las marcas de la señal,las

etiquetas de la marca de la señal, y las lineas de las rejillas.

131

Xdir

Dirección 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 señal

- off - No dibuja lineas

Xlabel El identificador del objeto de texto usado para etiquetar el eje X. Primero cree el objeto del

texto para después obtener el identificador. La declaración 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 posición correcta para el eje X.

Xlim

Límites del eje X. Un vector del dos-elemento [ xmax xmin ] que especifica los valores

mínimos y máximos del eje X, donde el xmin es el valor mínimo del eje X. Y xmax es el

valor máximo. El valor por defecto para XLim es [ 0 1 ].

XlimMode Modo de los límites del eje X.

- auto - Matlab calcula los límites del eje X (XLim) que palmo el XData de los

hijos de los ejes y produce números redondeados para los límites de el eje

X

- manual - Matlab tomas de los límites del eje X de XLim; los límites no

132

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

característica en manual.

Xscale Escala de los ejes X.

- Linear – Escala linear

- Log – Escala logarítmica

Xtick Espaciamiento de la marca de la señal del eje X. Un vector de los valores que corresponden

a los valores de los datos X en cuál usted desea poner marcas de la señal. Si usted no desea

las marcas de la señal exhibidas, Asigne XTick el vector vacío, [ ].

XtickLabel Etiquetas de la marca de la señal del eje X. Una matriz de las cadenas a utilizar como

etiquetas para las marcas de la señal a lo largo del eje X. Estas etiquetas sustituyen las

etiquetas numéricas generadas por MATLAB. Si usted no especifica suficientes etiquetas

del texto para todas las marcas de la señal, MATLAB utiliza todas las etiquetas

especificadas, y después etiqueta las marcas restantes de la señal reutilizando las etiquetas

especificadas. El comando

set(gca,'XTickLabels',['Old Data';'New Data'])

etiqueta las primeras dos marcas de la señal en el eje X Old Data (datos viejos) y New Data

(nuevos datos ) respectivamente. Cada cadena de caracteres debe tener un número igual de

caracteres debido a la manera que MATLAB almacena las cadenas. Esta característica no

controla el número de las marcas de la señal o sus localizaciones.

XtickLabelMode Modo de etiquetas de la marca de la señal del eje X

133

- auto - MATLAB calcula las etiquetas de la señal del eje X (XTickLabels) que

expande el dato X de los hijos de los ejes.

- manual - MATLAB toma etiquetas de la señal del eje X de XTickLabels; no

depende del dato X en los objetos de los niños. asignarle valores a XTickLabels

fija esta característica en manual.

XtickMode Modo de la marca de la señal del eje X.

- auto – Matlab calcula el espaciamiento de la marca de la señal 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

característica 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 exhibición para el

eje x ,las marcas de la señal,las etiquetas de la marca de la señal, y las lineas de las rejillas.

Ydir

Dirección 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 señal

- off - No dibuja lineas

134

Ylabel El identificador del objeto de texto usado para etiquetar el eje Y. Primero cree el objeto del

texto para después obtener el identificador. La declaración 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 posición correcta para el eje Y.

Ylim

Límites del eje Y. Un vector del dos-elemento [ xmax xmin ] que especifica los valores

mínimos y máximos del eje Y, donde el xmin es el valor mínimo del eje Y. Y xmax es el

valor máximo. El valor por defecto para YLim es [ 0 1 ].

YlimMode Modo de los límites del eje Y.

- auto - Matlab calcula los límites del eje Y (YLim) que palmo el YData de los

hijos de los ejes y produce números redondeados para los límites de el eje

Y

- manual - Matlab tomas de los límites del eje Y de YLim; los límites no

dependen del YData en los objetos hijos. Fijar los valores para YLim pone esta

característica en manual.

Yscale Escala de los ejes Y.

- Linear – Escala linear

- Log – Escala logarítmica

135

Ytick Espaciamiento de la marca de la señal del eje Y. Un vector de los valores que corresponden

a los valores de los datos Y en cuál usted desea poner marcas de la señal. Si usted no desea

las marcas de la señal exhibidas, Asigne YTick el vector vacío, [ ].

YtickLabel Etiquetas de la marca de la señal del eje Y. Una matriz de las cadenas a utilizar como

etiquetas para las marcas de la señal a lo largo del eje Y. Estas etiquetas sustituyen las

etiquetas numéricas generadas por MATLAB. Si usted no especifica suficientes etiquetas

del texto para todas las marcas de la señal, MATLAB utiliza todas las etiquetas

especificadas, y después etiqueta las marcas restantes de la señal reutilizando las etiquetas

especificadas. El comando

set(gca,'YTickLabels',['Old Data';'New Data'])

etiqueta las primeras dos marcas de la señal en el eje Y Old Data (datos viejos) y New Data

(nuevos datos ) respectivamente. Cada cadena de caracteres debe tener un número igual de

caracteres debido a la manera que MATLAB almacena las cadenas. Esta característica no

controla el número de las marcas de la señal o sus localizaciones.

YtickLabelMode Modo de etiquetas de la marca de la señal del eje Y

- auto - MATLAB calcula las etiquetas de la señal del eje Y (YTickLabels) que

expande el dato Y de los hijos de los ejes.

- manual - MATLAB toma etiquetas de la señal del eje Y de YTickLabels; no

depende del dato Y en los objetos de los niños. asignarle valores a YTickLabels

fija esta característica en manual.

136

YtickMode Modo de la marca de la señal del eje Y.

- auto – Matlab calcula el espaciamiento de la marca de la señal 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

característica 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 exhibición para el eje x ,las marcas de la señal,las

etiquetas de la marca de la señal, y las lineas de las rejillas.

Zdir

Dirección 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 señal

- off - No dibuja lineas

Zlabel El identificador del objeto de texto usado para etiquetar el eje Z. Primero cree el objeto del

texto para después obtener el identificador. La declaración siguiente realiza ambos pasos:

137

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 posición correcta para el eje Z.

Zlim

Límites del eje Z. Un vector del dos-elemento [ xmax xmin ] que especifica los valores

mínimos y máximos del eje Z, donde el xmin es el valor mínimo del eje Z. Y xmax es el

valor máximo. El valor por defecto para ZLim es [ 0 1 ].

ZlimMode Modo de los límites del eje Z.

- auto - Matlab calcula los límites del eje Z (ZLim) que palmo el ZData de los

hijos de los ejes y produce números redondeados para los límites de el eje

Z

- manual - Matlab tomas de los límites del eje Z de ZLim; los límites no

dependen del ZData en los objetos hijos. Fijar los valores para ZLim pone esta

característica en manual.

Zscale Escala de los ejes Z.

- Linear – Escala linear

- Log – Escala logarítmica

Ztick Espaciamiento de la marca de la señal del eje Z. Un vector de los valores que corresponden

a los valores de los datos Z en cuál usted desea poner marcas de la señal. Si usted no desea

las marcas de la señal exhibidas, Asigne ZTick el vector vacío, [ ].

138

ZtickLabel Etiquetas de la marca de la señal del eje Z. Una matriz de las cadenas a utilizar como

etiquetas para las marcas de la señal a lo largo del eje Z. Estas etiquetas sustituyen las

etiquetas numéricas generadas por MATLAB. Si usted no especifica suficientes etiquetas

del texto para todas las marcas de la señal, MATLAB utiliza todas las etiquetas

especificadas, y después etiqueta las marcas restantes de la señal reutilizando las etiquetas

especificadas. El comando

set(gca,'ZTickLabels',['Old Data';'New Data'])

etiqueta las primeras dos marcas de la señal en el eje Z Old Data (datos viejos) y New Data

(nuevos datos ) respectivamente. Cada cadena de caracteres debe tener un número igual de

caracteres debido a la manera que MATLAB almacena las cadenas. Esta característica no

controla el número de las marcas de la señal o sus localizaciones.

ZtickLabelMode Modo de etiquetas de la marca de la señal del eje Z

- auto - MATLAB calcula las etiquetas de la señal del eje Z (ZTickLabels) que

expande el dato Z de los hijos de los ejes.

- manual - MATLAB toma etiquetas de la señal del eje Z de ZTickLabels; no

depende del dato Z en los objetos de los niños. asignarle valores a ZTickLabels

fija esta característica en manual.

ZtickMode Modo de la marca de la señal del eje Z.

- auto – Matlab calcula el espaciamiento de la marca de la señal 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

característica al manual.

139

Bibliografía y Referencias

[1] J. García López, “Manual de simulaciones usando la plataforma de simulación

MATLAB” (manual que forma parte del “Módulo para desarrollo de prácticas de

Procesamiento Digital de Señales”, proyecto de investigación del CITEDI-IPN), CITEDI-

IPN, Departamento de Posgrado, 1999-2000.

[2] J. García López, “Procesamiento Digital de Señales”, (libro en proceso de publicación

por el Fondo de Cultura Económica, Colección Ciencias de la Computación), 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, “Análisis numérico y visualización gráfica con Matlab”, Pearson

Educación