Sie sind auf Seite 1von 25

Taller de MATLAB

Orientado a Ingeniera Civil



En el presente texto se pretende presentar la herramienta
de programacin MATLAB para la resolucin de
problemas de ingeniera. Se enfoca en la creacin de
interfaces grficas.





Felipe Guerrero Arias


Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 1

INDICE
1. Introduccin...................................................................................................................... 2
1.1. Que es MATLAB ................................................................................................................... 2
1.2. Problemas habituales en Ingeniera .................................................................................... 2
2. Manejo de Matrices .......................................................................................................... 3
2.1. Operaciones Bsicas ............................................................................................................ 3
2.2. Enfoques Simblico y Numrico ......................................................................................... 4
Ejemplo Clculo Simblico .................................................................................................. 4
Clculo Numrico ................................................................................................................ 5
3. Formato de Sentencias de Control ..................................................................................... 6
4. Creacin de Funciones ....................................................................................................... 7
Ejemplo ................................................................................................................................ 7
5. Grficos ............................................................................................................................ 8
5.1. Grficos 2D Funcin Plot .................................................................................................. 8
5.2. Grficos 3D .......................................................................................................................... 9
6. Ejercicios de Aplicacin ................................................................................................... 10
6.1. Diagramas de Momento y Corte Estructuras Isostticas ............................................... 10
6.2. Hidrulica .......................................................................................................................... 11
7. Interfaz Grfica de Usuario GUI (Graphics User Interface) .............................................. 12
7.1. General .............................................................................................................................. 12
7.2. Metodologa de Aplicacin ............................................................................................... 13
7.3. Componentes de una GUI ................................................................................................. 13
7.4. Ejemplo GUI ....................................................................................................................... 16
Procedimiento Componentes ........................................................................................ 18
Procedimiento Eventos Callback .................................................................................... 20
8. Solucin Ejercicios de Aplicacin ...................................................................................... 23
8.1. Estructuras Isostticas ....................................................................................................... 23
8.2. Hidrulica .......................................................................................................................... 24


Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 2

1. Introduccin
1.1. Que es MATLAB
MATLAB es una de las muchas sofisticadas herramientas de computacin disponibles en el
comercio para resolver problemas de matemticas, tales como, Mathematica y MathCad. A pesar
de lo que afirman sus defensores, ninguna de ellas es la mejor.
Todas tienen fortalezas y debilidades. Cada una permitir efectuar clculos matemticos
Bsicos, pero difieren en el modo como manejan los clculos simblicos y procesos matemticos
ms complicados, como la manipulacin de matrices.

MATLAB no siempre es la mejor herramienta para usar en una tarea de programacin. El
programa destaca en clculos numricos, especialmente en los relacionados con matrices y
grficas, pero usted no querr escribir un programa de procesamiento de palabras en MATLAB.
C++ y FORTRAN son programas de propsito general y seran los programas de eleccin para
aplicaciones grandes como los sistemas operativos o el software de diseo.

Este documento se enfoca en dar nociones bsicas de programacin y creacin de interfaces
grficas de usuario de programas relacionados con la Ingeniera Civil.
1.2. Problemas habituales en Ingeniera
Es habitual en Ingeniera enfrentarse con problemas de carcter iterativo, es decir, la incgnita del
problema no se puede determinar de forma directa. Debido a esto, es necesario recurrir a
mtodos numricos para resolver dichos problemas. Por ejemplo, determinar el valor de x de la
siguiente ecuacin para un cierto valor fijo de :
() (

)
El problema es de carcter iterativo, es decir, dado un cierto valor de arbitrario se calculan
ambos lados de la expresin y se verifica si se cumple la igualdad. Este proceso puede llevar a n
iteraciones para poder llegar a la solucin. Adems, si posteriormente es necesario obtener datos
para varios valores de , el proceso se vuelve tedioso si se hace manualmente.
No obstante, tambin existen muchas expresiones fciles de resolver de manera directa, por lo
cual es necesario conocer las herramientas disponibles en el mercado y decidir cul cumple de
manera efectiva y eficaz con el objetivo planteado por el ingeniero para resolver los distintos
problemas a los que se enfrenta.


Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 3

2. Manejo de Matrices
2.1. Operaciones Bsicas
En MATLAB todo elemento es una matriz o vector de una dimensin dada. Dado que MATLAB
significa laboratorio de matrices, es de principal inters manejar de forma adecuada la asignacin
de una matriz o vector. Escribir las siguientes lneas de cdigo en un Script:
clear all
clc
%Siempre comenzar con las 2 lineas anteriores en los SCRIPS PRINCIPALES
%clear all: Borra todas las variables en el Workspace
%clc: Limpia la pantalla de command windows

