Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Creación de una interfaz gráfica básica en Matlab utilizando GUIDE, Diapositivas de Química

En este documento se explica cómo crear una interfaz gráfica básica en Matlab utilizando el entorno GUI de Matlab y el editor de GUIDE. Se detalla el proceso de creación de botones, cajas de texto, etiquetas y cómo programar las acciones de los botones. Además, se muestra cómo convertir código Matlab tradicional a código adaptado para la interfaz gráfica. El documento incluye ejemplos prácticos.

Qué aprenderás

  • ¿Cómo se convierten códigos Matlab tradicionales a códigos adaptados para Matlab GUI?
  • Cómo se crea una interfaz gráfica básica en Matlab?
  • ¿Qué herramientas ofrece el entorno GUI de Matlab para la creación de interfaces gráficas?
  • ¿Cómo se programan las acciones de los botones en Matlab GUI?
  • ¿Cómo funciona el editor GUIDE en Matlab?

Tipo: Diapositivas

2019/2020

Subido el 20/04/2022

flavi111
flavi111 🇦🇷

4 documentos

1 / 25

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19

Vista previa parcial del texto

¡Descarga Creación de una interfaz gráfica básica en Matlab utilizando GUIDE y más Diapositivas en PDF de Química solo en Docsity!

GUI (Graphical User Interfase) nos ayuda a crear una interfaz grafica para mejor

comodidad del usuario.

La forma de ingresar al entorno GUI de Matlab, es ingresando ‘ guide ’ en el

command window de Matlab y eligiendo la opción Blank GUI (ver figura)

Podemos arrastrar botones, cajas de texto, cuadros para graficas, etc

PushButton: Este control

servirá para programar

cálculos de nuestro

programa o salir de el.

Edit text: Este control

servirá para ingresar

datos de nuestros calculo

o también para mostrar

resultados.

Axes: Este control servirá

para insertar cualquier

imagen que queramos o

una grafica a partir de

datos x-y

Static text: Este control

servirá para colocar

títulos o algún otro

comentario en nuestra

guide

Table: Para colocar

cantidad de datos en

columnas, todos los

valores de nuestras

iteraciones irán ahí

Controles mas importantes de la Paleta de Diseño y Edición de la GUI

Para colocar cualquier objeto de la Paleta de Diseño simplemente hacer clic y luego

dibujarlo en nuestra GUI vacía (también se puede arrastrar y soltar)

Cada objeto tiene varias propiedades que podemos cambiar, para cambiar

estas propiedades hacer doble click sobre el objeto quieras cambiar, por

ejemplo sobre el pushbutton.

Aparecerá la ventana Inspector, ahí hay 5 propiedades subrayadas que son

las mas importantes:

FontSize: Cambia el tamaño de fuente, simplemente escribes en numero que

quieras.

FontWeight: Para poner negrilla a nuestro texto, eliges entre las opciones que

presenta.

HorizontalAlignment: Alineación izquierda, derecha o central de nuestro

texto.

String: Contenido que muestra el texto, por ejemplo la palabra Calcular que

muestra el pushbutton.

Tag: Nombre del objeto (muy importante a la hora de programar)

Se cambio la

propiedad String

Donde: la sentencia input(‘ ’) nos sirve para pedir el valor de una variable

la sentencia fprintf(‘ ’, ) nos sirve para mostrar el resultado en pantalla

Supongamos que tenemos el siguiente código en un archivo m de MatLab y produce

el siguiente resultado

Llevaremos este código a GUIDE

PASO 2: Se ha creado una GUI en

blanco, arrastrar:

3 edit text

4 pushbuttons

4 statics text

Acomodarlos como en la figura

inferior

PASO 3: Hacer doble click sobre cada

objeto para acceder a sus propiedades

y cambiar las siguientes propiedades

String:

  • Se deja vacio en los 3 edit text
  • Se coloca a =, b=, c= en 3 de los

static text y calculadora básica en el

ultimo

  • Se coloca Suma, Resta,

Multiplicacion, Division en cada uno

de los pushbuttons

Todo debería quedar como en la foto superior

La idea es que podamos colocar valores en las cajas

vacías (edit text) de a y b, presionar el pushbutton sumar

y el resultado salga en la caja de c.

De igual forma presionamos restar y el resultado salga en

la caja de c y así con las otras 2 operaciones

matemáticas.

Comencemos haciendo lo siguiente:

Click derecho en el botón

sumar y elegir Callback

a=str2double(get(handles.edit1, 'String')); b=str2double(get(handles.edit2, 'String')); c=a+b; set(handles.edit3, 'String', num2str(c)) a=input('Ingrese a: '); b=input('Ingrese b: '); c=a+b; fprintf('c = a + b = %f \n',c)

Código original de matlab (diapositiva 9) Código adaptado para nuestra GUI

La sentencia get remplaza a input para pedir datos cuando se usa una GUI

