You are on page 1of 12

Ingeniera electrnica

Seminario de matlab
avanzado
Folleto final

Luis gonzalo andrade fierro


Quito, 28 de septiembre de 2015

INDICE
Guide quick start........................................................................................................ 3
Text, edit text, axes y popupmenu............................................................................. 3
Comandos get y set handles...................................................................................... 4
Codigo para el popupmenu........................................................................................ 5
Funcion ejes................................................................................................................ 5
Objetos push button y uitable.................................................................................... 6
Codigo para una clave de acceso............................................................................... 6
Aplicacion para evaluar una funcion...........................................................................6
Codigo para el boton generar..................................................................................... 7
Aplicacion para calcular promedio desde datos de la uitable.....................................7
Codigo del boton realizar calculos.............................................................................. 8
Funcion promedio....................................................................................................... 8
Aplicacion para extraer datos de un archivo de texto................................................8
Codigo del boton extraer datos.................................................................................. 9
Codigo del popupmenu.............................................................................................. 9
Aplicacin para facturacion de un restaurante con excel.........................................10
Codigo del boton total pedido.................................................................................. 10
Codigo de el uipanel................................................................................................. 11

Entorno grfico
Guide quick start
El entorno grfico de matlab nos sirve
para crear programas haciendo uso de
los beneficios de botones, cuadros de
texto, checkboxs, etc.
Para crear un guide, se debe ingresar por
medio de file newgui.
Se abrir una pantalla con el guide quick
start donde seleccinaremos blank gui y
presionaremos ok.
Se abrir un gui en blanco y tendremos a
disposicin todas las herramientas para
crear una aplicacin con ventanas de
windows, facilitar el manejo de la misma,
y hacerla ms intuitiva al usuario.
Desde la pantalla de guide quick start,
tambin podemos desde la pestaa open
existing gui, abrir los gui recientes, o
buscar con el explorador un gui
archivado.

Text, edit text, axes y popupmenu

Los objetos se enceuntran en la parte


izquierda de la pantalla gui, y se los
puede seleccionar, ubicar y dar el
tamao que se crea conveniente.
El objeto text, sirve para desplegar
mensajes de texto, ya sea un mensaje
predeterminado o de igual forma cambiar
dicho mensaje mediante programacin
cuando se efecte alguna accin.
El objeto edit text, sirve para ingresar por
teclado un texto, mismo que se lo puede
manipular mediante la programacin.

El objeto axes, es un espacio en donde se


puede mostrar las grficas programadas
con el comando plot.
El objeto popupmenu nos ayuda a crear
un men de opciones, mismas que se
pueden
modificar
mediante
las
propiedades del mismo.
Para ver las propiedades de un objeto
basta con hacer doble clic sobre el mismo
y se desplegara una ventana con todas
las propiedades predeterminadas y
modificables de dicho objeto.
Estas propiedades sern las que queden
por defecto el momento de arrancar
nuestra aplicacin, pero se las puede
modificar mediante la programacin en cualquier momento, con el editor de cdigo.
Para modificar las acciones de cualqueir
objeto debemos hacer click derecho
sobre el mismo e irnos a view callbacks,
luego seleccionar cualquiera de las
acciones posbiles de dicho objeto.
Se abrir una ventana con el cdigo
autogenerado de nuestro gui, mismo que
ser un script con extensin .m, en este
cdigo veremos diferentes funciones
pertenecientes a las acciones de cada
objeto, en donde podemos aadir
nuestras lneas de cdigo para realizar
alguna accin, clculo o proceso.

Comandos get y set handles


En las funciones generadas automticamente para cada objeto, aadimos nuestro
cdigo, y podemos hacer uso de los dems objetos de nuestro gui

function popupmenu1_Callback(hObject,
eventdata, handles)
matriz_de_arrays=get(hObject, 'string');
indice_de_la_matriz_de_arrays=get(hObject
,'Value');
matriz_indice_de_arrays=matriz_de_arrays(
indice_de_la_matriz_de_arrays);
ax=str2num(get(handles.edit1,'String'));
bx=str2num(get(handles.edit2,'String'));