%MATRICES Y VECTORES

a=1%Matrix de 1x1
a=1:1:10%Matriz de 1x10 (valor inicial: incremento : valor final)
a=linspace(1,5,10)%Matriz de 1x10 (valor inicial : valor final : espacio)
a=[1 2 3; 4 5 6; 7 8 9]%Matriz de 3x3
a=[1,2,3;4,5,6;7 8 9]%Matriz de 3x3 anloga a la anterior
a=[1 2 3
4 5 6
7 8 9]
a(3,2)%Accede a la componente de la fila 3 y columna 2
a(1,:)%Toma todos los elementos de la primera fila
a(:,2)%Toma todos los elementos de la segunda columna
a(1,1)=100 %Asigna a la componente 1,1 el valor de 100 en la matriz a
a=[a;[10 11 12]]%Agrega una fila [10 11 12] a la matriz a
a=[[13 14 15];a]%Anlogo a lo anterior

b={'hola' 'que ','tal'} %Cell de 1x3
b{1}%Accede a la primera componente de la cell b
b{1}(2)%Accede a la segunda componente del string correspondiente a la
%primera componente de la cell b

a=[1 2 3; 4 5 6; 7 8 9]; %Matriz de 3x3
det(a)%Determinante de la matriz a
inv(a)%Inversa de la matriz a
sum(a)%Suma todos los componentes de la matriz a usar "help sum"
length(a)%Devuelve el MAYOR largo de la matriz
size(a)%Entrega las n filas y m columnas de la matriz a
diag(a)%vector de la Diagonal de a
max(a)%Mximo de la matriz a
min(a)%Minimo d la matriz a
sort(a)%Ordena la matriz a de menor a mayor
a'%Traspuesta del vector a

a=[1 2 3];
b=[4 5 6];

c=a+5%Suma 5 a todas las componentes de c
c=2*a%Multiplicacin por escalar
c=a+b%Suma de matrices
c=a.^b%Multiplicacin componente a componente
c=a.^b%Elevacin componente a componente
c=a*b'%Multiplicacin de matrices

%Otros comandos
eye(3,3)%Matriz diagonal de 1
zeros(2,2)%Matriz de ceros
ones(3,3)%Matriz de unos
Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 4

2.2. Enfoques Simblico y Numrico
En MATLAB, los problemas se pueden abordar mediantes 2 enfoques o mtodos:
Mtodo Simblico
Mtodo Numrico
Supongamos que queremos resolver el problema diagrama de fuerzas internas de corte y
momento de una viga simplemente apoyada con una carga uniformemente distribuida.






Figura 1.- Viga Simplemente apoyada con carga uniformemente distribuida
Ejemplo Clculo Simblico
clear all
clc
%EJEMPLO CALCULO SIMBOLICO VIGA SIMPLEMENTE APOYADA
syms x %Declaracin de la variable simblica "x"
w=1; %Carga w
L=1; %Largo de la Viga
M=w*L/2*x-w*x^2/2; %Funcin de Momento de la Viga
V=diff(M,x); %Corte en la Viga
%Por ejemplo, evaluar en L/2:
x=L/2; eval(M) , eval(V)
%Graficar el diagrama de Momento
figure(1)
ezplot(-M,[0 L])
grid on
%Graficar Diagrama de Corte
figure(2)
ezplot(V,[0 L]); grid on
%Graficar Diagrama de Momento y Corte en el mismo Grfico
figure(3)
hold on
ezplot(-M,[0 L]); ezplot(V,[0,L])
hold off
grid on
%Graficar Diagrama de Momento y Corte en una misma figura
%Ver "help subplot"->Doc
figure(4)
subplot(2,1,1); ezplot(-M,[0 L]);
title('Momento'); xlabel('x'); ylabel('Momento Tm'); grid on
subplot(2,1,2); ezplot(V,[0,L]);
title('Corte'); xlabel('x'); ylabel('Corte T'); grid on


Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 5

Clculo Numrico
clear all
clc
%EJEMPLO CALCULO NUMERICO VIGA SIMPLEMENTE APOYADA

w=1; %Carga w
L=1; %Largo de la Viga
x=0:0.01:L; %Vector para evaluar
%2 FORMA DE EVALUAR:
%Para la evaluacin se genera una matriz de datos evaluados en "x"
%PRIMERA FORMA:
M=w*L/2*x-w*x.^2/2; %Funcin de Momento de la Viga
V=w*L/2-w*x; %Corte en la Viga
%SEGUNDA FORMA:
%Generar la matriz de datos mediante un for evaluando componente a
%componente
for i=1:length(L)
M(i)=w*L/2*x(i)-w*x(i)^2/2;
V(i)=w*L/2-w*x(i);
end
%Por ejemplo, evaluar en L/2, simplemente se accede a la componente:
pos=find(x==L/2)
M(pos)
V(pos)
%Graficar el diagrama de Momento
figure(1)
plot(x,-M)
grid on
%Graficar Diagrama de Corte
figure(2)
plot(x,V); grid on
%Graficar Diagrama de Momento y Corte en el mismo Grfico
figure(3)
hold on
plot(x,-M,'r.-'); plot(x,V,'m') %Ver "help plot"->Doc
hold off
grid on
%Graficar Diagrama de Momento y Corte en una misma figura
%Ver "help subplot"->Doc
figure(4)
subplot(2,1,1); plot(x,-M);
title('Momento'); xlabel('x'); ylabel('Momento Tm'); grid on
subplot(2,1,2); plot(x,V);
title('Corte'); xlabel('x'); ylabel('Corte T'); grid on


Se observar que por ambos mtodos es posible obtener el mismo resultado. Cabe destacar que en
general el mtodo simblico no se utiliza. Este ltimo es ms til cuando se utiliza para fines
acadmicos como clculo de derivadas, integrales, entre otros.

Nota: En la seccin 5 se presentan ms propiedades de la funcin plot.










Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 6

3. Formato de Sentencias de Control
Al igual que en todo lenguaje de programacin las sentencias de control son IF, FOR, WHILE y
SWITCH CASE.
Sentencia IF
if Condicin If Condicin
Sentencia Sentencia1
end else
Sentencia2
end
Sentencia FOR
for variable = valorInicial : incremento : valorFinal
Sentencia
End
Sentencia SWITCH CASE
switch expresin
case valor de expresin1
case valor de expresin1

Otherwhise
case valor de expresin1
end

Sentencia WHILE
while Condicin
Sentencia
end
Operadores Lgicos y Relacionales
< menor que
<= menor o igual a
> mayor que
>= mayor o igual a
== igual a
=~ no igual a
&& y
|| o
Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 7

4. Creacin de Funciones
MATLAB posee funciones por defecto. Por ejemplo sin(), cos(), log(), det,(), inv(), etc... Es posible
crear funciones propias mediante la siguiente sentencia:
function Parmetros de Salida = nombreFuncin( Parmetros de entrada )

%Algoritmo

end
Esta funcin debe ser creada en un script aparte del cdigo principal en donde se utilice. Es de
gran utilidad cuando existe un algoritmo que necesite ser ejecutado en reiteradas ocasiones en el
algoritmo principal.
Ejemplo
Supongamos que necesitamos calcular las races de un polinomio cuadrtico de la forma:


Entonces, las races del polinomio son:


Generar una funcin que se llame pol2 que reciba como argumentos de entrada a,b,c y que
entregue las races del polinomio cuadrtico

.
function x = pol2(a,b,c)

x(1)=(-b+sqrt(b^2-4*a*c))/(2*a);
x(2)=(-b-sqrt(b^2-4*a*c))/(2*a);

end
Es importante destacar que el cdigo principal y las funciones creadas deben estar en el mismo
directorio de trabajo. Para llamar a la funcin simplemente, desde el cdigo principal se llama
como sigue:
Raices = pol2(1,9,3)

El vector Raices de dimensin 2x1 contiene las races del polinomio cuadrtico:





Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 8

5. Grficos
Una de las grandes ventajas de MATLAB son las herramientas disponibles para generar grficos.
No obstante, no siempre son triviales de utilizar. Para ver las funciones relacionadas con los
objetos grficos de MATLAB, teclear:

>> help graph2d %representaciones en dos dimensiones (2D)
>> help graph3d %representaciones en tres dimensiones (3D)
>> help specgraph %grficos especiales
>> help graphics %comandos de bajo nivel
>> help plot %herramienta para graficar ms utilizada
5.1. Grficos 2D Funcin Plot
La funcin plot es la que permite generar grficos en 2D, que son los normalmente utilizados.
Existen numerosas propiedades de esta funcin, para lo cual se recomienda revisar help plot y
acceder a doc plot. A continuacin se resumen algunos colores y tipos de lnea disponibles:
Colores
y Amarillo m Magenta c Cyan r Rojo
g Verde b Azul w Blanco k Negro