variable=input(‘comentario cualquiera: ');

variable=str2double(get(handles.edit2, 'String'));

Descripción de la sentencia anterior:

variable: nombre de nuestra variable, a, b, c, etc.

str2double(): conversión de cadena de texto a numero de doble precisión (muy importante).

Str2double(variable a convertir)

get(): funciona como el input, obtiene cualquier tipo de valor de un objeto (edit text,

pushbutton, etc.). Se coloca de la forma get(handles.objeto, ‘Propiedad de la cual tomar el

valor’)

handles: sentencia q siempre debe colocarse, sirve para decirle al get de quien va obtener el

valor. Siempre se coloca de en la forma: handles.objeto donde en este caso objeto es el edit

edit2 (caja de texto): objeto al cual el handles va usar para que el get tome un valor.

‘String’: Propiedad del objeto del cual se tomara el valor. La propiedad String es en la cual se

colocan

los valores numéricos o de texto, pero siempre lo interpreta como texto, yo podría poner valor 25

que es un valor numérico pero el objeto lo entenderá como texto siempre, es por eso que se

usa str2doublé

para convertir a numero.

function pushButton1_Callback(hObject, eventdata, handles) %de esta forma pido la variable a a=str2double(get(handles.edit1, 'String')); %de esta forma pido la variable b b=str2double(get(handles.edit2, 'String')); %hago la operación matemática c=a+b; %muestro el valor obtenido en la variable c en la caja de texto edit set(handles.edit3, 'String', num2str(c))

fprintf('c = a + b = %f \n',c) set(handles.edit3, 'String', num2str(c))

Código original de matlab (diapositiva 9) Código adaptado para nuestra GUI

La sentencia set remplaza a fprintf a la hora de imprimir datos cuando se usa una GUI, se escribe

muy parecido a la sentencia get

get(handles.edit2, 'String')

set(handles.edit3, 'String', num2str(c))

En la sentencia get() indicamos que tome el valor de la propiedad String, en cambio en set() tenemos que

especificar que valor exactamente queremos asignarle a la propiedad String. Y la propiedad String solo acepta

texto así que si queremos colocar un numero ahí debemos convertirlo con num2str(variable)

Aquí tenemos el código completo que debe ir en el pushbutton para que se realice la operación de suma

El mismo código deberían copiar y pegar en los botones de resta, multiplicación y

división de nuestro programa, lo único que cambia es la operación matemática: - / *

(diapositiva 12)

Primero observar que el anterior código calcula una valor de fx, dfx, x1, error para cada

iteración y vuelve a calcular los mismos para la siguiente iteración remplazando los valores

obtenidos en iteraciones anteriores y de esta forma no podemos crear una tabla de GUI.

Para crear la tabla de GUI necesitamos que cada variable hallada no contenga un solo

valor a la vez sino que guarde un grupo de valores fx → fx(i), hablamos de crear un vector

para cada variable y en esa forma podríamos colocarlos en una tabla en nuestra GUI.

Que genera el mismo resultado que vimos con el código anterior (diapositiva 16)

Simplemente aumentamos un contador i, y

creamos las variables Xov(i) fxv(i) y las otras

aumentándoles una letra para que el programa

no las confunda

clc,clear fun=@(x) x^3+7x-3sin(x)+exp(x)-7; Xo=input('Ingrese valor inicial: '); Xov(1)=Xo; Tol=input('Ingrese tolerancia: '); h=0.00001; errror=10; i=1; while errror>Tol Xov(i)=Xo; fx=fun(Xo); fxv(i)=fx; dfx=(fun(Xo+h)-fun(Xo-h))/(2*h); dfxv(i)=dfx; X1=Xo-fx/dfx; X1v(i)=X1; errror=abs(X1-Xo); errrorv(i)=errror; Xo=X1; i=i+1; end fprintf('Xo = %f \t fx = %e\t dfx = %5.6f \t X1 = %5.6f \t error = %g \n',[Xov;fxv;dfxv;X1v;errrorv])

Crear una Blank GUI que contenga:

2 static text y en su propiedad String poner xo= y tol= respectivamente

2 edit text y en su propiedad String borrar el contenido de ambos

1 pushbutton y en su propiedad String poner Calcular

1 table a la cual se le hara click derecho y elegiremos Table Property Editor

En la propiedad Columns , usando el botón

Insert añadir tantas columnas como sea

necesario y en campo name colocar lo que

queremos que se imprima como en la

fotografía inferior.

Ahora, como ya se había dicho y hecho anteriormente, tenemos que cambiar los input()

con get()

Xo=input('Ingrese valor inicial: '); Xov(1)=Xo; Tol=input('Ingrese tolerancia: '); Xo=str2double(get(handles.edit1,'String')) Xov(1)=Xo; Tol=str2double(get(handles.edit2,'String'))

Debería quedar así hasta el momento

fprintf('Xo = %f \t fx = %e\t dfx = %5.6f \t X1 = %5.6f \t error = %g \n',[Xov;fxv;dfxv;X1v;errrorv])

Ahora debemos remplazar la línea fprintf que nos servía en MatLab por una que nos servirá para la GUIDE.

Como lo que queremos imprimir datos en la tabla, usaremos la sentencia set para remplazar la sentencia fprintf. Primero

creamos una variable llamada datos en la cual juntaremos todos los vectores creados: Xov, fxv, dfxv, x1v, errrorv.

Recordar que estos vectores se calculan como vectores fila, los necesitamos en forma de columna por lo cual se usara

el signo ‘ para obtener su transpuesta Xov→Xov’

datos=[Xov' fxv' dfxv' X1v' errrorv']

set(handles.uitable1,'Data',datos)

datos=[Xov' fxv' dfxv' X1v' errrorv']

set(handles.uitable1,'Data',datos)

La siguiente línea se encarga de asignar la variable datos que contiene todas las columnas que

calculaba fprintf y los coloca en la tabla.

set = asignar un valor a un objeto

handles.objeto = obtiene el objeto al cual se va asignar el valor

uitable1 = es el objeto al cual se le asignara el valor

Data = la propiedad a la cual asignar el valor

datos = el valor que se va asignar al objeto

El código final asignado al

pushbutton quedara así: