Professional Documents
Culture Documents
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
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
2
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
3
¿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.
4
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.
5
Figura I.2 La barra de herramientas y su descripción.
6
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.
7
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 Al llegar a cada punto marcado (breakpoint), automáticamente
Debugging muestra el Debugger.
Command Window Especifica las características del tipo de letra para el texto que se
Font 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.
8
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
9
Escalares, vectores y matrices
10
16 3 2 13
5 10 11 8
A=
9 7 6 12
4 15 14 1
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]
11
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.
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.
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.
12
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.
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.
13
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:
ρ=
(1 + 5 )
2
Es necesario teclear:
»rho = (1+sqrt(5))/2
rho =
1.6180
Ejemplo. Calcular 3 + 4i
»a = abs(3+4i)
a =
5
14
unitarios, matrices o vectores cero, etc. En la Tabla II.3 se muestran algunos comandos que
generan matrices.
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
15
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
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
16
» 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
17
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
0.8
0 .8
0.6
0 .6
0 .4
0 .2
t = nT 0.4
0.2
0 0
- 0. 2 -0 .2
- 0. 4
- 0. 6
x(t) x(n) -0 .4
-0 .6
- 0. 8
-0 .8
-1
0 5 10 15 20 25 30 35 -1
0 5 10 15 20 25 30 35
x(n) = A cos(2π ⋅ f s ⋅ nT )
fs
x(n) = A cos(2π ⋅ ⋅ n)
fm
$
f
x(n) = A cos(2π ⋅ f ⋅ n)
#"!
ω
x(n) = A cos(ω ⋅ n)
donde:
Ω es la frecuencia analógica en radianes/seg
fs
f = es la frecuencia normalizada f ≤ 0.5
fm
19
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
Grafica continua
3
-1
-2
-3
0 5 10 15 20 25 30 35
» stem (n,xn)
» title ('Grafica continua');
20
Grafica discreta
3
-1
-2
-3
0 5 10 15 20 25 30 35
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)
21
1
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
0 5 10 15 20 25 30 35
» plot3(x,y,z)
» 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.
22
35
30
25
20
15
10
0
1
0.5 1
0.5
0
0
-0.5
-0.5
-1 -1
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)
23
1
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
0 1 2
10 10 10
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.
24
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)
25
Simulación usando archivos –M
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.
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
26
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.
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
27
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.
x = x + xa
y = y + ya
z = z + za
Cambio de escala. Si se cambia la escala en el sistema local por un factor de escala α, las
nuevas coordenadas en el sistema local serán:
x = αx
y = αy
z = αz
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:
x=x
y = y cos θ − zsenθ
z = ysenθ + z cos θ
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:
x = zsenθ + x cos θ
y=y
z = z cos θ + xsenθ
28
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:
x = x cos θ + ysenθ
y = xsenθ + y cos θ
z=z
Las funciones M para girar un sistema son:
function [xd,yd,zd]=rotx_(x,y,z,th)
cosf=cos(th*pi/180);sinf=sin(th*pi/180);
xd =x;
yd = 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;
function [thb,zb]=b_design
minz=-0.5;
29
maxz=0.1;
minth=-0.4;
maxth=0.4;
r=0.4;
dth=pi/32;
th=0:dth:2*pi ;
x=r*cos(th);
y=r*sin(th).* (x+0.5).*(5-x)/15 ...
- (x+0.4).*(x-0.4)+ (0.6/0.8)*(x)-0.2 ;
thb=x;
zb=y;
30
hold on
for k=1:6
angl=60*k;
[xb,yb,zb] = rotz_(x,y,z,angl);
mesh(xb,yb,zb, zc)
pause
end
axis([-1.5,1.5,-1.5,1.5,-1.5,1.5])
[xc,yc,zc]=cylinder(0.595,80);
pause
xc(2,:)=xc(1,:);
yc(2,:)=yc(1,:);
zc(1,:)=-ones(size(xc(1,:)))*0.7;
zc(2,:)=ones(size(xc(1,:)))*0.7;
colr=0.7*ones(size(zc));
mesh(xc,yc,zc, colr*0.6)
pause
mesh(xc*0.95,yc*0.95,zc, colr*0.99)
view([-100,20])
VI.1.2 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.
xt=fuselen+0.25:0.25:fuselen+2;
dxt = 1.4/(length(xt)-0) ;
yt = -1+dxt:dxt :0.4;
length(yt);
31
xft=[cos(thf),xa, xt];
yft=[sin(thf)- 0.3*sin(2*thf).^4, ones(size(xa)), ones(size(yt))];
xfb=[cos(thf),xa,xt] ;
yfb=[-sin(thf),-ones(size(xa)),yt ];
k=length([thf, xa]);
yfb(k)=( yfb(k-1)+yfb(k+1))/2;
xc =(xfb+xft)/2;
yc = (yfb+yft)/2;
L=length(xc);
for i=1:L
if xc(i)<0
yc(i)=0;
end
end
a=0.5;
b=0.5;
dth=pi/8;
th=0:dth:2*pi;
jmax=length(th);
xr=cos(th);
yr=sin(th);
L=length(xc);
for i=1:L
xr=cos(th);
yr=sin(th);
a = (yft(i) -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);
32
end
end
mesh(z, x,y)
axis([-2 8 -6 6 -6 6])
hold on
[xw,yw,zw] = wing_;
F = 1.7;
xw=F*xw; yw=F*yw; zw=F*zw;
[x1,y1,z1] = rotz_(xw,yw,zw,-90);
[x2,y2,z2] = rotx_(xw,yw,zw,180);
[x2,y2,z2] = rotz_(x2,y2,z2,-270);
mesh(x1+2,y1-0.5,z1+ 0.7);
pause
mesh(x2+2,y2+0.5,z2+ 0.7);
pause
mesh(0.8*x1+6.6,0.5*z1-0,-0.3*y1+1.2)
pause
mesh(0.7*x1+6.6,0.3*y1-0.7,0.9*z1+ 0.7);
pause
mesh(0.7*x2+6.6,0.3*y2+0.7,0.9*z2+ 0.7);
pause
caxis([-3,1])
axis([-2 8 -6 6 -6 6])
title('Avión')
caxis([-2, 2])
colormap(hsv)
for i=2:n-1
33
x(i)=0.5*x(i-1)+0.4*x(i+1);
end
end
for i=2:n
x(n+i-1)=x(n-i+1);
end
y=0.2969*sqrt(x) - 0.126*x - 0.3516*x.^2 + ...
0.2843 * x.^3 - 0.1015*x.^4;
for i=n+1:length(y)
y(i)=-y(i);
end
%axis([-0.5, 1.5 ,-1 1])
%plot(x,y)
jmax=15;
for j=1:jmax
for i=1:2*n-1
xw(i,j)=x(i);
yw(i,j)=y(i);
zw(i,j)=0.3*(j-1);
end
end
yw(:,jmax)=zeros(size(yw(:,jmax)));
zw(:,jmax)=zw(:,jmax-1);
%mesh(zw,xw,yw)
%axis([0,2,0,2,-1,1])
34
El toolbox de 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 o
fenómeno
físico
Acondicionamiento
Sensor
de la señal
Hardware de
Computadora Programa
Adquisición
Acondicionamiento
Actuador
de la señal
Proceso o
fenómeno
físico
35
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.
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.
36
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 contador/temporizador
Se utilizan para contar eventos, para medir frecuencias, determinar períodos y generar
trenes de pulsos.
37
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
Funciones M
Sensor
Hardware
(Tarjeta)
Actuador
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.
38
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
39
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.
40
data = getdata(ai);
plot(data)
5. Limpiar el espacio de trabajo. Una vez que ya no se requiera utilizar ‘ai’, debe
eliminarse de la memoria y del espacio de trabajo de Matlab.
delete(ai)
clear ai
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.
41
delete(ao)
clear ao
42
MatlabVersion: '6.0.0.74976 (R12)'
InstalledAdaptors: {4x1 cell}
43
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.
44
Panel
Pantalla
(screen)
Ventana 1 Ventana 2
(figure) (figure)
45
VII.1.2 Identificadores (Handles)
Cada uno de los objetos de MATLAB tiene un identificador único (handle), a los cuales se
les llamará handle o simplemente id, indistintamente. Algunos 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
46
VII.2 Propiedades de los objetos
Todos los objetos de MATLAB tienen distintas propiedades. Algunas de éstas son el tipo,
el estilo, el padre, los hijos, si es visible o no, y otras propiedades particulares del objeto
concreto de que se trate. Las propiedades comunes a todos los objetos son: children,
clipping, parent, type, UserData, Visible. Otras propiedades son propias de un tipo
determinado de objeto.
Las propiedades tienen valores por 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).
47
ButtonDownFcn
Children
Clipping: [ {on} | off ]
CreateFcn
DeleteFcn
BusyAction: [ {queue} | cancel ]
HandleVisibility: [ {on} | callback | off ]
HitTest: [ {on} | off ]
Interruptible: [ {on} | off ]
Parent
Selected: [ on | off ]
SelectionHighlight: [ {on} | off ]
Tag
UIContextMenu
UserData
Visible: [ {on} | off ]
La sentencia set(li1) muestra las propiedades del objeto 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
48
CreateFcn =
DeleteFcn =
BusyAction = queue
HandleVisibility = on
HitTest = on
Interruptible = on
Parent = [73.0002]
Selected = off
SelectionHighlight = on
Tag =
Type = line
UIContextMenu = []
UserData = []
Visible = on
Para conocer el valor de una propiedad en particular de un objeto, se utiliza la 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
49
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')
50
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.
51
Esta opción especifica el id del objeto padre. Debe ir siempre en primer lugar.
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)
52
Puede tomar dos valores: on/off. Indica si el control es visible en la ventana o no. Este
comando es similar al Enable, si bien éste además de quedar inhabilitado el control además
desaparece de la pantalla.
53
'Position',2);
clr = uimenu(gcf,...
'Label',' Line Color',...
'BackGroundColor',[0.8, 0.8, 0.8],...
'Position',1);
lw = uimenu(gcf,...
'Label',' Line width',...
'BackgroundColor',[0.8, 0.8, 0.8],...
'Position',3);
solid = uimenu(stl, ...
'Label', 'Solid',...
'CallBack','set(p,''LineStyle'',''-'')');
dotted = uimenu(stl, ...
'Label', 'Dotted',...
'CallBack','set(p,''LineStyle'','':'')');
yellow = uimenu(clr,...
'Label', 'Yellow',...
'BackgroundColor',[0.9, 0.9, 0.1],...
'CallBack','set(p,''Color'',''y'')');
green = uimenu(clr, ...
'Label','Green',...
'BackgroundColor',[0.1, 0.9, 0.1],...
'CallBack','set(p,''Color'',''g'')');
red = uimenu(clr,...
'Label', 'Red',...
'BackgroundColor',[0.9, 0.1 , 0.1],...
'CallBack','set(p,''Color'',''r'')');
solid = uimenu(lw, ...
'Label', '0.5',...
'CallBack','set(p,''LineWidth'',0.5)');
dotted = uimenu(lw, ...
'Label', '3.0',...
'CallBack','set(p,''LineWidth'',1.0)');
El siguiente ejemplo (guidm_2.m) muestra otro ejemplo del uso de los menús.
close, clear
fg=figure(1);
set(fg, 'Position',[100 100 350 350],...
54
'Color',[0.6, .4, .4],...
'NumberTitle','off',...
'Name','GuiDm_2')
x=0:0.1:10;, y=sin(x);
p=plot(x,y);xlabel('x');ylabel('y=sin(x)');
stl = uimenu(gcf,...
'Label','Select Equation',...
'BackgroundColor',[0.8, 0.8, 0.8]);
F1 = uimenu(stl, ...
'Label', 'y=sin(x)',...
'CallBack',...
'plot(x,sin(x));xlabel(''x'');ylabel(''y=sin(x)'')');
F2 = uimenu(stl, ...
'Label', 'y=exp(-x)',...
'CallBack',...
'plot(x,exp(-x));xlabel(''x'');ylabel(''y=exp(-x)'')');
F3 = uimenu(stl, ...
'Label', 'y=cos(x^2)',...
'CallBack',...
[
'plot(x,cos(x.^2));',...
'xlabel(''x'');ylabel(''y=cos(x.^2)'')'...
]);
F4 = uimenu(stl, ...
'Label', 'y=exp(-x.^2)',...
'CallBack',...
[
'plot(x,exp(-x.^2));',...
'xlabel(''x'');ylabel(''y=exp(-x.^2)'')'...
]);
55
'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.
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')
56
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], ...
57
'Style','pushbutton',...
'String','Presione aqui para graficar sen(x)' ,...
'Callback',...
[
'h2=figure(2);x=0:0.1:10;plot(x,sin(x));,',...
'xlabel(''x''),ylabel(''y''),'...
'set(h2,''Position'',[130,310,280,200])'
]);
58
esta encendido, los demás estarán apagados, mientras que las casillas de verificación son
independientes entre sí.
59
'String','0............1',...
'Position',[10,30,110,20]);
b3 = uicontrol(gcf,...
'Style','slider',...
'Min' ,0,'Max', 1, ...
'Position',[10,10,110,20], ...
'Value', B,...
'CallBack', ...
'B=get(b3,''Value'');set(ah,''Color'',[R,G,B])');
%=============================Slider for Green
g1 = uicontrol(gcf,'Style','text', ...
'String','Intensidad de verde',...
'Position',[10,150,110,20],...
'BackgroundColor',[0.8,1,0.8]);
g2 = uicontrol(gcf,'Style','text',...
'String','0............1',...
'Position',[10,130,110,20]);
g3 = uicontrol(gcf,...
'Style','slider',...
'Min' ,0,'Max', 1, ...
'Position',[10,110,110,20], ...
'Value', G,...
'CallBack', ...
'G=get(g3,''Value'');set(ah,''Color'',[R,G,B])');
%=============================Slider for RED
r1 = uicontrol(gcf,'Style','text', ...
'String','Intensidad de rojo',...
'Position',[10,250,110,20],'BackgroundColor',[1,0.8,0.8]);
r2 = uicontrol(gcf,'Style','text',...
'String','0............1',...
'Position',[10,230,110,20]);
r3 = uicontrol(gcf,...
'Style','slider',...
'Min' ,0,'Max',1, ...
'Position',[10,210,110,20], ...
'Value', R,...
'CallBack', ...
'R=get(r3,''Value'');set(ah,''Color'',[R,G,B])');
cla,clf,close
h1=figure(2);
set(h1,'Position',[130,250,480,150], ...
'Color',[0,0.5, 0.5],...
'NumberTitle','off',...
'Name','GuiDm_11 Texto editable');
ed0 = uicontrol(gcf, 'Style','text', ...
60
'Position', [110,60, 260,40],...
'String',...
' Modifique la matriz y presione Enter al final.');
ed2 = uicontrol(gcf, 'Style','edit', ...
'Position', [110,20, 210,40],...
'String',' [1 3 5; 5 -2 1; 3 1 7]',...
'CallBack',['inp_txt=get(ed2,''String''),',...
'eigenvalues=eig(str2num(inp_txt))']);
close,h1=figure(1);clf
set(h1,'Position',[100,200,350,300],...
'NumberTitle','off',...
'Name','GuiDm_13 Uso del comando axes')
x=0:0.1:10;
axes('Position',[0.1, 0.1, 0.5, 0.5]);
plot(x,sin(x))
61
La 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))
62
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).
63
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.
64
Las Componentes principales de GUIDE son:
65
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:
66
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.
67
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.
68
Basicamente solo se necesita entender cinco comandos para poder describir una
GUI: uimenu, uicontrol, get, set y axes. No obstante, lo que hace relativamente
complicadas a estos comandos es el gran numero de formas de uso que tiente. Es imposible
describir todos lo tipo de situaciones, pues requiere demasiado espacio y seria muy
laborioso leerlo. Por tanto, solo se trataremos de explicar los elementos 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.
Los menus de interfaz con el usuario se especifican con uimenu, cuya sintaxis es la
siguiente:
69
m2 = uimenu (gcf, ...
‘Label’, ‘cadena de rótulos 2’, ...
‘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:
70
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:
Las tres opciones pertenecen al primer menú con mango m1. se omitieron as
propiedades de Position y BackgroundColor, pero pueden incluirse si se desea.
71
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.
popup
push
radio
checkbox
slider
edit (texto editable)
text (texto estático)
frame
72
Las propiedades de iucontrol son similares a las de uimenu. las propiedades que
aparecen aquí por primera vez son:
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.
73
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.
74
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.
Las palabras clave en el comando anterior son ´Style´, ´edit´ y get (mango,
´string´) que capturan el texto introducido.
75
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.
76
Practicando con GUIDE
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í”.
77
Propiedad: “String” Nuevo Valor: “<<Mensaje>>”
Propiedad: “Position ! Width” Nuevo Valor: “20”.
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.
78
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.
79
Ordénelos de la Siguiente manera.
Nota: Para Hacer que luzcan ordenadamente los objetos le recomendamos alinearlos, a
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.
80
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')))
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:
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.
81
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.
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”
82
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
83
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
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”
84
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”
85
27.- Hará una lista de números selecionables a través de 3 Radios Buttons, donde cada
Radio desplegara un conteo diferente el Listbox.
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”
86
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)
87
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)
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)
88
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
89
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)
34.- Agregue las siguientes instrucciones de una línea en los Callback’s de los menús
correspondientes:
90
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.
91
Practica 2. “Usando los ejes”.
1.- Primero Insertaremos todos los controles que utilizaremos: 1 frame, 1 static text, 2 radio
botton, 2 axes, 3 push botton. Modifique las propiedades de los controles con los siguientes
datos.
Control: radiobutton1
Propiedad: “String” 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”.
92
Control: pushbutton2
Propiedad: “String” Nuevo Valor: “Espacial”
Propiedad: “Position ! Width” Nuevo Valor: “24”.
Control: pushbutton1
Propiedad: “String” Nuevo Valor: “Polar”
Propiedad: “Position ! Width” Nuevo Valor: “24”.
93
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);
94
y2 = sin(x-.25);
y3 = sin(x-.5);
plot(x,y,x,y2,x,y3)
legend('sin(x)','sin(x-.25)','sin(x-.5)')
xlabel('x = 0:2\pi')
ylabel('Seno de x')
title('Graficando Funciones Senoidales','FontSize',12)
Control: pushbutton2
newplot
t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
axis square; grid on
Control: pushbutton3
newplot
t = 0:.01:2*pi;
polar(t,sin(2*t).*cos(2*t),'--r')
95
Nota: Los axes se manipulan de igual manera que en los archivos-m, solo indique que eje
es el destino de sus comandos antes.
96
Bibliografía y Referencias
[3] The MathWorks Inc., “Getting Started with MATLAB Version 5.x”
[6] The MathWorks Inc., Manuales de las siguientes herramientas (toolboxes): Control,
Fuzzy Logic, Signal Processing, Data Acquisition, Building GUIs in Matlab.
[8] Nakamura, Shoichiro, “Análisis numérico y visualización gráfica con Matlab”, Pearson
Educación
97
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.
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
98
ButtonDownFcn se ejecuta cuando haces click en el unicontrol. Esto es útil para
implementar acciones para modificar interactivamente las propiedades de control del
objeto, como el 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:
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.
99
Enable
Activa o desactiva el uicontrol. Esta propiedad controla como los uicontrols responden a un
click del mouse, incluyendo que rutina de llamada se ejecuta.
on - El uicontrol es oreracional
inactive - no es operacional pero se ve como si estubiera activado
off - No es operacional y su etiqueta se vuelve gris
Cuando se da click izquierdo a un objeto uicontrol que tiene su propiedad enable activada
(en on), Matlab ejecuta estas en este orden:
[0, 0, width,height]
100
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:
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.
101
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.
Los identificadores son siempre visibles cuando HandleVisibilty esta activada (en on).
Asignando HandleVisibility a una llamada hace que el manejador sea visible para rutinas
de llamada o funciones invocadas po rutinas de llamada, pero no para las que son invocadas
desde la linea de comando. Esto es para proteger los GUI's de los usuarios de la linea de
comando, y tambien permite a las rutinas de llamada tener el completo acceso a los
identificadores de los objetos.
Poniendo HandleVisibility en off hace al manejador siempre invisible. Esto puede ser
102
necesario cuando una rutina de llamada invoca a una funcion que puede 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.
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):
En el sistema operativo Windows de Microsoft, esta propiedad afecta solo a los uicontrols
edit y text.
103
Interruptible
Rutina de llamada modo de interupcion. Si una llamada se esta ejecutando y el usuario
dispara un evento (como un click del mouse) en un objeto para el cual esta definida uina
llamada, la llamada intenta interumpir la primera llamada. Matlab procesa las llamadas
conforme a estos factores:
La propiedad Interruptible de el objeto que se esta ejecutando la llamada
"#Si la llamada que se esta ejecutando contiene las declaraciones drawnow, figure,
getframe, pause o waitfor
"#LA propiedad BusyAction de el objeto que su llamada esta esperando para ejecutarse
Si la propiedad Interruptible de el objeto que su llamada se esta ejecutando esta en on, la
llamada puede ser interrumpida. La llamada interumpe ejecucion a la siguiente declaracion
drawnow, figure, getframe, pause o waitfor, y procesa los eventos en el evento de la cola,
en el cual incluye la llamada que esta espreando.
Si la propiedad Interruptible de el objeto que su llamada se esta ejecutando esta en off, la
llamada no puede ser interrumpida (a excepcio de ciertas llamadas). La propiedad
BusyAction de el objeto de el cual su llamada esta esperando para ejecutarse determina que
pasa con la llamada.
ListboxTop
Esta propiedad se aplica solo al estilo de uicontrol listbox. Especifica que cadena aparece
en la posicion mas alta de un Listbox (caja de lista) que no es lo suficientemente largo para
mostrar todos los elementos de la lista. ListboxTop es un indice en el arreglo de cadenas
definido por la propiedad String y debe tener un valor entre cero y el numero de cadenas.
Valores no enteros son redondeados al proximo valor entero mas chico.
104
Max
Valor Maximo. Esta propiedad especifica el valor mas grande aceptado por la propiedad
Value.
Diferentes estilos de uicontrols interpretan la propiedad max de diferente manera:
- Check boxes - Max es el valor de la propiedad Value mientras el check box esta
seleccionado.
- Editable text - Si Max - Min > 1, entonces el editable text (texto editable) ecepta
varias 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
105
- Radio buttons - Min es el valor de la propiedad Value mientras el radio button no
esta seleccionado.
- Sliders - Min es el valor minimo del slider (deslisador) y tiene que ser menos que
la propiedad max. El valor por defecto es 0.
- Toggle buttons - Min es el valor de la propiedad Value mientras el radio button no
esta seleccionado. El valor por defecto es 0.
- Frames, pop-up menus, push buttons, y static text no usan la propiedad Min
Parent
Papa de un unicontrol. El manejador de el objeto padre del uicontrol. El papa de un objeto
uicontrol es la figura (figure) en el que aparece. Puedes mover un objeto uicontrol a otra
figura asignando esta propiedad el manejador de el nuevo padre.
Position
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.
106
Selected
Objeto seleccionado. Cuando esta propiedad esta activada (en on), Matlab muestra
identificadores de seleccion si la propiedad SelectionHighlight esta tambien en on. Tu
puedes, por ejemplo, definir ButtonDownFcn para que ajuste a esta propiedad, permitiendo
al usuario que seleccione el objeto con el mouse.
SelectionHighlight
Objeto resaltado cuando esta seleccionado. Cuando la Propiedad esta en on, Matlab indica
el estado de seleccionado dibujando cuatro identificadores de filo y cuatro de horilla.
Cuando la propiedad esta en off, Matlab no dibuja los identificadores. ****
SliderStep
Paso del slider (deslizador). Esta propiedad controla la cantidad que la propiedad del slider
Value cambia cuando le das click en el boton de la flecha (min_step) o en la barra del slider
(max_step). Especifica SliderStep como un vector de dos elementos; cada valor debe estar
en un rango de cero y uno. El 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.
107
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.
108
TooltipString
Contenido de la "pista" (el letrero que aparece si dejas el mouse sobre un objeto sin dar
click). La propiedad TooltipString especifica el texto de la "pista" asociado con el uicontrol.
Cuando el usuario mueve el puntero mouse sobre un control y lo deja hay, la pista aparece.
Type
Clase de objeto grafico. Para los objetos uicontrol, la propiedad Type siempre es la cadena
'uicontrol'.
UIContextMenu
Asocia un context menu con uicontrol. Asigna a esta propiedad el manejador de un objeto
uicontextmenu. Matlab muestra el context menu cuando das click derecho en el uicontrol.
Usa la funcion uicontextmenu para crear el context menu.
Units
Unidades de medida. Las unidades que Matlab usa para interpretar las propiedades Extend
y Position. Todas las unidades son medidas de la esquina inferior izquierda de la figura
ventana.
UserData
Datos especificados por el usuario. Cualquier deto que quieras asociar con un objeto
uicontrol. Matlab no usa este dato pero tu puedes accesar a el utilisando los comandos set
(asigna) y get (recupera).
Value
Valor actual de el uicontrol.La clase (o estilo) uicontrol determina los posibles valores que
esta propiedad puede tener:
- Check boxes - ponen su propiedad Value (valor) en Max (el maximo) cuando
estan seleccionados y en Min (el minimo) cuando no estan selaccionados.
- List boxes - ajustan su valor a un vector corrspondiente a los elementos de la lista
109
- Pop-up menu - ajustan su valor a un indice de articulos seleccionados , donde 1
corresponde al primer elemento del menu.
- Radio buttons - ponen su propiedad Value (valor) en Max (el maximo) cuando
estan seleccionados y en Min (el minimo) cuando no estan selaccionados.
- Sliders - ajustan su valor al numero indicado por la posicion de el slider
(deslisador)
- Toggle buttons - ponen su propiedad Value en Max cuando estan presionados
(seleccionados) y en Min cuando no estan selaccionados.
- Editable text, Frames, Push buttons, y Static text no usan esta propiedad.
Puedes ajustar este valor ya sea interactivamente con el mouse o atraves de la funcion set.
Visible
Visibilidad de el uicontrol. Por defecto, todos los uicontrols son visibles. Cuando esta
propiedad esta desactivada (en off), el control no es visible, pero sigue existiendo y puedas
buscar y modificar su propiedades.
UIMENUS
Accelerator
Un caracter que espesifica la tecla equivalenteal articulo del menu. Esto permite a los
usuarios seleccionar un elemento en particular persionando un caracter especifico en
conjuncion con otra tecla, en lugar de hacerlo con el mouse. La secuencia de las teclas
depende de la plataforma:
110
Puedes definir un accelerator (acelerador) solamente para elementos que no tienen menus
hijos. Los Accelerators solo funcionan para elementos del menu que ejecutan una rutina de
llamada directamente, y no para los que abren otros menus.
Note que los elementos de el menu no tienen que estar a la vista para que el accelerator
funcione. Pero la figura papa de el menu tiene que estar seleccionada.
BusyAction
Interrupcion de la rutina de llamada(callback). Si una es ejecutada y el usuario activa un
evento en un objeto para el cual una llamada esta definida, esa llamada trata de interumpir
la primera llamada. La primera llamada puede ser interrumpida sola mente por uno de los
siguientes comandos: drawnow, figure, getframe, pause o waitfor; si la llamado no contiene
ninguno de estos comandos no puede ser interrumpida.
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.
111
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:
Esta rutina definida para los componentes frame y ststic text no se ejecuta por que ninguna
accion esta asociada con estos objetos.
Checked
Indicador del articulo del menu seleccionado. Poniendo esta propiedad en on muestra una
marca a un lado de el elemanto de el menu correspondiente. Poniendola en off remueve la
marca. Tu puedes usar esta opcion para crear menus que indiquen el estado de una opcion
en particular.
Children
Manejador de submenus. Un vector que contiene los identificadores de todos los hijos del
objeto uimenu. Los objetos hijos de los uimenus son otros uimenus, que funcionan como
submenus.
112
Esta propiedad es util para reordenar los menus
CreateFcn
Rutina de llamada ejecutada cuando se crea un objeto. Esta propiedad define una rutina de
llamada que es ejecutada cuando matlab crea un objeto de la clase uimenu. Se debe definir
esta propiedad como un valor por default para los uicontrols.
DeleteFcn
Una rutina de llamada que se ejecuta cuando borras un objeto uicontrol. Matlab ejecuta la
rutina antes de destruir las propiedades del objeto, asi sus valorea estan disponibles para la
rutina de llamada.
Enable
Activa o desactiva el uimenu. Esta propiedad controla cuando un elemento del menu puede
ser seleccionado. Cuando esta inactiva (en off), la etiqueta del menu aparece osbcurecida,
indicandoque no puede ser seleccionada por el usuario
ForegroundColor
Color de texto. Esta propiedad determina el color de el texto definido por la propiedad
String. Especifica un color usando un vector de tres elementos RGB o un nombre
predefinido en Matlab.
HandleVisibility
Controla el acceso al manejador (handle) de un objeto por usuarios de la linea de comando
y GUI's. Esta propiedad determina cuando un manejador de un objeto es visible en la lista
de los objetos hijos de su clase papa.
Los identificadores son siempre visibles cuando HandleVisibilty esta activada (en on).
Asignando HandleVisibility a una llamada hace que el manejador sea visible para rutinas
113
de llamada o funciones invocadas po rutinas de llamada, pero no para las que son invocadas
desde la linea de comando. Esto es para proteger los GUI's de los usuarios de la linea de
comando, y tambien permite a las rutinas de llamada tener el completo acceso a los
identificadores de los objetos.
Poniendo HandleVisibility en off hace al manejador siempre invisible. Esto puede ser
necesario cuando una rutina de llamada invoca a una funcion que puede 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.
Los identificadores que estan escondidos siguen siendo validos, si se conoce el manejador
de un objeto tu puedes asigner (set) y obtener (get) sus propiedades, y pasarcelas a
cualquier funcion que opere identificadores
Interruptible
Rutina de llamada modo de interupcion. Si una llamada se esta ejecutando y el usuario
dispara un evento (como un click del mouse) en un objeto para el cual esta definida uina
114
llamada, la llamada intenta interumpir la primera llamada. Matlab procesa las llamadas
conforme a estos factores:
"#La propiedad Interruptible de el objeto que se esta ejecutando la llamada
"#Si la llamada que se esta ejecutando contiene las declaraciones drawnow, figure,
getframe, pause o waitfor
"#LA propiedad BusyAction de el objeto que su llamada esta esperando para ejecutarse
Si la propiedad Interruptible de el objeto que su llamada se esta ejecutando esta en on, la
llamada puede ser interrumpida. La llamada interumpe ejecucion a la siguiente declaracion
drawnow, figure, getframe, pause o waitfor, y procesa los eventos en el evento de la cola,
en el cual incluye la llamada que esta espreando.
Si la propiedad Interruptible de el objeto que su llamada se esta ejecutando esta en off, la
llamada no puede ser interrumpida (a excepcio de ciertas llamadas). La propiedad
BusyAction de el objeto de el cual su llamada esta esperando para ejecutarse determina que
pasa con la llamada.
Label
Etiqueta del menu. Una cadena especificando el texto en la etiqueta de el articulo de el
menu. Puedes especificar un mnemonic usando el caracter "&". Cualquier letra siguiente de
el "&" aparece subrrayada y se selecciona el articulo del menu cuando oprimes esa letra
mientras el menu es visible. El caracter "&" no se muestra. Para mostrarlo en una etiqueta
usa dos "&" en la cadena.
Parent
Papa de el uimenu. El manejador de el objeto papa de un uimenu. El papa de un objeto
115
uimenu es la figura en donde se muestra, o el uimenu de el que es un submenu. Puedes
mover un objeto uimenu a otra figura asignando esta propiedad el manejador de el nuevo
padre
Position
Posicion relativa del uimenu . El valor de la propiedad position (posicion) indica el lugar en
una barra de menu o en un menu. Los menus de el nivel de arriba son acomodados de
izquierda a derecha en la barra de menu dependiendo de el valor de la propiedad position,
donde 1 representa la primera posicion de la izquierda. Los elementos individuales en
cualquier menu son acomodados de arriba hacia abajo, con 1 representando la primera
posicion de arriba.
Separator
Linea de separacion. Activando esta propiedad (on) dibuja una linea divisora sobre el
articulo del menu
Tag
Etiqueta del objeto especificada por el usuario. La propiedad tag proporciona una manera
de identificar objetos graficos con una etiqueta espesificada por el usuario. Esta es
particularmente util cuando construyes programas graficos interactivos que de otra manera
necesitarian definir identificadores de objetos como variables globales o pasarlas como
argumentos entre rutinas de llamada. Puedes definir la propiedad tag como cualquier
cadena.
Type
Clase de objeto grafico. Para los objetos uimenu, la propiedad Type siempre es la cadena
'uimenu'.
UserData
116
Datos especificados por el usuario. Cualquier matriz que quieras asociar con un objeto
uimenu. Matlab no usa este dato pero tu puedes accesar a el utilisando los comandos set
(asigna) y get (recupera).
Visible
Visibilidad de el uimenu. Por defecto, todos los uimenus son visibles. Cuando esta
propiedad esta desactivada (en off), el control no es visible, pero sigue existiendo y puedas
buscar y modificar su propiedades.
UICONTEXTMENU
BusyAction
Interrupcion de la rutina de llamada(callback). Si una es ejecutada y el usuario activa un
evento en un objeto para el cual una llamada esta definida, esa llamada trata de interumpir
la primera llamada. La primera llamada puede ser interrumpida sola mente por uno de los
siguientes comandos: drawnow, figure, getframe, pause o waitfor; si la llamado no contiene
ninguno de estos comandos no puede ser interrumpida.
117
Callback
Controla la accion. Una rutina que se ejecuta cuando das click derecho a un objeto de la
clase uicontextmenu. La rutina se ejecuta inmediatamente despues de que el context menu
es registrada. Define esta rutina como una cadena. La exprecion se ejecuta en el espacio de
trabajo de matlab.
Children
Los uimenus definidos por el uicontextmenu.
CreateFcn
Rutina de llamada ejecutada cuando se crea un objeto. Esta propiedad define una rutina de
llamada que es ejecutada cuando matlab crea un objeto de la clase uimenu. Se debe definir
esta propiedad como un valor por default para los uicontrols.
DeleteFcn
Una rutina de llamada que se ejecuta cuando borras un objeto uicontrol. Matlab ejecuta la
rutina antes de destruir las propiedades del objeto, asi sus valorea estan disponibles para la
rutina de llamada.
HandleVisibility
Controla el acceso al manejador (handle) de un objeto por usuarios de la linea de comando
y GUI's. Esta propiedad determina cuando un manejador de un objeto es visible en la lista
de los objetos hijos de su clase papa.
Los identificadores son siempre visibles cuando HandleVisibilty esta activada (en on).
Asignando HandleVisibility a una llamada hace que el manejador sea visible para rutinas
de llamada o funciones invocadas po rutinas de llamada, pero no para las que son invocadas
desde la linea de comando. Esto es para proteger los GUI's de los usuarios de la linea de
comando, y tambien permite a las rutinas de llamada tener el completo acceso a los
identificadores de los objetos.
118
Poniendo HandleVisibility en off hace al manejador siempre invisible. Esto puede ser
necesario cuando una rutina de llamada invoca a una funcion que puede 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.
Los identificadores que estan escondidos siguen siendo validos, si se conoce el manejador
de un objeto tu puedes asigner (set) y obtener (get) sus propiedades, y pasarcelas a
cualquier funcion que opere identificadores
Interruptible
Rutina de llamada modo de interupcion. Si una llamada se esta ejecutando y el usuario
dispara un evento (como un click del mouse) en un objeto para el cual esta definida uina
llamada, la llamada intenta interumpir la primera llamada. Matlab procesa las llamadas
conforme a estos factores:
"#La propiedad Interruptible de el objeto que se esta ejecutando la llamada
"#Si la llamada que se esta ejecutando contiene las declaraciones drawnow, figure,
getframe, pause o waitfor
119
"#La propiedad BusyAction de el objeto que su llamada esta esperando para ejecutarse
Si la propiedad Interruptible de el objeto que su llamada se esta ejecutando esta en on, la
llamada puede ser interrumpida. La llamada interumpe ejecucion a la siguiente declaracion
drawnow, figure, getframe, pause o waitfor, y procesa los eventos en el evento de la cola,
en el cual incluye la llamada que esta espreando.
Si la propiedad Interruptible de el objeto que su llamada se esta ejecutando esta en off, la
llamada no puede ser interrumpida (a excepcio de ciertas llamadas). La propiedad
BusyAction de el objeto de el cual su llamada esta esperando para ejecutarse determina que
pasa con la llamada.
Parent
Papa de el uicontextmenu. El manejador de el objeto papa de un uicontextmenu. El papa de
un objeto uicontextmenu es la figura en donde se muestra. Puedes mover un objeto
uicontextmenu a otra figura asignando esta propiedad el manejador de el nuevo padre
Position
Posicion del uicontextmenu . Una vector de dos elementos que define la posicion de el
menu. Especifica la posicion como:
[left bottom]
donde los elementos del vector representan la distancia en pixeles desde la esquina inferior
izquierda de la figura hasta la esquina superior izquierda de el context menu.
120
Tag
Etiqueta del objeto especificada por el usuario. La propiedad tag proporciona una manera
de identificar objetos graficos con una etiqueta espesificada por el usuario. Esta es
particularmente util cuando construyes programas graficos interactivos que de otra manera
necesitarian definir identificadores de objetos como variables globales o pasarlas como
argumentos entre rutinas de llamada. Puedes definir la propiedad tag como cualquier
cadena.
Type
Clase de objeto grafico. Para los objetos uicontextmenu, la propiedad Type siempre es la
cadena 'uicontextmenu'.
UserData
Datos especificados por el usuario. Cualquier matriz que quieras asociar con un objeto
uicontext menu. Matlab no usa este dato pero tu puedes accesar a el utilisando los
comandos set (asigna) y get (recupera).
Visible
Visibilidad de el uicontextmenu. Esta propiedad puede ser usada de dos maneras:
AXES
AmbientLightColor
El color de el fondo en una escena. Es una luz sin direccion que brilla uniformemente en
todos los objetos en los ejes (axes). Sin embargo, si no hay objetos de luces visibles en los
ejes, Matlab no usa AmbientLightColor. Si hay objetos de luz en los ejes, el
AmbientLightColor es agregado a las otras fuentes de luz.
121
AspectRatio
Esta propiedad produce un aviso de precaucion cuando es buscado o cambiado. A sido
remplazada por las propiedades DataAspectRatio[Mode] y PlotBoxAspectRatio[Mode]
Box
Modo "caja" de los ejes. Esta propiedad especifica si se encierran los ejes en una caja vista
en dos dimenciones o en un cubo de tres dimenciones.
BusyAction
Interrupcion de la rutina de llamada(callback). Te permite controlar como Matlab maneja
los eventos que potencialmente interumpen ejecutando rutinas de llamada. Si hay una rutina
de llamada ejecutandose, las rutinas de llamada invocadas despues siempre tratan de
intrrumpirla. Si la propiedad interruptible de el objeto que esta ejecutando la llamada esta
activada (en on), entonces la interrupcion ocurre en el siguiente punto el evento que esta en
la cola es procesado. Si la propiedad interruptible esta en off, la propiedad BusyAction (de
el objeto que esta ejecutando la llamada) determina como Matlab maneja el evento. Las
opciones son:
"#cancel - descarta el evento que trata de ejecutar una segunda rutina de llamada
"#queue - pone en una cola al evento que trata de ejecutar la segunda llamada hasta que la
llamada actual termine
ButtonDownFcn
Rutia de llamada de presionar un boton. Una rutina de llamada que se ejecuta cuando
presionas un boton del mouse mientras el cursor esta en los ejes, pero no sobre otros
objetos graficos mostrados en los ejes. Para las vistas en 3-D, el area activa esta definida
por un rectangulo que encierra los ejes.
Esta rutina se define como una cadena(string) que es una 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.
122
CameraPosition
La posicion de la camara. Esta propiedad define la posicion donde la camara ve la escena.
Espesifica el punto en coordenadas de los ejes.
CameraPositionMode
Posicion de la camara automatica o manual. Cuando esta an auto (automatica), Matlab
calcula automaticamente la posicion de la camara. Asignar un valor a CameraPosition pone
a esta propiedad en manual
CameraTarget
Punto de fijacion de la camara. Esta propiedad especifica la posicion en los ejes donde la
camara apunta. El CameraTarget (blanco de la camara) y la CameraPosition (posicion de
la camara) define el vector en donde la camara apunta.
CameraTargetMode
Propiedad CameraTarget automatica o manual. Cuando Esta propiedad esta en auto,
Matlab automaticamenta posiciona el lugar donde apunta la camara (CameraTarget) en el
centro de los ejes. Espesificando un valor a la propiedad CameraTarget pone a esta
propiedad en manual.
CameraUpVector
Rotacion de la camara. Esta propiedad especifica la rotacion de la camara alrededor de los
ejes que se estan viendo definida por las propiedades CameraTarget y CameraPosition.
Especifica esta propiedad como un arreglo de tres valores conteniendo los componentes del
vector x, y y z.
CameraUpVectorMode
Vector especificado por el usuario o por defecto. Cuando esta en auto, Matlab usa el valor
de [0 0 1] para vistas en 3-D y [0 0 1] para vistas en 2-D. Asignar un valor a
CameraUpVector pone esta propiedad en manual.
123
CameraViewAngle
El campo de vista. esta propiedad Determina el campo de vista de la camara. Cambiando
este valor afecta el 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.
124
CurrentPoint
Posicion de el ultimo boton al que se le dio click, en unidades de datos de los ejes. Una
matriz de 2 por 3 que contiene las coordenadas de dos puntos definidos por la locacion de
el cursor. Estos dos puntos estan en la linea que es perpendicular al plano de la pantalla y
pasa por el cursor.
DeleteFcn
Una rutina de llamada que se ejecuta cuando borras un objeto Axes. Matlab ejecuta la
rutina antes de destruir las propiedades del objeto, asi la rutina de llamada puede buscar sus
valores
DrawMode
Modo de dibujo.
- normal - Dibuja los objetos de 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' )
125
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
126
manejadores de los objetos.
Poniendo HandleVisibility en off hace al manejador siempre invisible. Esto puede ser
necesario cuando una rutina de llamada invoca a una funcion que puede 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.
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.
127
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.
Parent
Identificador de el objeto papa de los ejes. Una propiedad de solo lectura que contiene el
Identificador de el objeto papa de los ejes. El papa de un objeto tipo Axes es la figura en
que es expuesta.
128
Position
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
129
Unidades de medida. Las unidades que Matlab usa para interpretar la propiedad Position.
Todas las unidades son medidas de la esquina inferior izquierda de la figura ventana.
UserData
Datos especificados por el usuario. Cualquier matriz que quieras asociar con un objeto de
tipo axes. El objeto no usa este dato pero tu puedes recuperarlo usando el comando get
View
Punto de vista de los ejes. Un vector de dos elementos, [az, el], que establece el punto de
vista usado para transformar graficas de tercera dimension en un espacion bi dimencional
de la pantalla. El viewpoint (punto de vista) es la pocision de la camara que obserba la
grafica de 3-D, donde az es el acimut. El acimut gira alrededor del eje z, con valores
positivos haceque el punto de vista ruede en un contador en el sentido de las manecillas del
reloj.
el es la elevacion, y especifica el angulo sobre o bajo el objeto. Valores positivos hacen que
el punto de vista se mueva arriba de el objeto. Especifica cada elemento en grados.
Visible
Visibilidad de los ejes. Por defecto, todos los objetos Axes son visibles. Cuando esta
propiedad esta desactivada (en off), los ejesl no es visible, pero sigue existiendo y puedas
buscar y modificar su propiedades.
XForm
Una matriz de 4X4 que define la transformacion de graficas tridimencionales a la pantalla
bidimencional.
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.
130
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
131
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
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
132
- 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.
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
133
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
134
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
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.
135
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.
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:
136
set(gca,'xlabel',text(0,0,'axis label'))
Mientras que la funcion Text requiere la posicion del dato, esto no es usado para acomodar
el texto. En lugar, Matlab pone la cadena ‘axis label’ a la 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, [ ].
137
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
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.
138
Bibliografía y Referencias
[3] The MathWorks Inc., “Getting Started with MATLAB Version 5.x”
[6] The MathWorks Inc., Manuales de las siguientes herramientas (toolboxes): Control,
Fuzzy Logic, Signal Processing, Data Acquisition, Building GUIs in Matlab.
[8] Nakamura, Shoichiro, “Análisis numérico y visualización gráfica con Matlab”, Pearson
Educación
139