Tipo de Lnea
. Punto o Crculo x Cruz + Signo "+"
* Estrella s Cuadrado d Diamante v Tringulo
- Lnea slida : Segmentado -. Lnea-Punto -- Lnea-Lnea

Para las etiquetas existen las funciones title, legend, xlabel, ylabel. Por ejemplo, analizar y ejecutar
las siguientes lneas de cdigo:
clear all
clc
x=0:pi/20:2*pi;
y=sin(x);
z=cos(x);
figure(1)
hold on
plot(x,y,'LineWidth',2)
plot(x,z,'k*','LineWidth',1.5)
hold off
legend('Seno','Cos');xlabel('x');ylabel('Y(x)');grid on
figure(2)
plot(x,[y' z'])
figure(3)
x = -pi:pi/10:pi;
y = tan(sin(x)) - sin(tan(x));
plot(x,y,'--rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','g',...
'MarkerSize',10)
Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 9

5.2. Grficos 3D
No se entrar en detalles sobre los grficos 3D, no obstante a continuacin se muestran algunos
ejemplos de algunas funciones disponibles.

Figura 2.- Algunos grficos en 3d en MATLAB
Cabe sealar que no se entra en detalle en la generacin de grficos debido a que este documento
se enfoca principalmente a la creacin de Interfaces Grficas de Usuario lo cual se abarca en la
siguiente seccin.
Adems, como se destac previamente, existe una gamma herramientas grficas disponibles y es
responsabilidad del lector aprender a utilizar el comando help de MATLAB, o bien un buscador
en Internet dependiendo las necesidades de cada problema.


Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 10

6. Ejercicios de Aplicacin
6.1. Diagramas de Momento y Corte Estructuras Isostticas
Generar funciones para calcular diagramas de Momento y Corte para los siguientes casos
utilizando las ecuaciones de equilibrio. Usar un enfoque numrico en MATLAB:
1.- Viga Simplemente Apoyada con carga uniformemente distribuida y largo






2.- Viga Simplemente Apoyada con Carga Puntual a una distancia arbitraria medida desde el
apoyo y de largo





3.- Viga en Voladizo con carga uniformemente distribuida y largo





Las funciones deben recibir los parmetros necesarios expuestos en las figuras anteriores y
entregar en una matriz los valores con la posicin, Momento y Corte en la Viga.







Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 11

6.2. Hidrulica
Generar funciones para calcular la altura de escurrimiento en canales de distintas secciones
utilizando la ecuacin de Manning:


Dnde:
Caudal Porteado
Pendiente longitudinal del canal
Coeficiente de rugosidad de Manning
rea de escurrimiento

Permetro Mojado

Figura 3.- rea, Permetro Mojado y Radio Hidrulico para distintas secciones de canal.
La funcin debe entregar la altura de escurrimiento en el canal recibiendo los parmetros
necesarios para su clculo. Hint: Use la funcin fzero con un intervalo finito [x0 x1]. Para el caso
de seccin circular usar H=0.8D como mxima altura permisible de diseo.
Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 12

7. Interfaz Grfica de Usuario GUI (Graphics User Interface)
7.1. General
Una interfaz grfica es el vnculo entre el usuario y un programa computacional, constituida
generalmente por un conjunto de comandos o mens, instrumentos y mtodos por medio de los
cuales el usuario se comunica con el programa durante las operaciones que se desean realizar,
facilitando la entrada y salida de datos e informacin.
Una interfaz es una de las partes ms importantes de cualquier programa puesto que determina
qu tan factible y preciso ser el desempeo del programa ante los comandos que el usuario
pretenda ejecutar. Aunque un programa sea muy poderoso, si se manipula por medio de una
interfaz pobremente elaborada, tendr poco valor para un usuario inexperto. Es por esto que las
interfaces grficas tienen una gran importancia para usuarios inexpertos o avanzados de cualquier
programa ya que facilitan su uso.

Ejemplos de interfaces grficas son las ventanas de Word, Excel, la ventana de Matlab entre otras.
Una interfaz grfica consta de botones, mens, ventanas, etc, que permiten utilizar de una manera
muy simple y en ocasiones casi intuitiva programas realizados en ambientes como Windows y
Linux. Las interfaces grficas tambin se conocen como interfaces de usuario.

El nombre en ingls de las interfaces grficas es Graphical User Interface y se denominan GUI, por
lo que nosotros tambin nos referiremos a ellas de la misma manera.

MATLAB nos permite realizar GUIs de una manera sencilla usando una herramienta llamada GUIDE
(GUI Development Environment). En este captulo presentaremos una introduccin muy completa
a las tcnicas en MATLAB para crear interfaces grficas.

Una vez que los controles estn en posicin se editan las funciones de llamada (Callback) de cada
uno de ellos, escribiendo el cdigo de MATLAB que se ejecutar cuando el control sea utilizado.
Siempre ser difcil disear GUIs, pero no debera ser difcil implementarlas.

El beneficio que proporciona el uso de GUIs es evidente, ya que permiten al usuario ejecutar
cmodamente cdigo desarrollado en MATLAB sin necesidad de cumplir la incmoda sintaxis
funcional necesaria cuando se trabaja desde la lnea de rdenes. A diferencia de la ejecucin de
funciones o scripts de MATLAB, la ejecucin de GUIs no predetermina el flujo de ejecucin del
cdigo. Es el usuario, a travs de su interaccin con el GUI, el que determina el orden en que se
ejecutan las diferentes rdenes y funciones desarrolladas. Otra diferencia importante es que la
ejecucin no termina cuando finaliza la ejecucin del script o funcin, sino que el GUI permanece
abierto, permitiendo al usuario invocar la ejecucin de ese u otro cdigo desarrollado.





Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 13

7.2. Metodologa de Aplicacin
El procedimiento que se recomienda para crear interfaces es el siguiente:
1. Generar el algoritmo en un script como se realiza normalmente.
2. Definir los parmetros relevantes que deban ser ingresados por el usuario
3. Definir un diseo de interfaz grfica de acuerdo a los 2 puntos anteriores.
A continuacin se presenta un ejemplo de una interfaz grfica:

Figura 4.- Ejemplo de Interfaz grfica
7.3. Componentes de una GUI
Una GUI puede estar formada por una gran variedad de componentes. La cantidad y tipo de
componentes deben ser elegidas de acuerdo a la magnitud del proyecto. Ciertas componentes
cumplen con funciones muy similares entre s, sin embargo, existen leves diferencias, ya sea en su
programacin, aspecto o uso. El diseador de la GUI debe ser capaz de al menos tener claro cules
son las variables mnimas necesarias que deben ser ingresadas por el usuario para el correcto
funcionamiento de la Aplicacin generada.
Para comenzar la creacin de una GUI, se escribe en la lnea de comandos guide. Y se selecciona
Blank GUI (Default). Siempre se utiliza esta ltima opcin para comenzar la creacin de una GUI.
A continuacin se presentan las componentes disponibles en MATLAB para generacin de GUIs
Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 14


Figura 5.- Componentes de una GUI
Static Text

Un static text puede exhibir smbolos, mensajes o incluso valores numricos de una GUI y puede
colocarse en un lugar deseado. El contenido de un texto exhibido puede modificarse si es
necesario. Esto se hace con el comando set.

Men desplegable

Los pop-up mens difieren de los mens de interfaz con el usuario en que pueden aparecer en
cualquier punto de la ventana de la figura, mientras que los mens de interfaz con el usuario solo
se localizan en la parte superior.

Push button

Los Push button generan una accin cuando hacemos click con el puntero del ratn sobre ellos.
Cuando se da click en un push button, aparece presionado; cuando se suelta el botn del ratn, el
botn aparece levantado; y su rutina de llamada se ejecuta.

Casilla de verificacin

Las casillas de verificacin (Check Box) estn diseadas para realizar operaciones de
encendido/apagado. Las posiciones de encendido/apagado se registran en Value que puede
examinarse con get(handle, value).
Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 15

Botn de radio

Cuando solo se usa un botn de radio (Radio Button), no existe diferencia funcional alguna con
respecto a una casilla de verificacin. Por otro lado, los botones de radio en grupo son
mutuamente exclusivos (es decir, si un botn esta encendido, todos los dems botones se
apagan), mientras que las casillas de verificacin son independientes entre s. Sin embargo, esta
caracterstica exclusiva de los botones de radio slo puede implementarse mediante la
programacin del usuario en la cadena de invocacin.

Barra deslizadora

Los sliders aceptan datos de entrada numricos con un rango especfico. Los usuarios mueven la
barra dejando presionado el botn del mouse y arrastrndola, haciendo click en la flecha. La
posicin de la barra indica un valor numrico.

Texto editable

