You are on page 1of 6

Programación en GUI de MATLAB

CREACIÓN DE PROGRAMAS EN GUI

PROGRAMA N°1: Desviación de una viga en voladizo

Una viga voladiza horizontal se somete a una carga vertical uniforme. La viga se extiende
desde su extremo fijo (x=0) hasta su extremo libre (x=L). La desviación máxima δmax se
produce en (X=L). La desviación δ en el punto (x=αL) está relacionada con δmax
mediante:

𝛿
𝑓(𝛼) = 𝛼 4 − 4𝛼 3 + 6𝛼 2 − 3 =0
𝛿𝑚𝑎𝑥

Aplicar el método de búsqueda incremental para resolver la ecuación para el valor de α al


que δ/δmax es igual a 0.75.

Crear un programa en GUI que halle la deflexión máxima de una viga en voladizo si
se tiene como dato una ecuación en función de 𝛼, es decir, 𝑓(𝛼).

SOLUCIÓN

Paso 1: Ingresar a GUI y crear uno nuevo.

File>New>GUI Del siguiente cuadro de diálogo GUIDE Quick


Start (Guía de Inicio Rápido), elegir Blank GUI
(Default) > OK

Ejecutar para guardarlo: >Run Figure


Al ejecutarlo aparece una ventana (*.fig) con el nombre con que se ha guardado el programa y un
archivo *.m (donde se procederá a programar).

1
Programación en GUI de MATLAB

Paso 2: Diseñar el GUI en *.fig


File > Preferences > Show names in component palette.

Se escoge un control, se hace clic y se arrastra hasta donde se desea. También se pueden
duplicar controles, agrandarlos y alinearlos.

Se edita cada control haciendo doble clic sobre él, aparecerá la ventana Inspector Property.

2
Programación en GUI de MATLAB

Edición del editext:Tag (nombre del control en el campo de programación *.m),


String (Etiqueta del control, lo que se muestra en el programa).

Izq. (edición de un pushbutton), Der. (edición de un panel).


Es importante cambiar el tag de los controles por nombres descriptivos para reconocerlos al
momento de programar en *.m
Finalmente:

3
Programación en GUI de MATLAB

Al ejecutarlo (F5):

Paso 3: Programar los controles en *.m


Primero editamos el inicio, que controles queremos que aparezcan al abrir el programa:
(Show functions)

4
Programación en GUI de MATLAB

Luego el cursor les lleva a una determinada línea de programación, en ella editamos la programación
respectiva, de tal manera que cuando se ejecute el programa se cumplirá los diferentes mandatos “al
inicio”.
➢ Programación del opening:

function Deflexion_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;

Comandos para hacer visible funciones:


set(handles.p_ingreso,'visible','on');
set(handles.p_result,'visible','of');

Comandos para mostrar imágenes:


ima1=imread('unsch.png');
axes(handles.unsch1);
image(ima1);axis off;
ima2=imread('puente.jpg');
axes(handles.axes2);
image(ima2);axis off;

% Update handles structure


guidata(hObject, handles);

➢ Programación del pushbutton:

function b_calcular_Callback(hObject, eventdata, handles)

set(handles.p_ingreso,'visible','on');
set(handles.p_result,'visible','on');

syms a
fun=get(handles.ecuacion,'string');
f=inline(vectorize(fun));
Comandos para obtener datos:
maxiter=str2double(get(handles.maxit,'string'));
h=str2double(get(handles.h,'string'));
a0=str2double(get(handles.x0,'string'));

% Método de busqueda incremental:


iter=0;

5
Programación en GUI de MATLAB
i=0;
a=a0;
ma=[];
mfa=[];
miter=[];
msol=[];
while f(a0)*f(a)>0 && i<maxiter;
iter=iter+1;
miter=[miter iter];
i=i+1;
a=a0+(i*h);
ma=[ma a];
mfa=[mfa f(a)];
end

matriz=[ma' mfa'];
SOLUCION=a-h*f(a)/(f(a)-f(a-h));

Comandos para mostrar datos:


set(handles.result,'string',SOLUCION);
set(handles.t_matriz,'data',matriz);

You might also like