Set(handles.tagdelobjeto,
propiedad),
que sirve para modificar el valor de una
de las propiedades de dicho objeto,
mismas
que
podiamos
modificar
haciendo doble click sobre cualquier
objeto.
Get(handles.tagdelobjeto,
propiedad),
devuelve el valor de la propiedad que
est en ese momento en el objeto.
Codigo para el popupmenu

xi=str2num(get(handles.edit3,'String'));
xf=str2num(get(handles.edit4,'String'));
x=[xi:0.1:xf];
switch cell2mat(matriz_indice_de_arrays);
case 'sen'
y=sin(x);
ejes(ax,bx,min(y),max(y));
plot(handles.axes1, x, y);
hold off;
case 'cos'
y=cos(x);
ejes(ax,bx,min(y),max(y));
plot(handles.axes1, x, y);
hold off;
case 'sen+cos'
y=sin(x) + cos(x);
ejes(ax,bx,min(y),max(y));
plot(handles.axes1, x, y);
hold off;

Funcion ejes

Con ste cdigo realizamos una accin


cada vez que se selecciona una de las
opciones del popupmenu.
Obtenemos el valor de los objetos
mediante el comando get, esto es del
popupmenu y de los edit text los cuales
nos darn los lmites de nuestras
grficas.
Utilizamos el comando switch para
programar los diferentes casos del
popupmenu, se utiliza para cada grfica
un diferente rango para los ejes, para
dicho efecto se utiliz la funcin ejes,
programada en un diferente script.

Con sta funcin graficamos los ejes de coordenadas en cualquier grfico, tiene las
variables de entrada con las cuales realiza el ploteo.
sta funcin puede ser llamada desde cualquier otro cdigo, enviando las variables
que necesita para su funcionamiento.

Objetos push button y uitable


El objeto pushbutton, es un botn en el
cual podemos programar la accin que se
necesite al momento de clickear sobre l.
El uitable nos sirve como una tabla de
datos semejante a una hoja de clculo de
excel, en la cual se podr ingresar o
desplegar datos de variables tipo matriz
o tipo cell.
function pushbutton1_Callback(hObject,
eventdata, handles)
global nombre;
c = get(handles.nombre, 'String');
if c=='1000'
close
end
principal;

Codigo para una clave de acceso

Con el comando global, hacemos una variable tipo global, que significa que estar
disponible para cualquier funcin o aplicacin.
function [ ] = ejes( ax, bx, ay, by )
%UNTITLED Summary of this function goes
here
%
Detailed explanation goes here
plot([(ax) (bx)], [0 0], 'bl');
hold on;
plot([0 0], [(ay) (by)],'bl');
grid on;
end

Aplicacion para evaluar una funcion

En ste cdigo se cambi el tag de un


edit text, y se le puso nombre, para as
hacer a ste objeto global.
Con el comando close, se cierra la
ventana actual, para as poder acceder a
otra ventana.

function pushbutton1_Callback(hObject,
eventdata, handles)
try
clc;
func=get(handles.edit1, 'String');
f=inline(func);

Con sta aplicacin ingresamos en un


edit text, una funcin cualquiera del tipo
f(x), y al momento de presionar el botn
generar, nos mostrar la grfica de la
misma en el axes1 y una tabla de valores
en la uitable1.

ax=str2num(get(handles.edit2,'String'));
bx=str2num(get(handles.edit3,'String'));
xmin=str2num(get(handles.edit4,'String'))
;
xmax=str2num(get(handles.edit5,'String'))
;
x=[xmin:0.1:xmax];
for i=1:length(x)
y(i)=f(x(i));
end
ejes(ax,bx,min(y),max(y));
escalax(ax,bx);
escalay(min(y),max(y));

set(handles.uitable1, 'Data', [x' y']);


plot(handles.axes1,x,y,'b');
hold off;
catch
errordlg('Existe algn error, revise
la funcin de entrada','ERROR');

Codigo para el boton generar

Se obtiene la funcin ingresada en el edit


text, y se la linealiza para utilizarla en
posteriores clculos, damos valores a la
variable x con los datos obtenidos de
xmin y xmax.
Se evala la funcin en la variable y, y
la graficamos en el axes1 con el comando
plot.

Para enviar los datos a la uitable se


utiliza el comando set, y los valores se los
traspone utilizando la comilla simple despus de la variable x y de la variable y.
Se utiliza los comandos try y catch que nos sirven para hacer un control de los
posibles errores que se pudieran dar en el bloque de try, y si ese fuera el caso se
ejecuta el bloque del programa catch.
En este caso se mostrar un cuadro de dilogo de error con el comando errordlg,
que desplegar un mensaje establecido.

Aplicacion para calcular promedio desde datos de la uitable


Con sta aplicacin vamos a obtener datos desde la uitable y manipularlos para
realizar clculos, como por ejemplo el promedio.

function pushbutton1_Callback(hObject,
eventdata, handles)
datos=str2double(get(handles.uitable1,'da
ta'));
[ prom sum ] = promedio(datos);
datos
prom
sum
[ cov ] = covarianza(datos, prom);
cov
set (handles.text1,'String',['Promedios :
' num2str(prom)]);

function [ prom sum ] = promedio( datos )


num=length(datos(:,1));
col=length(datos(1,:));

Codigo del boton realizar calculos

for j=1:col
sum(j)=0;
for i=1:num
sum(j)=sum(j)+datos(i,j);
end
prom(j)=sum(j)/num;
end
end

En la funcin del push button tomamos


los
datos
de
la
uitable
y
los
transformamos
con
el
comando
str2double, a una variable tipo nmero, y
llamamos a la funcin promedio, que nos
devolver la suma y el promedio de los datos enviados, mismos que los
desplegaremos en el text1.

Funcion promedio
Recibe la variable datos, y obtiene el nmero de filas y columnas, para luego
realizar un promedio de todos los datos y devuelve las variables con el resultado de
la suma y el promedio.

Aplicacion para extraer datos de un archivo de texto

function pushbutton1_Callback(hObject,
eventdata, handles)
global datos_extraidos;
puntero = fopen('notas.txt','rt');
datos_extraidos = textscan(puntero,
'%3f', 'headerlines', 1);
datos_extraidos =
cell2mat(datos_extraidos);
set(handles.uitable1, 'data',
datos_extraidos);

global datos_extraidos;
contenido = get(hObject, 'String');
valor = get(hObject, 'Value');
contenido_valor = contenido(valor);
switch cell2mat(contenido_valor)
case 'Grafico de Dispersion'
x=1:length(datos_extraidos);
plot(x,datos_extraidos,'+b');
case 'Histograma'
hist(datos_extraidos,4);
case 'Regresin Lineal'
case 'Datos Estadsticos'
end

Con sta aplicacin vamos a extraer


datos desde un archivo de texto para
luego almacenarlos en una variable
global, y as manipularlos y realizar
clculos o grficas.

Codigo del boton extraer datos

En sta funcin y mediante el comando


fopen, extraemos los datos grabados en
el archivo notas.txt, y con el comando
textscan, les damos formato y los
almacenamos en la variable global
datos_extraidos,
misma
que
ser
transformada al tipo cell, para luego
poder ser desplegada en el objeto
uitable1.

Codigo del popupmenu

Obtenemos datos de la variable global datos_extraidos, y del popupmenu para


mediante la estructura switch, realizar las acciones para cada caso, como por
ejemplo para grfico de dispersin el cul ser visualizado en el axes1, con el
comando plot.

Aplicacin para facturacion de un restaurante con excel

function pushbutton1_Callback(hObject,
eventdata, handles)
val_s1 = 0;
val_s2 = 0;
val_s3 = 0;
val_s4 = 0;
tot_s = 0;
val_pf1 = 0;
val_pf2 = 0;
val_pf3 = 0;
val_pf4 = 0;
tot_pf = 0;
val_j1 = 0;
val_j2 = 0;
val_j3 = 0;
val_j4 = 0;
tot_j = 0;
[aux1, aux2]=xlsread('factura.xls',1);
aux2(:,:)={' '};
xlswrite('factura.xls',aux2);
fact{1}='FACTURA ';
x=3;

Con sta aplicacin haremos un


sistema para facturacin de un
pedido de restaurante, se obtendr
los datos de radiobuttons y de
checkbuttons, as como de edit
text que nos permitir ingresar el
nmero de productos en cada
caso.
Haremos uso de las propiedades
de objeto como enable, para hacer
imposible la modificacin mientras
no se seleccione la categora de
cada plato.
Ser calculado el total de lo pedido
y solamente de lo seleccionado
con el checkbutton, y se enviar
dicha factura a una hoja de excel.

Codigo del boton total pedido

Con ste cdigo se tomar en cuenta los valores primero de la hoja de clculo de
excel y sern encerados as como los valores de cada una de las variables utilizadas
para cada uno de los platos.
Se utilizar una variable tipo cell, para almacenar los valores de cada uno de los
tems de la factura a desplegar.

Se obtienen los datos de los edit text, y se los almacena en variables


independientes, y evala si est activado el checkbutton correspondiente y si es
verdadero hace el clculo necesario y a la vez almacena stos valores en la variable
fact.

clc;
dat_s1 = str2num(get(handles.edit1,
'String'));
dat_s2 = str2num(get(handles.edit2,
'String'));
dat_s3 = str2num(get(handles.edit3,
'String'));
dat_s4 = str2num(get(handles.edit4,
'String'));
if get(handles.radiobutton6,'Value')==1
val_s1 = dat_s1 * 2;
fact{x} = [num2str(dat_s1) ' Sopas de
fideo : $' num2str(val_s1) ' '];
x = x + 1;
end
if get(handles.radiobutton7, 'Value')==1
val_s2 = dat_s2 * 3;
fact{x} = [num2str(dat_s2) '
Yahuarlocros : $' num2str(val_s2) ' '];
x = x + 1;
end
if get(handles.radiobutton8, 'Value')==1
val_s3 = dat_s3 * 3;
fact{x} = [num2str(dat_s3) '
Sancochos : $' num2str(val_s3) ' '];
x = x + 1;
end
if get(handles.radiobutton9, 'Value')==1
val_s4 = dat_s4 * 2;
fact{x} = [num2str(dat_s4) ' Locros
de papas : $' num2str(val_s4) ' '];
x = x + 1;
end
tot_s = val_s1 + val_s2 + val_s3 +
val_s4;

Codigo de el uipanel

Con el uipanel obtenemos los valores de


los objetos que estn dentro de este, y
siendo el caso actual de los radiobuttons,
para mediante un switch habilitar o
deshabilitar otros objetos que dependan
de esta seleccin.

function uipanel1_SelectionChangeFcn(hObject,
eventdata, handles)
sel = get(hObject, 'String');
switch sel
case 'Sopas'
set(handles.radiobutton6, 'Enable',
'on');
set(handles.radiobutton7, 'Enable',
'on');
set(handles.radiobutton8, 'Enable',
'on');
set(handles.radiobutton9, 'Enable',
'on');
set(handles.edit1, 'Enable', 'on');
set(handles.edit2, 'Enable', 'on');
set(handles.edit3, 'Enable', 'on');
set(handles.edit4, 'Enable', 'on');
set(handles.text8, 'Enable', 'on');
set(handles.text9, 'Enable', 'on');
set(handles.text10, 'Enable', 'on');
set(handles.text11, 'Enable', 'on');

'off');
'off');

set(handles.radiobutton10, 'Enable',
set(handles.radiobutton11, 'Enable',

You might also like