El dispositivo de texto editable (Edit Text) permite al usuario teclear una cadena de entrada. Se
pueden escribir varios valores numricos en forma de vector o matriz como cadena mediante el
mismo dispositivo; esta cadena se convertir posteriormente en valores numricos con el
comando str2num.

Panel

El estilo Paneles puede servir para agrupar dispositivos como lo botones de radio o las casillas de
verificacin.

Botn de activacin

El toggle button genera una accin que indica un estado binario (on u off). Cuando se hace click en
un toggle button, aparece presionado y permanece as hasta que se suelta el botn del mouse, y
en ese momento ejecuta la llamada. Un click posterior del mouse regresa al toggle button a su
estado original y vuelve a ejecutar la rutina de llamada.

Cajas de lista

El componente List Box muestra una lista de artculos y permite a usuarios seleccionar unos o ms
artculos.

Axes

Permite mostrar resultados grficos directamente en la GUI. Sin embargo se recomienda no
utilizar lo anterior, ya que los grficos no pueden ser guardados posteriormente como fig, jpg o
png. Adems, se utiliza para colocar imgenes, entre otros.




Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 16

7.4. Ejemplo GUI
A continuacin se procede a la creacin de una GUI en base a los ejemplos expuestos
anteriormente. En Particular, se generar una GUI para calcular diagramas de fuerzas internas
utilizando los 3 casos de los Ejemplos de Aplicacin (Seccin 6.1).
Existen 3 mtodos o comandos fundamentales en la creacin de una GUI:
1. Comando get: Obtiene el valor de una propiedad especfica de un objeto
2. Comando set: Asigna una propiedad a un objeto
3. Objeto handles: Se usa para manejar o acceder a la propiedad de un objeto

Siguiendo el procedimiento propuesto en la seccin 7.2:
1. Generar el algoritmo en un script como se realiza normalmente.
Ya se tienen las funciones para el clculo de fuerzas internas para los 3 casos de Vigas.
2. Definir los parmetros relevantes que deban ser ingresados por el usuario
Los parmetros relevantes son: Carga ( o ), Largo de Viga (). Notar que el caso de carga
puntual exige adems la distancia desde el borde de la Viga.
3. Definir un diseo de interfaz grfica de acuerdo a los 2 puntos anteriores.
El diseo final de la interfaz ser el siguiente:

Figura 6.- Diseo de Interfaz Grfica Final escogido
Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 17

Para el diseo dela GUI escogida en el punto anterior se ha pensado previamente en las
necesidades que la interfaz necesita satisfacer. Adems de graficar los diagramas de Corte y
Momento, se ha creado un Check Box Hold on que permita al usuario obtener mltiples curvas
en un mismo grfico, por ejemplo, para evaluar distintos estados de carga grficamente.
Claramente, la forma en que se exponen los resultados queda a criterio del programador. Por
ejemplo, tambin podra ser necesario mostrar el valor mximo de Momento y Corte. A
continuacin se muestra una figura en donde se identifican los componentes de la GUI:
Figura 7.- Componentes de la GUI de Diseo de Interfaz Grfica escogido


Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 18

Procedimiento Componentes
1. Ejecutar guide en el command window.
2. Elegir la opcin Blank GUI (Default).
3. Con la informacin expuesta en la Figura 7, arrastrar a la ventana (figure) los componentes
correspondientes. La distribucin de componentes en la GUI no afecta al cdigo que se
genere posteriormente, sin embargo se recomienda seguir la mostrada en la Figura 7.
Notar que todo lo que sea texto en la figura 7, corresponde a un static text.
Al igual que en la generacin de un script normal, las componentes de una GUI deben tener
asignado un nombre de variable, esto corresponde a la propiedad TAG (Ir a las propiedades de una
componente y buscar esta propiedad). Otra propiedad importante es la propiedad STRING, la cual
corresponde simplemente al texto que deseen que muestre cierta componente (por ejemplo el
String de los radio button). Se debe destacar que a la mayora de las componentes de les debe
modificar su propiedad STRING, pero no as su propiedad TAG. Lo anterior es debido a que la
asignacin de un nombre de variable (Tag) a una componente es para posteriormente poder
manejar de una forma entendible las lneas de cdigo programadas. A continuacin se procede a
mostrar una Tabla con las propiedades previas mencionadas para las componentes principales de
la GUI, vale decir, las que efectivamente sern utilizadas en las lneas de cdigo. Se deben respetar
maysculas y minsculas de los Tag.
Figura 8.- Numeracin Utilizada segn la Tabla 1.

Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 19

Tabla 1.- Tags y Strings de las Componentes del Ejemplo
N
Componente Tag String
1 Button Group panelCaso Estado de Carga
2 Radio Button VSA_CW Viga Simplemente Apoyada - Carga Uniformemente Distribuida
3 Radio Button VE_CW Viga Empotrada - Carga Uniformemente Distribuida
4 Radio Button VSA_CP Viga Simplemente Apoyada - Carga Puntual
5 Edit Text L 1
6 Edit Text w 1
7 Edit Text P 1
8 Edit Text a 0.5
9 Slider grosor Otras Propiedades: min=1, max=5; value=1
10 Static Text gActual 1
11 Pop-Up Menu color
Azul
Rojo
Negro
Verde
Cyan
Magenta
Amarillo
12 Axes figura -
13 Toogle Button grilla Grilla
14 Check Box holdON Hold On
15 Axes momento -
16 Axes corte -


Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 20

Procedimiento Eventos Callback
CALLBACK es el EVENTO ms simple de una componente (Por ejemplo, al presionar un botn). Sin
embargo existen ms tipos de Callbacks o eventos de una componente como por ejemplo, si se
mantiene cierta tecla presionada, al hacer click en cierta parte de la GUI, cuando se crea o
selecciona cierta componente, entre otros. A continuacin se procede a asignar las lneas de
cdigo correspondientes a las componentes que sea necesario. Hacer click derecho en la
componente e ir a View Callbacks
BUTTON GROUP (Tag = panelCaso / Callback: SelectionChangeFcn)
if hObject == handles.VSA_CW

axes(handles.figura);
im=imread('VSA_CW.png');
imshow(im);

end

if hObject == handles.VE_CW

axes(handles.figura);
im=imread('VE_CW.png');
imshow(im);

end

if hObject == handles.VSA_CP

axes(handles.figura);
im=imread('VSA_CP.png');
imshow(im);

end

Nota: Esto permite mostrar una imagen en el axes figura dependiendo del caso seleccionado en
el button group. Obtener las figuras del presente documento. Ajustar el tamao de su axes figura
hasta que se alcance una buena resolucin.

SLIDER (Tag = grosor / Callback: Callback)

set(handles.gActual,'String',get(handles.grosor,'Value'))

Nota: Esto permite obtener el valor actual del slider al momento de utilizarlo
(get(handles.grosor,'Value')) y luego mostrar el valor actual del grosor en el static text
gActual.


Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 21

TOOGLE BUTTON (Tag = grilla / Callback: Callback)
h=get(handles.grilla,'Value');

if h==1
axes(handles.momento)
grid on
axes(handles.corte)
grid on
else
axes(handles.momento)
grid off
axes(handles.corte)
grid off
end

Nota: Esto permite mostrar la grilla en los grficos (momento y corte) con el comando grid on.
Adems, notar que esta componente toma valor =1 si est seleccionado y valor=0 si no est
seleccionado al igual que una check box.

CHECK BOX (Tag = holdON / Callback: Callback)
h=get(handles.holdON,'value');

if h==1
axes(handles.momento)
hold on
axes(handles.corte)
hold on
else
axes(handles.momento)
hold off
axes(handles.corte)
hold off
end

Nota: Esto permite activar el comando hold on en los grficos (momento y corte). Se programa
igual que un toogle button.

PUSH BUTTON (Tag = dejar por defecto / Callback: Callback)

caso = get(get(handles.panelCaso,'selectedObject'),'Tag');

w=str2num(get(handles.w,'string'));
L=str2num(get(handles.L,'string'));
a=str2num(get(handles.a,'string'));
P=str2num(get(handles.P,'string'));
grosor=get(handles.grosor,'value');

color={'b','r','k','g','c','m','y'};
colorSeleccionado=get(handles.color,'value');



Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 22

if strcmp(caso,'VSA_CW')
[x M V] = VSA_cargaW(w,L);
end
if strcmp(caso,'VE_CW')
[x M V] = VEMP_cargaW(w,L);
end
if strcmp(caso,'VSA_CP')
[x M V] = VSA_cargaP(P,L,a);
end

axes(handles.momento);
plot(x,-M,color{colorSeleccionado},'Linewidth',grosor)
ylabel('Momento T*m'); title('Diagrama de Momento')
axes(handles.corte);
plot(x,V,color{colorSeleccionado},'Linewidth',grosor)
xlabel('Distancia m'); ylabel('Corte T'); title('Diagrama de Corte')

Nota: El cdigo para llamar a las funciones que creamos dependiendo el estado de carga de Viga
se encuentran ac. Observar la primera lnea de cdigo. Esto mismo se podra haber utilizado para
obtener el RADIO BUTTON seleccionado del BUTTON GROUP como se menciona en la Nota del
button group (panelCaso) en vez de la forma utilizada. No obstante, se realiza para mostrar las
diferentes formas de programacin en MATLAB a modo de ejemplo. La forma ms simple es
obtener el objeto seleccionado del panelCaso como se realiza en esta seccin
(get(handles.panelCaso,'selectedObject')) para luego comparar con su Tag.
En resumen, nuestro cdigo principal est en el PUSH BUTTON y los dems son slo cdigos que
hacen que su interfaz sea ms dinmica. Para dar condiciones de inicio a la GUI se debe utilizar la
funcin OpeningFcn dentro del cdigo generado por MATLAB (Se encuentra al inicio del cdigo).
EL CDIGO ANTERIOR SOLO FUNCIONAR SI SE UTILIZARON LOS TAGS EXPUESTOS EN LA TABLA 1.

Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 23

8. Solucin Ejercicios de Aplicacin
8.1. Estructuras Isostticas
1.- Viga Simplemente Apoyada con carga uniformemente distribuida y largo
function [x M V] = VSA_cargaW(w,L)

x=0:0.01:L;
M=w*L/2*x-w*x.^2/2; %Funcin de Momento de la Viga
V=w*L/2-w*x; %Corte en la Viga

end
2.- Viga Simplemente Apoyada con Carga Puntual a una distancia arbitraria medida desde el
apoyo y de largo
function [x M V] = VSA_cargaP(P,L,a)

x=0:0.01:L;

for i=1:length(x)
if (x(i)<=a)
M(i)=P*(L-a)/L*x(i); %Funcin de Momento de la Viga
V(i)=P*(L-a)/L; %Corte en la Viga
else
M(i)=P*(L-a)/L*x(i)-P*(x(i)-a); %Funcin de Momento de la Viga
V(i)=P*(L-a)/L-P; %Corte en la Viga
end
end
end
3.- Viga en Voladizo con carga uniformemente distribuida y largo
function [x M V] = VEMP_cargaW(w,L)

x=0:0.01:L;
M=w*L*x-w*x.^2/2-w*L^2/2; %Funcin de Momento de la Viga
V=w*L-w*x; %Corte en la Viga

End

Universidad Tcnica Federico Santa Mara Taller de MATLAB
Centro de Estudiantes de Ingeniera Civil 2 Semestre 2014
Taller de MATLAB Felipe Guerrero Arias Pgina 24

8.2. Hidrulica
Para esta seccin en particular se utiliza el solver fzero de MATLAB dado que se necesita revolver
por un mtodo iterativo la ecuacin de Manning. Se debe generar una funcin objetivo FO, la
cual se llama del script principal de la siguiente forma:
h=fzero(@(h) ManningRectangular(h,Q,n,i,b),[0 100])

Donde ,, y son Inputs del problema y [0 100] es el intervalo finito para que se itere la
solucin del problema. A continuacin se muestran las funciones objetivo para las secciones
Rectangular, Trapezoidal, Triangular, Circular y Parablico. Notar que la altura de escurrimiento en
una seccin circular se puede obtener por geometra:

[ (

)]
function FO=ManningRectangular(h,Q,n,i,b)
A=b*h;
Pm=b+2*h;
FO=Q*n/sqrt(i)-A^(5/3)/Pm^(2/3);
end

function FO=ManningTrapezoidal(h,Q,n,i,b,z)
A=(b+z*h)*h;
Pm=b+2*h*sqrt(1+z^2);
FO=Q*n/sqrt(i)-A^(5/3)/Pm^(2/3);
end

function FO=ManningTriangular(h,Q,n,i,z)
A=z*h^2;
Pm=2*h*sqrt(1+z^2);
FO=Q*n/sqrt(i)-A^(5/3)/Pm^(2/3);
end

function FO=ManningCircular(theta,Q,n,i,D)
A=(theta-sin(theta))*(D/1000)^2/8;
Pm=theta*D/2000;
FO=Q*n/sqrt(i)-A^(5/3)/Pm^(2/3);
end

function FO=ManningParabolico(h,Q,n,i,T)
A=2/3*T*h;
Pm=T+8*h^2/(3*T);
FO=Q*n/sqrt(i)-A^(5/3)/Pm^(2/3);
end

Das könnte Ihnen auch gefallen