89398753 Matlab Para Ing Civil

119
UNSCH FIMGC - EFPIC | CARDENAS ALARCON, Max Junior WINDOWS XP COLOSSUS EDITION 2 RELOADED CURSO DE MATLAB

Transcript of 89398753 Matlab Para Ing Civil

UNSCH – FIMGC - EFPIC |

CARDENAS ALARCON, Max Junior

WINDOWS

XP

COLOSSUS

EDITION 2

RELOADED

CURSO DE MATLAB

i

RESUMEN

La siguiente guía que se presenta, está desarrollada para el ámbito de trabajo

que nos ofrece el programa de MATLAB, en esta guía se definirán los

comandos de programación, la programación y el uso adecuados de los

scripts, así como también el uso de archivos M-File y por ultimo

mencionaremos la programación utilizando la interfaz grafica del usuario

GUIDE.

El presente trabajo fue elaborado y editado para todos los estudiantes de

ingeniería que ingresan en el mundo de la programación en MATLAB, siendo

este software una herramienta indispensable para el ingeniero de la actualidad.

La necesidad de elaborar programas que analicen casos específicos que se

presentan en la vida profesional y estudiar los resultados en una manera

optima, hacen que la programación en MATLAB nos resulte de gran ayuda.

Esta guía se separo en 6 capítulos los cuales son:

- En el 2° capítulo mencionaremos el entrono del programa MATLAB,

definiremos los comandos y herramientas que presenta y sus aplicaciones.

- En el 3° capitulo mencionaremos los comandos de programación de

MATLAB (IF, FOR, WHILE, SWICHT), definiremos cada comando y su

respectiva forma de utilización.

- En el 4° capitulo mencionaremos la programación en Script, definiremos la

forma de uso y la respectiva codificación para el desarrollo de los

programas, en este capítulo se desarrollaran ejemplos.

- En el 5° capitulo mencionaremos la programación en MATLAB usando los

archivos M-File con la ejecución de ejemplos.

- En el 6° capitulo mencionaremos la programación en MATLAB haciendo

uso de la interfaz grafica de usuario GUIDE, en la cual se desarrollara y

explicara los diferentes comandos y funciones que presenta este tipo de

programación.

El autor.

ii

INDICE 1. INTRODUCCIÓN A MATLAB 1

1.1.EL PROGRAMA MATLAB 1

1.2.USO DEL HELP 2

2. ENTORNO DE MATLAB 5

2.1. VARIABLES 5

2.2. FORMATOS NUMERICOS 5

2.3. FUNCIONES MATEMATICAS EN MATLAB 6

2.4. MATRICES Y ARREGLOS 8

2.4.1. DEFINICION DE AMTRICES DESDE EL TECLADO 8

2.4.2. OPERACIONES CON MATRICES 10

2.4.3. OPERADORES PARA RESOLVER SISTEMAS DE ECUACIONES

LINEALES 11

2.4.4. OPERADORES ELEMENTO A ELEMENTO 13

2.4.5. TIPOS DE MATRICES PREDEFINIDAS 14

2.4.6. FORMACION DE UNA MATRIZ A PARTIR DE OTRAS 15

2.4.7. EL OPERADOR DOS PUNTOS 16

2.4.8. ACCESO A LOS ELEMENTOS DE UNA MATRIZ 19

3. COMANDOS DE PROGRAMACION EN MATLAB 20

3.1. COMANDO IF 20

3.2. COMANDO SWITCH 21

3.3. COMANDO FOR 21

3.4. COMANDO WHILE 22

3.5. COMANDO BREAK 22

3.6. EJEMPLOS DE LOS COMANDOS 23

3.6.1. COMANDO IF 23

3.6.2. COMANDO SWITCH 24

3.6.3. COMANDO FOR 24

3.6.4. COMANDO WHILE 24

3.7. EJEMPLO DE APLICACIÓN 25

4. PROGRAMACION EN SCRIPT 29

4.1. SCRIPT 29

4.2. EJEMPLOS DE APLICACIÓN 31

4.2.1. EJEMPLO N°01 31

4.2.2. EJEMPLO N°02 32

4.2.3. EJEMPLO N°03 32

4.2.4. EJEMPLO N°04 33

4.2.5. EJEMPLO N°05 33

iii

5. PROGRAMACION EN M-FILE 34

5.1. EJEMPLO DE APLICACION 35

6. PROGRAMACION EN GUIDE 36

6.1. PROPIEDAD DE LOS CONTROLES 36

6.1.1. STRING 36

6.1.2. TAG 36

6.2. CONTROLES DE LA INTERFAZ GRAFICA DEL USUARIO (GUIDE) 36

6.2.1. PUSH BUTTON 36

6.2.2. TOGGLE BUTTON 38

6.2.3. RADIO BUTTON 38

6.2.4. CHECKBOXES 39

6.2.5. EDIT TEXT 39

6.2.6. STATIC TEXT 39

6.2.7. SLIDERS 40

6.2.8. PANELS 40

6.2.9. LIST BOXES 41

6.2.10. POPUP MENUS 42

6.2.11. AXES 42

6.3. INSPECTOR DE PROPIEDADES 43

6.4. PROPIEDADES GENERALES DE LOS UICONTROL 44

6.5. ELABORACION DE UNA INTERFAZ GRAFICA 47

6.6. ELABORACION DE UN PROGRAMA-ANALISIS DE ARMADURAS 50

6.7. EJEMPLO DE UN PROGRAMA EN GUI 70

7. PRACTICAS DIRIGIDAS 84

7.1. PRACTICA N° 01: ANALISIS NUMERICO 84

7.2. PRACTICA N° 02: MATRICES Y ARREGLOS 85

7.3. PRACTICA N° 03: PROGRAMACION EN SCRIPT 86

7.4. PRACTICA N° 04: PROGRAMACION EN M-FILE 87

7.5. PRACTICA N° 05: PROGRAMACION EN GUIDE 89

8. ANEXOS 92

8.1. ANEXO A: RESUMEN DE FUNCIONES 92

8.2. ANEXO B: GUIA DE INSTALACION 96

9. REFERENCIAS 115

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO I INTRODUCCION A MATLAB

CARDENAS ALARCON, Max Junior Página 1

1. CAPITULO I : INTRODUCCIÓN A MATLAB

1.1. EL PROGRAMA MATLAB

MATLAB es el nombre abreviado de “MATrix LABoratory”. MATLAB es un programa

para realizar cálculos numéricos con vectores y matrices. Como caso particular puede

también trabajar con números escalares tanto reales como complejos, con cadenas de

caracteres y con otras estructuras de información más complejas. Una de las capacidades

más atractivas es la de realizar una amplia variedad de gráficos en dos y tres dimensiones.

MATLAB es un gran programa de cálculo técnico y científico. Para ciertas operaciones es

muy rápido, cuando puede ejecutar sus funciones en código nativo con los tamaños más

adecuados para aprovechar sus capacidades de vectorización. En otras aplicaciones resulta

bastante más lento que el código equivalente desarrollado en C/C++ o Fortran. En la

versión 6.5, MATLAB incorporó un acelerador JIT (Just In Time), que mejoraba

significativamente la velocidad de ejecución de los ficheros *.m en ciertas circunstancias,

por ejemplo cuando no se hacen llamadas a otros ficheros *.m, no se utilizan estructuras y

clases, etc. Aunque limitado en ese momento, cuando era aplicable mejoraba sensiblemente

la velocidad, haciendo innecesarias ciertas técnicas utilizadas en versiones anteriores como

la vectorización de los algoritmos. En cualquier caso, el lenguaje de programación de

MATLAB siempre es una magnífica herramienta de alto nivel para desarrollar aplicaciones

técnicas, fácil de utilizar y que, como ya se ha dicho, aumenta significativamente la

productividad de los programadores respecto a otros entornos de desarrollo.

MATLAB dispone de un código básico y de varias librerías especializadas (toolboxes). En

estos apuntes se hará referencia exclusiva al código básico.

MATLAB se puede arrancar como cualquier otra aplicación de Windows, clicando dos

veces en el icono correspondiente en el escritorio o por medio del menú Inicio). Al arrancar

MATLAB se abre una ventana similar a la mostrada en la Figura 1. Ésta es la vista que se

obtiene eligiendo la opción Desktop/Desktop Layout/Default. Esta ventana inicial requiere

unas primeras explicaciones.

Figura 1.1. Ventana inicial de MATLAB 7.7.0. (R2008b)

DIRECTORIO

VENTANA DE

COMANDOS

ESPACIO DE

TRABAJO

HISTORIAL DE

COMANDOS

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO I INTRODUCCION A MATLAB

CARDENAS ALARCON, Max Junior Página 2

1.2. USO DEL HELP

MATLAB 7.0 dispone de un excelente Help con el que se puede encontrar la información

que se desee. La Figura 5 muestra las distintas opciones que aparecen en el menú Help de la

ventana principal de la aplicación:

Full Product Family Help, Se abre la ventana de la Figura 8, en la que se puede buscar

información general sobre MATLAB o sobre otros productos de la familia a los que se

tenga acceso. La forma de la ventana de ayuda es típica y común con otros niveles de

ayuda. La mayor parte de las páginas de ayuda están en formato HTML.

Figura 1.2. Algunas páginas web sobre MATLAB.

MATLAB Help. Se abre la ventana de la Figura 9, en la que se puede buscar ayuda general

sobre MATLAB o sobre la función o el concepto que se desee. La portada de esta ayuda

tiene tres capítulos principales:

Functions, que contiene información de referencia sobre las funciones por orden alfabético

o por categorías.

Handle Graphics, que permite acceder a información concreta sobre las distintas

propiedades de los objetos gráficos.

Documentation Set, que da acceso a versiones completas de los manuales del programa en

formato de pantalla fácilmente navegable (con apartados de Getting Started, User Guides,

Programming Tips y Examples in Documentation).

Product Demos (con una colección de jemplos programados que se pueden ejecutar y cuyo

código se puede examinar para ver cómo están programados).

What's New (con las novedades de esta versión respecto a la anterior).

Printing the Documentation Set (que permite abrir documentos PDF (Portable Document

Format), que se corrresponden con las versiones en papel de los manuales del programa, y

que precisan del programa Adobe Acrobat Reader 5.0 o superior.) y un apartado final sobre

The MathWorks Web Site Resources (que permite acceder a una amplísima colección de

informaciones adicionales disponibles en la web de la empresa que ha desarrollado

MATLAB).

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO I INTRODUCCION A MATLAB

CARDENAS ALARCON, Max Junior Página 3

En la parte izquierda de la ventana, cuando está seleccionada la pestaña Contents, aparece

un índice temático estructurado en forma de árbol que puede ser desplegado y recorrido con

gran facilidad. Las restantes pestañas de esta ventana dan acceso a un índice por palabras

(Index), a un formulario de búsqueda (Search) y a la colección de ejemplos ya

programados antes citadas (Demos).

Figura 1.3. Demos disponibles en MATLAB.

Using the Desktop. Se abre una ventana de ayuda con un formato similar a las de las

Figuras anteriores con información detallada sobre cómo utilizar y configurar el entorno de

desarrollo o Desktop. Las distintas herramientas disponibles se describen sucesivamente.

Cada página dispone de flechas y enlaces que permiten ir a la página siguiente o volver a la

anterior. Es posible también imprimir aquellas páginas que se deseee consultar o archivar

sobre papel. Una característica muy importante es la posibilidad de organizar las ventanas

con gran flexibilidad, agrupándolas o independizándoles según los propios gustos o deseos.

Using the Command Window. Esta opción del menú Help da acceso a la información

necesaria para aprovechar las capacidades de la Command Window, que es el corazón de

MATLAB.

Web Resources. La ¡Error! No se encuentra el origen de la referencia. muestra algunas

direcciones de Internet con información interesante sobre MATLAB. Todas ellas

corresponden a distintas secciones de la web de The Mathworks (la empresa que desarrolla

y comercializa MATLAB), cuya página de inicio se muestra en primer lugar.

Check for Updates. MATLAB se conecta con The Mathworks y comprueba si has

versiones más recientes de los productos instalados. Si se es un usuario registrado, es

posible descargar las versiones más actuales. Demos. Se abre una ventana como la mostrada

en la Figura 7 que da acceso a un buen número de ejemplos resueltos con MATLAB, cuyos

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO I INTRODUCCION A MATLAB

CARDENAS ALARCON, Max Junior Página 4

resultados se presentan gráficamente de diversas formas. Es muy interesante recorrer estos

ejemplos para hacerse idea de las posibilidades del programa, tanto en cálculo como en

gráficos. Es asimismo muy instructivo analizar los ficheros *.m de los ejemplos de

características similares a las de la aplicación de se desea desarrollar.

Además, de una forma muy inmediata, es posible también recurrir al Help desde la línea de

comandos de la Command Window. Se aconseja practicar un poco al respecto. Por ejemplo,

obsérvese la respuesta a los siguientes usos del comando help:

>> help

>> help lang

El comando helpwin seguido de un nombre de comando o de función muestra la

información correspondiente a ese comando en la ventana Help (ver Figura 8). En la parte

superior de la ventana que se abre se muestra un enlace View code for …, que permite

acceder al código fuente si está disponible; con la opción Go to online doc for ... se accede

a una información más completa que puede incluir ejemplos y comandos similares sobre los

que también se ofrece ayuda. En la parte inferior de la página aparece una lista de enlaces

See Also a funciones relacionadas. El comando doc tecleado en la línea de comandos

equivale a Help/Full Product Family Help; si va seguido de un nombre de comando o

función se muestra la información detallada correspondiente a ese comando de modo

similar a Go to online doc for ... en el párrafo anterior. En resumen, MATLAB dispone de

una ayuda muy completa y accesible, estructurada en varios niveles (línea de comandos en

la Command Window, ventana Help, y manuales en formato PDF), con la que es muy

importante estar familiarizado, porque hasta los más expertos programadores tienen que

acudir a ella con una cierta frecuencia.

Figura 1.4. Ventana inicial de Help Full Product Family.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO II ENTORNO DE MATLAB

CARDENAS ALARCON, Max Junior Página 5

2. CAPITULO II : ENTORNO DE MATLAB

2.1. VARIABLES El nombre que se declare a las variables en MATLAB a si como en otros lenguajes de

programación debe tener ciertas reglas, las cuales son:

- No pueden comenzar con un número, aunque si pueden tener números en su estructura

»variable1=12

- Las mayúsculas y las minúsculas se diferencian en los nombres de las variables, las

variables A y a son distintas.

»A=10

»a=12

- Los nombres de las variables no pueden contener operadores y puntos. No es válido usar

/ * - + . ; : ^

Para el uso de una variable no es necesario declarar sus nombres, en al siguiente tabla se

presenta las variables predefinidas que posee MATLAB

Cuadro 2.1. Variables predefinidas por MATLAB

NOMBRE DE LA VARIABLE SIGNIFICADO

pi π

i y j

inf

eps 1.0000e-006

NaM No es número

realmin Menor número

realmax Mayor número

2.2. FORMATOS NUMERICOS A continuación se presentan los diferentes tipos de formatos que usa MATLA en la

visualización de sus variables.

Format.- Modifica el formato numérico de las variables desplegables por MATLAB, donde

la función afecta sólo como son los números exhibidos, no cómo los computarizados.

Cuadro 2.2. Formatos numéricos en MATLAB

NUMERO »x = [4/3 1.2345e-6]

format short »x = [1.3333 0.0000]

format short e »x = [1.3333e+000 1.2345e-006]

format short g »x = [1.3333 1.2345e-006]

format long »x = [1.33333333333333 0.00000123450000]

format long e »x = [1.33333333333333e+000 1.234500000000000e-006]

format long g »x = [1.333333333333 1.2345e-006]

format bank »x = [1.33 0.00]

format rat »x = [4/3 1/810045]

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO II ENTORNO DE MATLAB

CARDENAS ALARCON, Max Junior Página 6

2.3. FUNCIONES MATEMATICAS EN MATLAB MATLAB ofrece un sin número de funciones las que aceptan como argumento variables

reales y/o complejas sin discriminación, a si como con argumentos matriciales.

FUNCIONES TRIGONOMETRICAS

Se debe tener en cuenta que las funciones trigonométricas que nos proporciona

MATLAB se encuentran en las unidades de los radianes si queremos obtener la razón

trigonométricas de un ángulo en grados sexagesimales demos utilizar el comando

sind(x).

Cuadro 2.3. Funciones trigonométricas en MATLAB

FUNCION DESCRIPCION

sin(x) Seno de x en radianes

sind(x) Seno de x en grados sexagesimales

asin(x) Arcoseno de x en radianes

asind(x) Arcoseno de x en grados sexagesimales

sinh(x) Seno hiperbólico de x

asinh(x) Arcoseno hiperbólico de x

cos(x) Coseno de x en radianes

cosd(x) Coseno de x en grados sexagesimales

acos(x) Arcocoseno de x en radianes

acosd(x) Arcocoseno de x en grados sexagesimales

cosh(x) Coseno hiperbólico de x

acosh(x) Arcocoseno hiperbólico de x

tan(x) Tangente de x en radianes

tand(x) Tangente de x en grados sexagesimales

atan(x) Arcotangente de x en radianes

atand(x) Arcotangente de x en grados sexagesimales

tanh(x) Tangente hiperbólico de x

atanh(x) Arcotangente hiperbólico de x

cot(x) Cotangente de x

sec(x) Secante de x

csc(x) Cosecante de x

Ejemplo:

»x = [1, 2, 3; 9, 8, 7; 4, 5, 6];

»sin(x)

Nos devuelve como resultado

»asin(x)

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO II ENTORNO DE MATLAB

CARDENAS ALARCON, Max Junior Página 7

FUNCIONES QUE REALIZAN TAREAS

Cuadro 2.4. Funciones que realiza tareas en MATLAB

FUNCION DESCRIPCION

abs(x) Valor absoluto de x

sqrt(x) Raíz cuadrada de x

real(x) Parte real del número complejo x

imag(x) Parte imaginaria del número complejo x

sign(x) Función signo de x

exp(x)

log(x) Logaritmo natural de x

log10(x) Logaritmo decimal de x

log2(x) Logaritmo en base 2 de x

min(x) Devuelve el valor mínimo de un arreglo x

max(x) Devuelve el valor máximo de un arreglo x

sort(x) Ordenas los elemento de un arreglo en forma ascendente

sum(x) Calcula la suma de todos los elementos de un arreglo x

num2str(x) Convierte en cadena el número x

str2double(x) Convierte en número real la cadena x

Ejemplo:

» x = [-3 4 -11 0];

»abs(x)

3 4 11 0

FUNCIONES REALES

Cuadro 2.5. Funciones reales en MATLAB

FUNCION DESCRIPCION

eval(x) Evalúa una función en los valores de x

fplot(f,[a,b]) Grafica la función en el intervalo [a,b]

fzero(f,a) Calcula la raíz de la función f, partiendo del valor a

trapz(x,f) Calcula el área de la región plana limitada por f en el

intervalo [a,b], donde a es el primer valor de x y b el

último valor de x, x debe ser una variable con

múltiples valores ordenados en orden creciente

Ejemplo:

»nombre_f = ´3*x.^2-5´;

»x = [1 2 4]

»eval(nombre_f)

-2 7 43

»z = fzero(nombre_f,2);

1.2910

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO II ENTORNO DE MATLAB

CARDENAS ALARCON, Max Junior Página 8

2.4. MATRICES Y ARREGLOS Ya se ha comentado que MATLAB es fundamentalmente un programa para cálculo

matricial. Inicialmente se utilizará MATLAB como programa interactivo, en el que se irán

definiendo las matrices, los vectores y las expresiones que los combinan y obteniendo los

resultados sobre la marcha. Si estos resultados son asignados a otras variables podrán ser

utilizados posteriormente en otras expresiones. En este sentido MATLAB sería como una

potente calculadora matricial (en realidad es esto y mucho más...). Antes de tratar de hacer

cálculos complicados, la primera tarea será aprender a introducir matrices y vectores desde

el teclado. Más adelante se verán otras formas más potentes de definir matrices y vectores.

2.4.1. DEFINICION DE MATRICES DESDE EL TECLADO

Como en casi todos los lenguajes de programación, en MATLAB las matrices y vectores

son variables que tienen nombres. Ya se verá luego con más detalle las reglas que deben

cumplir estos nombres. Por el momento se sugiere que se utilicen letras mayúsculas

para matrices y letras minúsculas para vectores y escalares (MATLAB no exige esto,

pero puede resultar útil). Para definir una matriz no hace falta declararlas o establecer

de antemano su tamaño (de hecho, se puede definir un tamaño y cambiarlo

posteriormente). MATLAB determina el número de filas y de columnas en función del

número de elementos que se proporcionan (o se utilizan). Las matrices se definen o

introducen por filas6; los elementos de una misma fila están separados por blancos o

comas, mientras que las filas están separadas por pulsaciones intro o por caracteres

punto y coma (;). Por ejemplo, el siguiente comando define una matriz A de dimensión

(3×3):

>> A=[1 2 3; 4 5 6; 7 8 9]

La respuesta del programa es la siguiente:

A =

1 2 3

4 5 6

7 8 9

A partir de este momento la matriz A está disponible para hacer cualquier tipo de

operación con ella (además de valores numéricos, en la definición de una matriz o vector

se pueden utilizar expresiones y funciones matemáticas). Por ejemplo, una sencilla

operación con A es hallar su matriz traspuesta. En MATLAB el apóstrofo (') es el

símbolo de transposición matricial. Para calcular A' (traspuesta de A) basta teclear lo

siguiente (se añade a continuación la respuesta del programa):

>> A'

ans =

1 4 7

2 5 8

3 6 9

Como el resultado de la operación no ha sido asignado a ninguna otra matriz, MATLAB

utiliza un nombre de variable por defecto (ans, de answer), que contiene el resultado de

la última operación. La variable ans puede ser utilizada como operando en la siguiente

expresión que se introduzca.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO II ENTORNO DE MATLAB

CARDENAS ALARCON, Max Junior Página 9

>> B=A'

B =

1 4 7

2 5 8

3 6 9

Ahora ya están definidas las matrices A y B, y es posible seguir operando con ellas. Por

ejemplo, se puede hacer el producto B*A (deberá resultar una matriz simétrica):

>> B*A

ans =

66 78 90

78 93 108

90 108 126

En MATLAB se accede a los elementos de un vector poniendo el índice entre paréntesis

(por ejemplo x(3) ó x(i)). Los elementos de las matrices se acceden poniendo los dos

índices entre paréntesis, separados por una coma (por ejemplo A(1,2) ó A(i,j)). Las

matrices se almacenan por columnas (aunque se introduzcan por filas, como se ha

dicho antes), y teniendo en cuenta esto puede accederse a cualquier elemento de una

matriz con un sólo subíndice. Por ejemplo, si A es una matriz (3×3) se obtiene el mismo

valor escribiendo A(1,2) que escribiendo A(4). Invertir una matriz es casi tan fácil como

trasponerla. A continuación se va a definir una nueva matriz A -no singular- en la forma:

>> A=[1 4 -3; 2 1 5; -2 5 3]

A =

1 4 -3

2 1 5

-2 5 3

Ahora se va a calcular la inversa de A y el resultado se asignará a B. Para ello basta

hacer uso de la función inv( ) (la precisión o número de cifras con que se muestra el

resultado se puede cambiar con el menú File/Preferences/General):

>> B=inv(A)

B =

0.1803 0.2213 -0.1885

0.1311 0.0246 0.0902

-0.0984 0.1066 0.0574

Para comprobar que este resultado es correcto basta pre-multiplicar A por B;

>> B*A

ans =

1.0000 0.0000 0.0000

0.0000 1.0000 0.0000

0.0000 0.0000 1.0000

De forma análoga a las matrices, es posible definir un vector fila x en la forma siguiente

(si los tres números están separados por blancos o comas, el resultado será un vector

fila):

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO II ENTORNO DE MATLAB

CARDENAS ALARCON, Max Junior Página 10

>> x=[10 20 30] % vector fila

x =

10 20 30

Por el contrario, si los números están separados por intros o puntos y coma (;) se

obtendrá un vector columna:

>> y=[11; 12; 13] % vector columna

y =

11

12

13

MATLAB tiene en cuenta la diferencia entre vectores fila y vectores columna. Por

ejemplo, si se intenta sumar los vectores x e y se obtendrá el siguiente mensaje de error:

>> x+y

??? Error using ==> +

Matrix dimensions must agree.

Estas dificultades desaparecen si se suma x con el vector transpuesto de y:

>> x+y'

ans =

21 32 43

MATLAB considera vectores fila por defecto, como se ve en el ejemplo siguiente:

>> x(1)=1, x(2)=2

x =

1

x =

1 2

2.4.2. OPERACIONES CON MATRICES

OPERADORES ARITMÉTICOS

MATLAB puede operar con matrices por medio de operadores y por medio de

funciones. Se han visto ya los operadores suma (+), producto (*) y traspuesta ('), así

como la función invertir inv( ). Los operadores matriciales de MATLAB son:

Cuadro 2.6. Operadores aritméticos matriciales en MATLAB

OPERADOR DESCRIPCION

+ Adición o suma

- Sustracción o resta

* Multiplicación

‘ Traspuesta

^ Potenciación

\ División-izquierda

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO II ENTORNO DE MATLAB

CARDENAS ALARCON, Max Junior Página 11

/ División-derecha

.* Producto elemento a elemento

./ y .\ División elemento a elemento

.^ Elevar a una potencia elemento a elemento

Estos operadores se aplican también a las variables o valores escalares, aunque con

algunas diferencias. Todos estos operadores son coherentes con las correspondientes

operaciones matriciales: no se puede por ejemplo sumar matrices que no sean del mismo

tamaño. Si los operadores no se usan de modo correcto se obtiene un mensaje de error.

Los operadores anteriores se pueden aplicar también de modo mixto, es decir con un

operando escalar y otro matricial. En este caso la operación con el escalar se aplica a

cada uno de los elementos de la matriz. Considérese el siguiente ejemplo:

>> A=[1 2; 3 4]

A =

1 2

3 4

>> A*2

ans =

2 4

6 8

>> A-4

ans =

-3 -2

-1 0

MATLAB utiliza el operador de división / para dividir por un escalar todos los

elementos de una matriz o un vector. Esto no constituye ninguna sorpresa. Sin embargo,

el uso que se describe a continuación sí requiere más atención.

2.4.3. OPERADORES PARA RESOLVER SISTEMAS DE ECUACIONES

LINEALES

MATLAB utiliza los operadores de división para la resolución de sistemas de

ecuaciones lineales. Por su gran importancia, estos operadores requieren una explicación

detenida. Considérese el siguiente sistema de ecuaciones lineales.

Ax = b [2.1]

Donde x y b son ectores columna, y A una matriz cuadrada invertible. La resolución de

este sistema de ecuaciones se puede escribir en las 2 formas siguientes (¡Atención a la 2ª

forma, basada en la barra invertida (\), que puede resultar un poco extraña!):

x = inv(A)*b [2.2]

x = A\b [2.3]

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO II ENTORNO DE MATLAB

CARDENAS ALARCON, Max Junior Página 12

Así pues, el operador división-izquierda por una matriz (barra invertida \) equivale a

pre-multiplicar por la inversa de esa matriz. En realidad este operador es más general y

más inteligente de lo que aparece en el ejemplo anterior: el operador división-izquierda

es aplicable aunque la matriz no tenga inversa e incluso no sea cuadrada, en cuyo caso la

solución que se obtiene (por lo general) es la que proporciona el método de los mínimos

cuadrados. Cuando la matriz es triangular o simétrica aprovecha esta circunstancia para

reducir el número de operaciones aritméticas. En algunos casos se obtiene una solución

con no más de r elementos distintos de cero, siendo r el rango de la matriz. Esto puede

estar basado en que la matriz se reduce a forma de escalón y se resuelve el sistema

dando valor cero a las variables libres o independientes. Por ejemplo, considérese el

siguiente ejemplo de matriz (1×2) que conduce a un sistema de infinitas soluciones:

>> A=[1 2], b=[2]

A =

1 2

b =

2

>> x=A\b

x =

0

1

Que es la solución obtenida dando valor cero a la variable independiente x(1). Por otra

parte, en el caso de un sistema de ecuaciones redundante (o sobre-determinado) el

resultado de MATLAB es el punto más “cercano” -en el sentido de mínima norma del

error- a las ecuaciones dadas (aunque no cumpla exactamente ninguna de ellas). Véase el

siguiente ejemplo de tres ecuaciones formadas por una recta que no pasa por el origen y

los dos ejes de coordenadas:

>> A=[1 2; 1 0; 0 1], b=[2 0 0]'

A =

1 2

1 0

0 1

b =

2

0

0

>> x=A\b, resto=A*x-b

x =

0.3333

0.6667

resto =

-0.3333

0.3333

0.6667

Si la matriz es singular o está muy mal escalada, el operador \ da un aviso (warning),

pero proporciona una solución. La “inteligencia” del operador barra invertida \ tiene un

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO II ENTORNO DE MATLAB

CARDENAS ALARCON, Max Junior Página 13

coste: MATLAB debe de emplear cierto tiempo en determinar las características de la

matriz: triangular, simétrica, etc. Si el usuario conoce perfectamente y con seguridad las

características de la matriz del sistema, lo mejor es utilizar la función linsolve, que no

realiza ninguna comprobación y puede obtener la máxima eficiencia. Aunque no es una

forma demasiado habitual, también se puede escribir un sistema de ecuaciones lineales

en la forma correspondiente a la traspuesta de la ecuación [2.1]:

yB = c [2.4]

Donde y y c son vectores fila (c conocido). Si la matriz B es cuadrada e invertible, la

solución de este sistema se puede escribir en las formas siguientes:

y = c*inv(B) [2.5]

y = c/B [2.6]

En este caso, el operador división-derecha por una matriz (/) equivale a pos multiplicar

por la inversa de la matriz. Si se traspone la ecuación [2.4] y se halla la solución

aplicando el operador división izquierda se obtiene:

y' = (B')\c' [2.7]

Comparando las expresiones [2.6] y [2.7] se obtiene la relación entre los operadores

división-izquierda y división-derecha (MATLAB sólo tiene implementado el operador

división-izquierda):

c/B = ((B')\c')' [2.8]

2.4.4. OPERADORES ELEMENTO A ELEMENTO

En MATLAB existe también la posibilidad de aplicar elemento a elemento los

operadores matriciales (*, ^, \ y /). Para ello basta precederlos por un punto (.). Por

ejemplo:

>> [1 2 3 4]^2

??? Error using ==> ^

Matrix must be square.

>> [1 2 3 4].^2

ans =

1 4 9 16

>> [1 2 3 4]*[1 -1 1 -1]

??? Error using ==> *

Inner matrix dimensions must agree.

>> [1 2 3 4].*[1 -1 1 -1]

ans =

1 -2 3 -4

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO II ENTORNO DE MATLAB

CARDENAS ALARCON, Max Junior Página 14

2.4.5. TIPOS DE MATRICES PREDEFINIDAS

Existen en MATLAB varias funciones orientadas a definir con gran facilidad matrices

de tipos particulares. Algunas de estas funciones son las siguientes:

Cuadro 2.7. Tipos de matrices en MATLAB

FUNCION DESCRIPCION

eye(4) forma la matriz unidad de tamaño (4×4)

zeros(3,5) forma una matriz de ceros de tamaño (3×5)

zeros(4) ídem de tamaño (4×4)

ones(3) forma una matriz de unos de tamaño (3×3)

ones(2,4) idem de tamaño (2×4)

linspace(x1,x2,n) genera un vector con n valores igualmente

espaciados entre x1 y x2

logspace(d1,d2,n) genera un vector con n valores espaciados

logarítmicamente entre 10^d1 y 10^d2. Si d2 es

pi9, los puntos se generan entre 10^d1 y pi

rand(3) forma una matriz de números aleatorios entre 0 y 1,

con distribución uniforme, de tamaño (3×3)

rand(2,5) idem de tamaño (2×5)

randn(4) forma una matriz de números aleatorios de tamaño

(4×4), con distribución normal, de valor medio 0 y

varianza 1.

magic(4) crea una matriz (4×4) con los números 1, 2, ... 4*4,

con la propiedad de

que todas las filas y columnas suman lo mismo

hilb(5) crea una matriz de Hilbert de tamaño (5×5). La

matriz de Hilbert es una matriz cuyos elementos

(i,j) responden a la expresión (1/(i+j-1)). Esta es

una matriz especialmente difícil de manejar por los

grandes errores numéricos a los que conduce

invhilb(5) crea directamente la inversa de la matriz de Hilbert

kron(x,y) produce una matriz con todos los productos de los

elementos del vector x por los elementos del vector

y. Equivalente a x'*y, donde x e y son

vectores fila

compan(pol) construye una matriz cuyo polinomio característico

tiene como coeficientes los elementos del vector

pol (ordenados de mayor grado a menor)

vander(v) construye la matriz de Vandermonde a partir del

vector v (las columnas son las potencias de los

elementos de dicho vector)

Existen otras funciones para crear matrices de tipos particulares. Con Help/Matlab Help

se puede obtener información sobre todas las funciones disponibles en MATLAB, que

aparecen agrupadas por categorías o por orden alfabético. En la categoría Mathematics

aparecen la mayor parte de las funciones estudiadas en este apartado.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO II ENTORNO DE MATLAB

CARDENAS ALARCON, Max Junior Página 15

2.4.6. FORMACION DE UNA MATRIZ APARTIR DE OTRAS

MATLAB ofrece también la posibilidad de crear una matriz a partir de matrices previas

ya definidas, por varios posibles caminos:

– recibiendo alguna de sus propiedades (como por ejemplo el tamaño),

– por composición de varias submatrices más pequeñas,

– modificándola de alguna forma.

A continuación se describen algunas de las funciones que crean una nueva matriz a partir

de otra o de otras, comenzando por dos funciones auxiliares:

Cuadro 2.8. Comandos de formación de matrices en MATLAB

FUNCION DESCRIPCION

[m,n]=size(A) Devuelve el número de filas y de columnas de la matriz A.

Si la matriz es cuadrada basta recoger el primer valor de

retorno

n=length(x) Calcula el número de elementos de un vector x

zeros(size(A)) Forma una matriz de ceros del mismo tamaño que una

matriz A previamente creada

ones(size(A)) Ídem con unos

A=diag(x) Forma una matriz diagonal A cuyos elementos diagonales

son los elementos de un vector ya existente x

x=diag(A) Forma un vector x a partir de los elementos de la diagonal

de una matriz ya existente A

diag(diag(A)) Crea una matriz diagonal a partir de la diagonal de la

matriz A

blkdiag(A,B) Crea una matriz diagonal de submatrices a partir de las

matrices que se le pasan como argumentos

triu(A) Forma una matriz triangular superior a partir de una matriz

A (no tiene por qué ser cuadrada). Con un segundo

argumento puede controlarse que se mantengan o eliminen

más diagonales por encima o debajo de la diagonal

principal.

tril(A) Ídem con una matriz triangular inferior

rot90(A,k) Gira k*90 grados la matriz rectangular A en sentido

antihorario. K es un entero que puede ser negativo. Si se

omite, se supone k=1

flipud(A) Halla la matriz simétrica de A respecto de un eje horizontal

fliplr(A) Halla la matriz simétrica de A respecto de un eje vertical

reshape(A,m,n) Cambia el tamaño de la matriz A devolviendo una matriz

de tamaño m×n cuyas columnas se obtienen a partir de un

vector formado por las columnasde A puestas una a

ontinuación de otra. Si la matriz A tiene menos de m×n

elementos se produce un error.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO II ENTORNO DE MATLAB

CARDENAS ALARCON, Max Junior Página 16

2.4.7. EL OPERADOR DOS PUNTOS Este operador es muy importante en MATLAB y puede usarse de varias formas. Se

sugiere al lector que practique mucho sobre los ejemplos contenidos en este apartado,

introduciendo todas las modificaciones que se le ocurran y haciendo pruebas abundantes

(¡Probar es la mejor forma de aprender!). Para empezar, defínase un vector x con el

siguiente comando:

>> x=1:10

x =

1 2 3 4 5 6 7 8 9 10

En cierta forma se podría decir que el operador (:) representa un rango: en este caso, los

números enteros entre el 1 y el 10. Por defecto el incremento es 1, pero este operador

puede también utilizarse con otros valores enteros y reales, positivos o negativos. En

este caso el incremento va entre el valor inferior y el superior, en las formas que se

muestran a continuación:

>> x=1:2:10

x =

1 3 5 7 9

>> x=1:1.5:10

x =

1.0000 2.5000 4.0000 5.5000 7.0000 8.5000 10.0000

>> x=10:-1:1

x =

10 9 8 7 6 5 4 3 2 1

Puede verse que, por defecto, este operador produce vectores fila. Si se desea obtener un

vector columna basta trasponer el resultado. El siguiente ejemplo genera una tabla de

funciones seno y coseno. Ejecútese y obsérvese el resultado (recuérdese que con (;)

después de un comando el resultado no aparece en pantalla).

>> x=[0.0:pi/50:2*pi]';

>> y=sin(x); z=cos(x);

>> [x y z]

El operador dos puntos (:) es aún más útil y potente –y también más complicado– con

matrices. A continuación se va a definir una matriz A de tamaño 6×6 y después se

realizarán diversas operaciones sobre ella con el operador (:).

>> A=magic(6)

A =

35 1 6 26 19 24

3 32 7 21 23 25

31 9 2 22 27 20

8 28 33 17 10 15

30 5 34 12 14 16

4 36 29 13 18 11

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO II ENTORNO DE MATLAB

CARDENAS ALARCON, Max Junior Página 17

Recuérdese que MATLAB accede a los elementos de una matriz por medio de los

índices de fila y de columna encerrados entre paréntesis y separados por una coma. Por

ejemplo:

>> A(2,3)

ans =

7

El siguiente comando extrae los 4 primeros elementos de la 6ª fila:

>> A(6, 1:4)

ans =

4 36 29 13

Los dos puntos aislados representan "todos los elementos". Por ejemplo, el siguiente

comando extrae todos los elementos de la 3ª fila:

>> A(3, :)

ans =

31 9 2 22 27 20

Para acceder a la última fila o columna puede utilizarse la palabra end, en lugar del

número correspondiente. Por ejemplo, para extraer la sexta fila (la última) de la matriz:

>> A(end, :)

ans =

4 36 29 13 18 11

El siguiente comando extrae todos los elementos de las filas 3, 4 y 5:

>> A(3:5,:)

ans =

31 9 2 22 27 20

8 28 33 17 10 15

30 5 34 12 14 16

Se pueden extraer conjuntos disjuntos de filas utilizando corchetes [ ]. Por ejemplo, el

siguientecomando extrae las filas 1, 2 y 5:

>> A([1 2 5],:)

ans =

35 1 6 26 19 24

3 32 7 21 23 25

30 5 34 12 14 16

En los ejemplos anteriores se han extraído filas y no columnas por motivos del espacio

ocupado por el resultado en la hoja de papel. Es evidente que todo lo que se dice para

filas vale para columnas y viceversa: basta cambiar el orden de los índices.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO II ENTORNO DE MATLAB

CARDENAS ALARCON, Max Junior Página 18

El operador dos puntos (:) puede utilizarse en ambos lados del operador (=). Por

ejemplo, a continuación se va a definir una matriz identidad B de tamaño 6×6 y se van a

reemplazar filas de B por filas de A. Obsérvese que la siguiente secuencia de comandos

sustituye las filas 2, 4 y 5 de B por las filas 1, 2 y 3 de A,

>> B=eye(size(A));

>> B([2 4 5],:)=A(1:3,:)

B =

1 0 0 0 0 0

35 1 6 26 19 24

0 0 1 0 0 0

3 32 7 21 23 25

31 9 2 22 27 20

0 0 0 0 0 1

Se pueden realizar operaciones aún más complicadas, tales como la siguiente10:

>> B=eye(size(A));

>> B(1:2,:)=[0 1; 1 0]*B(1:2,:)

Como nuevo ejemplo, se va a ver la forma de invertir el orden de los elementos de un

vector:

>> x=rand(1,5)

x =

0.9103 0.7622 0.2625 0.0475 0.7361

>> x=x(5:-1:1)

x =

0.7361 0.0475 0.2625 0.7622 0.9103

Obsérvese que por haber utilizado paréntesis en vez de corchetes– los valores generados

por el operador (:) afectan a los índices del vector y no al valor de sus elementos. Para

invertir el orden de las columnas de una matriz se puede hacer lo siguiente:

>> A=magic(3)

A =

8 1 6

3 5 7

4 9 2

>> A(:,3:-1:1)

ans =

6 1 8

7 5 3

2 9 4

Aunque hubiera sido más fácil utilizar la función fliplr(A), que es específica para ello.

Finalmente, hay que decir que A(:) representa un vector columna con las columnas de A

una detrás de otra.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO II ENTORNO DE MATLAB

CARDENAS ALARCON, Max Junior Página 19

2.4.8. ACCESO A LOS ELEMENTOS DE UNA MATRIZ

• Matlab utiliza los paréntisis para acceder a elementos de la matriz

• Los subíndices empiezan en 1, por lo tanto el primer elemento es a(1,1)

Ejemplo:

»a(3,5)=56.8;

• Se pueden utilizar vectores para definir índices

Ejemplo:

»a(2:3,1:4)=zeros(2,4);

O bien:

»a(2:3,1:4)=0;

• Se pueden utilizar vectores para definir índices

Ejemplo:

»a([2,3],[2,4])=ones(2,2);

O bien:

»a([2,3],[2,4])=0;

• El operador ':' se utiliza para indicar "todos los elementos"

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO III COMANDOS DE PROGRAMACION EN MATLAB

CARDENAS ALARCON, Max Junior Página 20

3. CAPITULO III: COMANDOS DE PROGRAMACION EN MATLAB

Como ya se ha dicho varias veces incluso con algún ejemplo MATLAB es una aplicación que se

puede programar muy fácilmente. De todas formas, como lenguaje de programación pronto verá

que no tiene tantas posibilidades como otros lenguajes (ni tan complicadas...). Se comenzará

viendo las bifurcaciones y bucles, y la lectura y escritura interactiva de variables, que son los

elementos básicos de cualquier programa de una cierta complejidad.

3.1. COMANDO IF

En su forma más simple, la sentencia if se escribe en la forma siguiente (obsérvese que –a

diferencia de C/C++/Java– la condición no va entre paréntesis, aunque se pueden poner si

se desea):

if condición

Sentencias

end

Existe también la bifurcación múltiple, en la que pueden concatenarse tantas condiciones

como se desee, y que tiene la forma:

if condicion1

bloque1

elseif condicion2

bloque2

elseif condicion3

bloque3

else % opción por defecto para cuando no se cumplan las condiciones 1,2,3

bloque4

end

Donde la opción por defecto else puede ser omitida: si no está presente no se hace nada en

caso de que no se cumpla ninguna de las condiciones que se han chequeado. Una

observación muy importante: la condición del if puede ser una condición matricial, del tipo

A==B, donde A y B son matrices del mismo tamaño.

Para que se considere que la condición se cumple, es necesario que sean iguales dos a dos

todos los elementos de las matrices A y B (aij=bij, 1≤i≤m, 1≤j≤n). Basta que haya dos

elementos aij y bij diferentes para que las matrices ya no sean iguales, y por tanto las

sentencias del if no se ejecuten. Análogamente, una condición en la forma A~=B exige que

todos los elementos sean diferentes dos a dos (aij≠bij, 1≤i≤m, 1≤j≤n). Bastaría que hubiera

dos elementos aij y bij iguales para que la condición no se cumpliese. En resumen:

if A==B exige que todos los elementos sean iguales dos a dos

if A~=B exige que todos los elementos sean diferentes dos a dos

Como se ha dicho, MATLAB dispone de funciones especiales para ayudar en el chequeo de

condiciones matriciales. Por ejemplo, la función isequal(A, B) devuelve un uno si las dos

matrices son idénticas y un cero en caso de que difieran en algo.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO III COMANDOS DE PROGRAMACION EN MATLAB

CARDENAS ALARCON, Max Junior Página 21

3.2. COMANDO SWITCH

La sentencia switch realiza una función análoga a un conjunto de if...elseif concatenados.

Su forma general es la siguiente:

switch switch_expresion

case case_expr1,

bloque1

case {case_expr2, case_expr3, case_expr4,...}

bloque2

...

otherwise, % opción por defecto

bloque3

end

Al principio se evalúa la switch_expresion, cuyo resultado debe ser un número escalar o

una cadena de caracteres. Este resultado se compara con las case_expr, y se ejecuta el

bloque de sentencias que corresponda con ese resultado. Si ninguno es igual a

switch_expresion se ejecutan las sentencias correspondientes a otherwise.

Según puede verse en el ejemplo anterior, es posible agrupar varias condiciones dentro de

unas llaves (constituyendo lo que se llama un cell array o vector de celdas); basta la

igualdad con cualquier elemento del cell array para que se ejecute ese bloque de sentencias.

La “igualdad” debe entenderse en el sentido del operador de igualdad (==) para escalares y

la función strcmp() para cadenas de caracteres).

A diferencia de C/C++/Java, en MATLAB sólo se ejecuta uno de los bloques relacionado

con un case.

3.3. COMANDO FOR

La sentencia for repite un conjunto de sentencias un número predeterminado de veces. La

sentencia for de MATLAB es muy diferente y no tiene la generalidad de la sentencia for de

C/C++/Java. La siguiente construcción ejecuta sentencias con valores de i de 1 a n,

variando de uno en uno.

for i=1:n

Sentencias

end

O bien

for i=vectorValores

Sentencias

end

Donde vectorValores es un vector con los distintos valores que tomará la variable i.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO III COMANDOS DE PROGRAMACION EN MATLAB

CARDENAS ALARCON, Max Junior Página 22

En el siguiente ejemplo se presenta el caso más general para la variable del bucle

(valor_inicial: incremento: valor_final); el bucle se ejecuta por primera vez con i=n, y

luego i se va reduciendo de 0.2 en 0.2 hasta que llega a ser menor que 1, en cuyo caso el

bucle se termina:

for i=n:-0.2:1

Sentencias

end

En el siguiente ejemplo se presenta una estructura correspondiente a dos bucles anidados.

La variable j es la que varía más rápidamente (por cada valor de i, j toma todos sus posibles

valores):

for i=1:m

for j=1:n

Sentencias

end

end

Una última forma de interés del bucle for es la siguiente (A es una matriz):

for i=A

Sentencias

end En la que la variable i es un vector que va tomando en cada iteración el valor de una de las

columnas de A. Cuando se introducen interactivamente en la línea de comandos, los bucles

for se ejecutan sólo después de introducir la sentencia end que los completa.

3.4. COMANDO WHILE

La estructura del bucle while es muy similar a la de C/C++/Java. Su sintaxis es la siguiente:

while condicion

sentencias

end

Donde condicion puede ser una expresión vectorial o matricial. Las sentencias se siguen

ejecutando mientras haya elementos distintos de cero en condicion, es decir, mientras haya

algún o algunos elementos true.

El bucle se termina cuando todos los elementos de condicion son false (es decir, cero).

3.5. COMANDO BREAK

Al igual que en C/C++/Java, la sentencia break hace que se termine la ejecución del bucle

for y/o while más interno de los que comprenden a dicha sentencia.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO III COMANDOS DE PROGRAMACION EN MATLAB

CARDENAS ALARCON, Max Junior Página 23

3.6. EJEMPLOS DE LOS COMANDOS

3.6.1. COMANDO IF

Ejemplo de aplicación

Cuadro 3.1. Ejemplo01.m

Ejemplo01.m

clear all a=21; if a<10 B=a+10 elseif a==21 B=a^2 else B=a+20 end

Ejemplo para determinar si un número es par o impar

Cuadro 3.2. Ejemplo02.m

Ejemplo02.m

clear all x=3; if rem(x,2)==0 fprintf('el numero es par'); else fprintf('el numero es impar'); end

Ejemplo para determinar la condición de un alumno

Cuadro 3.3. Ejemplo03.m

Ejemplo03.m

clear all x=0; if x>10 fprintf('APROBADO'); elseif x==10 fprintf('POR VERSE'); elseif x==0 fprintf('anda al baño'); else fprintf('DESAPROBADO'); end

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO III COMANDOS DE PROGRAMACION EN MATLAB

CARDENAS ALARCON, Max Junior Página 24

3.6.2. COMANDO SWITCH

Ejemplo de aplicación

Cuadro 3.4. Ejemplo01.m

Ejemplo01.m

clear all x=1; switch x case 1 Y=12+x case 2 Y=1+x end

3.6.3. COMANDO FOR

Ejemplo de aplicación

Cuadro 3.5. Ejemplo01.m

Ejemplo01.m

clear all for x=1:2:9 Y=x.^2-1; disp([x,Y]); end

3.6.4. COMANDO WHILE

Ejemplo de aplicación, suma de los primeros 10 números naturales

Cuadro 3.6. Ejemplo01.m

Ejemplo01.m

clear all x=0; suma=0; while x<=10 suma=suma+x; x=x+1; end disp('la suma es:'); disp(suma);

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO III COMANDOS DE PROGRAMACION EN MATLAB

CARDENAS ALARCON, Max Junior Página 25

3.7. EJEMPLO DE APLICACIÓN

Desarrollar un programa de geometría de triángulos, que calcule el perímetro, área, así

mismo que realice la clasificación del triangulo de acuerdo a su ángulo y lado, finalmente el

programa debe calcular la altura, mediana y bisectriz con respecto a cada lado del triangulo.

Como datos de ingreso se tendrá únicamente los valores numéricos de cada lado.

Parte matemática

Figura 3.1. Triangulo.

[3.1]

[3.2]

[3.3]

[3.4]

[3.5]

[3.6]

[3.7]

[3.8]

[3.9]

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO III COMANDOS DE PROGRAMACION EN MATLAB

CARDENAS ALARCON, Max Junior Página 26

Codificación del problema en el programa triangulos.m

Cuadro 3.7. triangulo.m

PROGRAMA triangulo.m : CODIFICACION DEL PROBLEMA

%PROGRAMA QUE CALCULA EL AREA, PERIMETRO Y TAMBIEN CLASIFICA AL TRIANGULO

%SEGUN SU ANGULO Y LADO FINALMENTE HALLA LA ALTURA, LA MEDIANA Y

%BISECTRIZ DE CADA LADO DEL TRIANGULO %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %ELABORADO POR: Max Junior CARDENAS ALARCON %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

format bank fprintf('ingrese los lados del triangulo\n') fprintf('\n') a=input('a='); b=input('b='); c=input('c='); fprintf('\n') fprintf('el área y el perimetro del triangulo es:\n') fprintf('\n') s=(a+b+c)/2; A=sqrt(s*(s-a)*(s-b)*(s-c)); P=2*s; disp('A= '),disp(A) disp('P= '),disp(P) fprintf('Por su clasificación es un triangulo del tipo:\n') m=acos((b^2+c^2-a^2)/(2*b*c)); n=acos((a^2+c^2-b^2)/(2*a*c)); o=acos((a^2+b^2-c^2)/(2*a*b)); a=c*sin(m)/sin(o); b=a*sin(n)/sin(m); c=b*sin(o)/sin(n); fprintf('\n') fprintf('por sus lados:\n')

if a==(b+c)/2; fprintf('equilatero\n') elseif (a==b)+(b==c)+(a==c); fprintf('isoceles\n') else fprintf('escaleno\n') end

fprintf('\n') fprintf('por sus angulos:\n')

if (m==(pi)/2)+(n==(pi)/2)+(o==(pi)/2) fprintf('recto\n') elseif (m>(pi)/2)+(n>(pi)/2)+(o>(pi)/2) fprintf('obtusangulo\n') else fprintf('acutangulo\n') end

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO III COMANDOS DE PROGRAMACION EN MATLAB

CARDENAS ALARCON, Max Junior Página 27

fprintf('\n') fprintf('Longitud de la altura (Ha), mediana (Ma) y la bisectriz (Ba)\n') fprintf('recpecto al lado "a" es:\n') fprintf('\n') Ha=b*sin(o); Ma=b^2+(a/2)^2-a*b*cos(o); Ba=b*sin(o)/sin(pi-o-m/2); disp('Ha= '),disp(Ha) disp('Ma= '),disp(Ma) disp('Ba= '),disp(Ba) fprintf('\n') fprintf('Longitud de la altura (Hb), mediana (Mb) y la bisectriz (Bb)\n') fprintf('recpecto al lado "b" es:\n') fprintf('\n') Hb=a*sin(o); Mb=a^2+(b/2)^2-a*b*cos(o); Bb=a*sin(o)/sin(pi-o-n/2); disp('Hb= '),disp(Hb) disp('Mb= '),disp(Mb) disp('Bb= '),disp(Bb) fprintf('\n') fprintf('Longitud de la altura (Hc), mediana (Mc) y la bisectriz (Bc)\n') fprintf('recpecto al lado "c" es:\n') fprintf('\n') Hc=a*sin(n); Mc=a^2+(c/2)^2-a*c*cos(n); Bc=a*sin(n)/sin(pi-n-o/2); disp('Hc= '),disp(Hc) disp('Mc= '),disp(Mc) disp('Bc= '),disp(Bc)

Figura 3.2. Presentación de resultados de triangulo.m

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO III COMANDOS DE PROGRAMACION EN MATLAB

CARDENAS ALARCON, Max Junior Página 28

Figura 3.3. Presentación de resultados de triangulo.m

Visualization del código en MATLAB

Figura 3.4. triangulo.m Figura 3.5. triangulo.m

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO IV PROGRAMACION EN SCRIPT

CARDENAS ALARCON, Max Junior Página 29

4. CAPITULO IV: PROGRAMACION EN SCRIPT

Los ficheros con extensión (.m) son ficheros de texto sin formato (ficheros ASCII) que

constituyen el centro de la programación en MATLAB. Ya se han utilizado en varias ocasiones.

Estos ficheros se crean y modifican con un editor de textos cualquiera. En el caso de MATLAB

ejecutado en un PC bajo Windows, lo mejor es utilizar su propio editor de textos, que es también

Debugger.

Existen dos tipos de ficheros *.m, los ficheros de comandos (llamados scripts en inglés) y las

funciones. Los primeros contienen simplemente un conjunto de comandos que se ejecutan

sucesivamente cuando se teclea el nombre del fichero en la línea de comandos de MATLAB o se

incluye dicho nombre en otro fichero *.m. Un fichero de comandos puede llamar a otros ficheros

de comandos. Si un fichero de comandos se llama desde de la línea de comandos de MATLAB,

las variables que crea pertenecen al espacio de trabajo base de MATLAB (recordar apartado

2.5.6), y permanecen en él cuando se termina la ejecución de dicho fichero.

Las funciones permiten definir funciones enteramente análogas a las de MATLAB, con su

nombre, sus argumentos y sus valores de retorno. Los ficheros *.m que definen funciones

permiten extender las posibilidades de MATLAB; de hecho existen bibliotecas de ficheros *.m

que se venden (toolkits) o se distribuyen gratuitamente (a través de Internet). Las funciones

definidas en ficheros *.m se caracterizan porque la primera línea (que no sea un comentario)

comienza por la palabra function, seguida por los valores de retorno (entre corchetes [ ] y

separados por comas, si hay más de uno), el signo igual (=) y el nombre de la función, seguido

de los argumentos (entre paréntesis y separados por comas).

Recuérdese que un fichero *.m puede llamar a otros ficheros *.m, e incluso puede llamarse a sí

mismo de forma recursiva. Los ficheros de comandos se pueden llamar también desde funciones,

en cuyo caso las variables que se crean pertenecen al espacio de trabajo de la función. El

espacio de trabajo de una función es independiente del espacio de trabajo base y del espacio de

trabajo de las demás funciones. Esto implica por ejemplo que no puede haber colisiones entre

nombres de varia bles: aunque varias funciones tengan una variable llamada A, en realidad se

trata de variables completamente distintas (a no ser que A haya sido declarada como variable

global). A continuación se verá con un poco más de detalle ambos tipos de ficheros *.m.

4.1.SCRIPT

Como ya se ha dicho, los ficheros de comandos o scripts son ficheros con un nombre tal

como file1. m que contienen una sucesión de comandos análoga a la que se teclearía en el

uso interactivo del programa. Dichos comandos se ejecutan sucesivamente cuando se teclea

el nombre del fichero que los contiene (sin la extensión), es decir cuando se teclea file1 con

el ejemplo considerado. Cuando se ejecuta desde la línea de comandos, las variables

creadas por file1 pertenecen al espacio de trabajo base de MATLAB. Por el contrario, si se

ejecuta desde una función, las variables que crea pertenecen al espacio de trabajo de la

función.

En los ficheros de comandos conviene poner los puntos y coma (;) al final de cada

sentencia, para evitar una salida de resultados demasiado cuantiosa. Un fichero *.m puede

llamar a otros ficheros *.m, e incluso se puede llamar a sí mismo de modo recursivo. Sin

embargo, no se puede hacer profile de un fichero de comandos: sólo se puede hacer de las

funciones.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO IV PROGRAMACION EN SCRIPT

CARDENAS ALARCON, Max Junior Página 30

Las variables definidas por los ficheros de comandos son variables del espacio de trabajo

desde el que se ejecuta el fichero, esto es variables con el mismo carácter que las que se

crean interactivamente en MATLAB si el fichero se ha ejecutado desde la línea de

comandos. Al terminar la ejecución del script, dichas variables permanecen en memoria.

El comando echo hace que se impriman los comandos que están en un script a medida que

van siendo ejecutados. Este comando tiene varias formas:

Cuadro 4.1. Comandos echo en MATLAB

COMANDO DESCRIPCION

echo on Activa el echo en todos los ficheros script

echo off Desactiva el echo

echo file on Donde 'file' es el nombre de un fichero de función, activa el echo en esa función

echo file off Desactiva el echo en la función

echo file Pasa de on a off y viceversa

echo on all Activa el echo en todas las funciones

echo off all Desactiva el echo de todas las funciones

Mención especial merece el fichero de comandos startup.m. Este fichero se ejecuta cada

vez que se entra en MATLAB. En él puede introducir todos aquellos comandos que le

interesa se ejecuten siempre al iniciar la sesión, por ejemplo format compact y los

comandos necesarios para modificar el path.

Figura 4.1. Programación en Script

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO IV PROGRAMACION EN SCRIPT

CARDENAS ALARCON, Max Junior Página 31

4.2.EJEMPLOS DE APLICACIÓN

4.2.1. EJEMPLO N° 01 Determinar si un número es múltiplo de 2, de 3, de 5 o de ninguno de ellos. Considere

que existen números que pueden ser múltiplos de más de un número. Por ejemplo: si se

Ingresa 15 debe mostrarse "El numero es múltiplo de 3", "El numero es múltiplo de 5".

Solución

Cuadro 4.2. Ejemplo01.m

Ejemplo01.m

clear all

clc

x=input('Introduzca el número:');

if rem(x,30)==0

disp('"El número es múltiplo de 2, 3 y 5"')

elseif rem(x,6)==0

disp('"El número es múltiplo de 2 y 3"')

elseif rem(x,10)==0

disp('"El número es múltiplo de 2 y 5"')

elseif rem(x,15)==0

disp('"El número es múltiplo de 3 y 5"')

elseif rem(x,2)==0

disp('"El número es múltiplo de 2"')

elseif rem(x,3)==0

disp('"El número es múltiplo de 3"')

elseif rem(x,5)==0

disp('"El número es múltiplo de 5"')

else

disp('"El número no es múltiplo de 2, ni de 3, ni de 5"')

end

disp('Gracias por utilizar el sistema, buen día.')

Visualización de los resultados

Figura 4.2. Visualización de resultados

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO IV PROGRAMACION EN SCRIPT

CARDENAS ALARCON, Max Junior Página 32

4.2.2. EJEMPLO N° 02

Determinar la suma de los n primeros términos de la siguiente serie:

Solución

Cuadro 4.3. Ejemplo02.m

Ejemplo02.m

clear all

clc

disp('Suma(n)=')

disp('x+(x^2)/(factorial(2))+(x^3)/(factorial(3)),...,(x^n)/(factorial(n))')

x=input('Ingrese el valor de la variable "x":');

n=input('Ingrese la cantidad de términos ("n"):');

S=0;

format shortg;

for i=1:n

S=(x^i)/(factorial(i))+S;

end

fprintf('Suma(%2.0f)=\n',n)

disp(S)

format rat;

disp('Aproximadamente=')

disp(S)

4.2.3. EJEMPLO N° 03 Escribir un programa que determine si un año es bisiesto. Un año es bisiesto si es

múltiplo de 4 (por ejemplo 1984). Los anos múltiplos de 100 no son bisiestos, salvo si

ellos son también múltiplos de 400 (2000 es bisiesto, pero; 1800 no lo es).

Solución

Cuadro 4.4. Ejemplo03.m

Ejemplo03.m

clear all

clc

disp('PROGRAMA PARA CONSULTAR SI UN AÑO ES BISIESTO O NO:')

a=input('Escriba el año que desea consultar=');

if rem(a,400)==0

fprintf('"El año %2.0f SI es bisiesto"\n',a)

elseif rem(a,100)==0

fprintf('"El año %2.0f NO es bisiesto"\n',a)

elseif rem(a,4)==0

fprintf('"El año %2.0f SI es bisiesto"\n',a)

else fprintf('"El año %2.0f NO es bisiesto"\n',a)

end

disp('Gracias por utilizar el programa, que tenga buen día.')

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO IV PROGRAMACION EN SCRIPT

CARDENAS ALARCON, Max Junior Página 33

4.2.4. EJEMPLO N° 04 Una compañía de alquiler de autos emite la factura de sus clientes teniendo en cuenta la

distancia recorrida, si la distancia no rebasa los 300 km., se cobra una tarifa fija de

S/.250, si la distancia recorrida es mayor a 300 km. y hasta 1000 km. Se cobra la tarifa

fija mas el exceso de kilómetros a razón de S/.30 por km. y si la distancia recorrida es

mayor a 1000 km., la compañía cobra la tarifa fija mas los km. recorridos entre 300 y

1000 a razón de 30, y S/.20 para las distancias mayores de 1000 km. Calcular el monto

que pagara un cliente. Cuadro 4.5. Ejemplo04.m

Ejemplo04.m x=input('Introduzca el total de kilómetros recorridos: ');

disp('El total a pagar en soles es de:')

if x<=300

disp(250)

elseif x<=1000

disp(250+30*(x-300))

elseif x>1000

disp(250+30*700+20*(x-1000))

end

disp('Gracias; buen día.')

4.2.5. EJEMPLO N° 05 Se diseña un cohete para obtener datos experimentales, para lo cual obtienen la ecuación

que mide la altura de la punta del cohete en función del tiempo.

Elabore un programa mediante el cual imprima valores cada 2 segundos, desde el tiempo

cero hasta que el chete choca contra el suelo, si el cohete no ha llegado al suelo en 100

segundos, hacer que el programa muestre valores solo hasta ese intervalo de tiempo Cuadro 4.5. Ejemplo04.m

Ejemplo04.m clear all h=60; t=0; I=0; while h>0 I=I+1; h=60+2.13*t^2-0.0013*t^4+0.000034*t^4.751; if h<0 break end if t>100 break end MATRIZ(I,1)=t; MATRIZ(I,2)=h; t=t+2; end MATRIZ plot(MATRIZ(:,1),MATRIZ(:,2),'color','g') title('TRAYECTORIA DEL COHETE','color','w') xlabel('Tiempo','color','b') ylabel('Altura','color','r')

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO V PROGRAMACION EN M-FILE

CARDENAS ALARCON, Max Junior Página 34

5. CAPITULO V: PROGRAMACION EN M-FILE

La programación en este tipo de archivos es la misma que la expuesta en los archivos script, la

única diferencia que se presenta en este tipo de archivos, es el ingreso de datos y la visualización

d los resultados, entonces explicaremos la forma de crear una archivo M-File.

Ingresamos al menú File – New – Function M-file

Figura 5.1. Visualización de ingreso

Nos muestra la siguiente pantalla

Figura 5.2. Archivo M-File

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO V PROGRAMACION EN M-FILE

CARDENAS ALARCON, Max Junior Página 35

5.1.EJEMPLO DE APLICACIÓN Elaborar un programa para evaluar el caudal de un rio, teniendo un archivo en el cual se

reporta el caudal medido en cada año del rio, este archivo se encuentra en una hoja de

cálculo de Excel, con estos datos determinar el caudal mínimo, el caudal máximo y el caudal

promedio del rio.

Solución

Primero elaboraremos un programa para transforma el archivo de datos de la hoja de cálculo

a un archivo de MATLAB.

Cuadro 5.1. Ejemplo01.m

Ejemplo04.m

clear all clc datos=xlsread('DATOS.xlsx'); save -ascii DATOS.dat datos C=load('DATOS.dat'); Q=C(:,2);

Finalmente elaboraremos el programa para evaluar el caudal

Cuadro 5.2. Ejemplo02.m

Ejemplo04.m

function [Qmin,Qmax,Qprom]=caudales1(Q) N=length(Q); Qmin=Q(1); Qmax=Q(1); S=Q(1); for I=2:N; q=Q(I); S=S+Q(I); Qprom=S/N; if Qmin<=q Qmin=Qmin; else Qmin=q; end if Qmax>=q Qmax=Qmax; else Qmax=q; end end Qmin; Qmax; Qprom; end

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 36

6. CAPITULO VI: PROGRAMACION EN GUIDE

El presente capítulo describe los elementos de una programación orientada a objetos,

denominada en MATLAB, Interfaz Gráfica del Usuario (GUI), el cual va a permitir al usuario,

interactuar con el ordenador de una manera rápida en la solución de problemas.

6.1.PROPIEDAD DE LOS CONTROLES

6.1.1. STRING Esta propiedad posee la cadena de caracteres que se mostrara sobre el botón.

6.1.2. TAG Guide usa la propiedad Tag para nombrar la subfunción del Callback en el archivo m de

la aplicación. Coloque en Tag un nombre descriptivo (por ejemplo, close_button) antes

de activar el Guide.

6.2.CONTROLES DE LA INTERFAZ GRAFICA DEL USUARIO (GUI) Los controles son objetos que se ubican dentro de GUI y permiten mostrar, aceptar o validar

datos.

La paleta del formulario editor contiene los controles de interface de usuario, que usted

puede usar en su GUI, Push button, Sliders, Toggle buttons, Frames, Radio buttons,

Listboxes, Checkboxes, Popup menus, Edit text, Ejes, Static text y Figure.

Estos componentes son los uicontrol de MATLAB y es por lo tanto programable en sus

diferentes propiedades, a continuación se presenta información sobre estos comandos.

6.2.1. PUSH BUTTON El control push button genera una acción cuando el usuario hace clic sobre él (por

ejemplo, un botón de OK puede cerrar una caja de dialogo).

Figura 6.1. Push button

Figura 6.2. Push button Callback

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 37

Cuando el usuario pulsa el botón Push Button, su callbak se ejecuta y no devuelve un

valor ni mantienen un estado.

Figura 6.3. Inspector Uicontrol

Al hacer doble clic en el botón Push Button se activa el cuadro de de Figura 6.3. En el

cual ubicamos las posiciones de los campos String y Tag, como vemos el nombre que

aparece en el campo String será el que aparecerá en el botón. Por otro lado el nombre

que aparece en el campo Tag será el que aparecerá en el archivo m, para acceder al

archivo m hacemos anti clic en el botón como se indica en la Figura 6.2. y nos

aparecerá el siguiente archivo, previamente debemos guardar el archivo GUI.

Figura 6.4. Archivo m

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 38

Como vemos en la Figura 6.4. aparece subrayado la función del botón en este caso del

Push Button, es en esta función del archivo m que se programa las tareas que va a

realizar el respectivo botón.

6.2.2. TOGGLE BUTTONS Los Toggle Buttons generan una acción e indican un estado binario (por ejemplo, on u

off). Cuando se pulsa el botón Toggle Button aparece oprimido y permanece así cuando

se suelta el botón del mouse, al tiempo que el Callback ejecuta las ordenes programadas

dentro de él. Los subsecuentes clics del mouse retorna Toggle Buttons al estado de

nondepressed y es posible de nuevo ejecutar su Callback.

Figura 6.5. Toggle Buttons

6.2.3. RADIO BUTTONS Este control se utiliza para seleccionar una opción de un grupo de opciones (es decir,

sólo un botón está en un estado seleccionado), para activar un Radio Button, pulse el

botón del mouse en el objeto.

Los Radios Buttons tienen dos estados: seleccionados y no seleccionados al cual se

accede a través de su propiedad value.

Value= Max, el botón se selecciona.

Value= Min, el botón no se selecciona.

Los Radíos Buttons son mutuamente exclusivos dentro de un grupo de opciones, los

Callback para cada Radío Button se deberá poner en la propiedad value igual a O en

todos los otros Radío Buttons del grupo. MATLAB pone la propiedad de value a 1 en el

Radío Button pulsado por el usuario.

Figura 6.6. Radío Buttons

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 39

6.2.4. CHECKBOXES Los Checkboxs se utilizan para proporcionar al usuario varias opciones de las que se

puede elegir una o más de una cuando se ha pulsado el botón sobre él, e indica su estado

como verificado o no verificado.

La propiedad value indica el estado del Checkbox asumiendo el valor del Max o

propiedad del Min (1 y 0 respectivamente por defecto):

Value= Max, la caja se verifica.

Value= Min, la caja no se verifica.

Figura 6.6. Checkbox

6.2.5. EDIT TEXT Los controles Edit Text son campos que les permiten a los usuarios ingresar o modificar

cadenas de texto. Use Edit Text cuando usted quiere ingresar un texto, la propiedad

String contiene el texto ingresado por el usuario.

Para obtener la cadena tecleada por el usuario, consiga la propiedad String en el

Callback.

Figura 6.7. Edit Text

6.2.6. STATIC TEXT El control Static Text se utiliza para mostrar texto que el usuario no puede modificar. El

texto estático se usa cn frecuentemente para etiquetar otros mandos y proporciona las

direcciones del usuario, o indica valores asociados con un deslizador (Slider). Los

usuarios no pueden cambiar interactivamente el texto de allí que el texto estático no es

ninguna manera a invocar la rutina de un Callback asociado con él.

Figura 6.8. Static Text

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 40

6.2.7. SLIDERS Los deslizadores o barras de desplazamiento permiten explorar fácilmente un alarga lista

de elementos o una gran cantidad de información, y acepta la entrada numérico dentro

de un rango específico, permitiéndole al usuario mover una barra movediza. El

desplazamiento de la barra se efectúa presionando el botón del mouse y arrastrando la

diapositiva, o pulsando el botón que posee una flecha, la ubicación de la barra indica un

valor numérico.

Existen cuatro propiedades que controlan el rango y tamaño del paso del deslizador.

Value, contiene el valor actual del deslizador.

Max, define el valor máximo del deslizador, el valor por defecto es 1.

Min, define le valor mínimo del deslizador, el valor por defecto es 0.

Slider Step, especifica el tamaño de un paso del deslizador con respecto al rango, el

valor por defecto es [0.01 0.10], proporciona un 1% de cambio para los clics en las

flechas y un 10% de cambio para los clic en el corredero.

Estos valores pueden ser modificados efectuando los cambios en las propiedades del

deslizador.

Figura 6.9. Sliders

6.2.8. PANELS Un control Frame proporciona un agrupamiento identificable para controles, los frames

no tienen ninguna rutina de Callback asociados con ellos y sólo uicontrol pueden

aparecer dentro de los marcos excepto de los ejes.

Los marcos son opacos. Si usted agrega un marco después de agregar componentes que

usted quiere posicionar dentro del marco, usted necesita traer esos componentes

adelante. Use las operaciones Bring to front (traer al frente) y Send to Back (enviar

atras) en el menú del formulario para este propósito.

Figura 6.10. Panels

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 41

6.2.9. LIST BOXES Los List Boxes muestran un alista de ítems entre los cuales el usuario puede seleccionar

uno o más ítems.

La propiedad String contiene la lista de cadenas desplegada en el List Box. El primer

ítem en la lista tiene el índice 1.

La propiedad value contiene el índice en la lista de cadenas que corresponde al ítem

seleccionado. Si el usuario selecciona múltiples ítem, entonces el value es un vector de

índices.

Simple o Múltiple Selección

Los valores de las propiedades Mi y Max determinan si los usuarios pueden hacer

simples o múltiples selecciones.

Si Max – Min > 1, entonces las cajas de la lista permiten la selección del ítem múltiple.

Si Max – Min <= 1, entonces las cajas de la lista no permiten la selección del ítem

múltiple.

Activando La Ejecución Del Callback

MATLAB evalúa el callback del List Box después de que el botón del mouse se suelta o

un evento del keypress se ha efectuado, eso cambia la propiedad de value (es decir,

cuando quiera el usuario pulsa el botón en un ítem, pero no al pulsar el Scrollbar en el

list Box).

Esto significa el callback se ejecuta después del primer clic de un doble clic en un solo

artículo o cuando el usuario está haciendo las selecciones múltiples.

En estas situaciones usted necesita agregar otro componente, como Done Button (push

button) y programa su rutina del callback para preguntar el valor de la propiedad list box

(y posiblemente la figura la propiedad de Selección Type) en lugar de creando un

callback para la caja de la lista. Si usted está usando la opción de archivo m de

aplicación automáticamente generada, u otro que usted necesita.

Ejemplos de List Box

List Box Directory Reader (la lista de caja directorio del lector), muestra cómo se crea

un GUI que despliega los volúmenes de directorios en un List Box y les permite a los

usuarios que abran una variedad de tipos del archivo pulsando dos veces el botón en el

filename.

Figura 6.11. List Box

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 42

6.2.10. POPUP MENUS Los Popup Menus permiten visualizar un alista de opciones cuando los usuarios

presionan la flecha.

La propiedad String contiene la lista de cadenas visualizadas en el Popup Menu.

La propiedad value contiene el índice del ítem seleccionado de la lista de cadenas, el

primer ítem en la lista tiene el índice 1.

Cuando no abre, un Popup Menu visualiza la opción actual que es determinado por el

índice contenido en la propiedad value.

Los Popup Menu son útiles cuando usted quiere proporcionarles varias opciones

mutuamente exclusivas a los usuarios, y no usar una mayor cantidad de espacio que

una serie de radio Button requiere.

Figura 6.12. Popup Menu

6.2.11. AXES Los ejes le permiten a su GUI visualizar los gráficos, como todos los objetos de los

gráficos, los ejes tienen las propiedades que usted puede poner para controlar muchos

aspectos de su conducta y apariencia. En los objetos de los ejes.

Los Callback De Los Ejes

Los ejes no son objetos uicontrol, pero puede programarse para ejecutar un Callback

cuando los usuarios pulsen el botón del mouse en los ejes. Use la propiedad Button

Down Fcn de los ejes para definir el callback.

Trazando Los Ejes En GUIs

Los GUIs que contienen ejes deben asegurar la opción de accesibilidad de Orden-línea

en el dialogo de opciones de aplicación que es fijo en Callback (el valor por defecto).

Esto le permite que emita la trama del Callback sin especificar explícitamente los ejes

designados.

Figura 6.13. Axes

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 43

6.3.INSPECTOR DE PROPIEDADES

Son las ventanas que contienen el GUI con el editor del esquema. A continuación se

presentan cada una de sus propiedades.

Figura 6.14.a. Inspector de Propiedades

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 44

Figura 6.14.b. Inspector de Propiedades

6.4.PROPIEDADES GENERALES DE LOS UICONTROLS

Esta tabla contiene la lista de todas las propiedades útiles para objetos uicontrol

agrupándolos por función. Cada nombre de propiedad actúa como un enlace a una

descripción de la propiedad.

Cuadro 6.1. Propiedad de los Uicontrol

Nombre De La Propiedad Descripción De La Propiedad Valor De La Propiedad

Control De Estilos y Apariencia

BackgroundColor Color de los objetos de fondo Value: ColorSpec

Default: Systen

Dependent

CData Imagen true color mostrada en el

control

Value: Matrix

ForegroundColor Color de texto Value: Color Spec

Default: [0 0 0]

SelectionHighlignt Objetos resaltados cuando son

seleccionados

Value: On, Off

Default: On

String Etiqueta de Uicontrol, list box y popup

menu

Value: String

Visible Visibilidad de Uicontrol Value: On, Off

Default: On

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 45

Información General Acerca De Los Objetos

Children Objetos uicontrol no tiene hijos

Enable Activar o desactivar el uicontrol Value: On, inactive, Off

Default: On

Parent Padre de objetos uicontrol Value: Scalar figure

handle

Selected Si los objetos son seleccionados Value: On, Off

Default: On

SliderStep Slider escala de tamaño Value: Two-element

vector

Default: [0.01 0.1]

Style Tipo de objeto uicontrol Value: Pushbutton,

togglebutton,

radiobutton, checkbox,

edit, text, slider, frame,

listbox, popupmenu

Default: pushbutton

Tag Identificador de objeto especificado por

el usuario

Value: String

TooltipString Contenido de los objetos tooltip Value: String

Type Clases de objetos gráficos Value: String(read-only)

Default: Uicontrol

UserData Datos especificados de usuario Value: Matrix

Controlando La Posición Del Objeto

Position Tamaño y localización de objetos

uicontrol

Value: position

rectangle

Default: [20 20 60 20]

Units Unidades para interpretar vectores de

posición

Value: pixels,

normalized, inches,

centimeters, points,

characters

Default: pixels

Controlando Letras y Etiquetas

FontAngle Declinación de caracteres Value: normal, italic,

oblique

Default: normal

FontName Familia fuente Value: String

Default: System

dependent

FontSize Tamaño fuente Value: size in FontUnits

Default: system depende

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 46

FontUnits Unidades de tamaño fuente Value: points,

normalized, inches,

centimeters, pixels

Default: points

FontWeight Peso de los caracteres de textos Value: light, normal,

demi, bold

Default: normal

HorizontalAlighment Alineamiento de la cadena de etiquetas Value: left, center, right

Default: depends on

uicontrol object

String Etiqueta de objetos uicontrol, también

list box e ítems de menú pop-up

Value: String

Controlando La Ejecución De Las Rutinas Callback

BusyAction Interrupción de rutinas Callback Value: cancel, queue

Default: queue

ButtonDownFcn Presión de botón de rutina Callback Value: String

Callback Acción de control Value: String

CreateFcn Rutina Callback ejecutada durante la

creación de objetos

Value: String

DeleteFcn Rutina Callback ejecutada durante la

supresión de objetos

Value: String

Interruptible Modo de interrupción de la rutina

Callback

Value: on, off

Default: on

uicontextMenu Objetos Uicontextmenu asociados con

el Uicontrol

Value: handle

Información Acerca Del Estado Actual

listboxTop Índice de las cadenas más visualizadas

en la list box

Value: scalar

Default: [1]

Max Valor máximo (depende del objeto

uicontrol)

Value: scalar

Default: object depende

Min Valor mínimo (depende del objeto

uicontrol)

Value: scalar

Default: object depende

Value Valor actual del objeto uicontrol Value: scalar or vector

Default: object depende

Controlando El Acceso A Objetos

HandleVisibility Si el manejador es inaccesible desde la

línea de comandos y GUIs

Value: on, callback, off

Default: on

HitTest Si es seleccionado por el clic del mouse Value: on, off

Default: on

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 47

6.5.ELABORACION DE UNA INTERFAZ GRAFICA

Abra el editor de formularios, digitando la orden guide en la ventana de comandos, el cual

despliega el formulario en modo de reja, en el cual se agregaran los controles que se

seleccionen de la paleta. También se puede acceder a esta función de los siguientes modos.

Mediante el menú File – New – GUI

Figura 6.15. Creación de GUI

O de manera directa haciendo clic en el icono de la Figura 6.16.

Figura 6.16. Creación de GUI

Nos aparecerá la siguiente ventana de dialogo

Figura 6.17. GUI

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 48

Esta ventana nos ofrece 4 opciones para la creación de la interfaz la primera es una hoja en

blanco en la cual el usuario puede definir de manera personalizada la forma del GUI.

En la segunda hasta la cuarta opción MATLAB nos ofrece formatos de diferentes tipos de

GUI como son graficadores de dialogo entre otros, como se muestran en la siguiente figura.

Figura 6.18.a. GUI

Figura 6.18.b. GUI

Figura 6.18.c. GUI

Estas opciones están presentes en la pestaña Create New GUI, mientras en la segunda

pestaña Open Existing GUI, esta ventana nos ofrece la posibilidad de acceder a los GUI ya

creados para modificarlos en cuanto a la interfaz grafica, se debe tener siempre en cuenta del

nombre del archivo con el que se guardo el GUI para no generar confusión.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 49

Figura 6.19. GUI

Entonces elegimos la opción que nos ofrece en la Figura 6.17. es decir la opción en blanco

para generar nuestra interfaz de usuario, hacemos clic en ok y nos aparece la siguiente

ventana para la edición del GUI

Figura 6.20. GUI

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 50

6.6.ELABORACION DE UN PROGRAMA - ANALISIS DE ARMADURAS

Al tener la hoja en blanco para la edición del GUIDE, comenzamos añadiendo el titulo a la

presentación del programa. Para ello jalamos el icono de Static Text y lo posicionamos en el

lugar deseado.

Figura 6.21. Armaduras

Luego editamos el tamaño del Static Text, con el mouse picamos en una de las esquinas y

jalamos el Static Text.

Figura 6.22. Armaduras

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 51

Para editar el texto hacemos doble clic en el Static Text, en el menú que nos aparece

buscamos el campo String y hacemos clic en el cuadro pequeño al lado izquierdo de Static

Text.

Figura 6.23. Armaduras

Nos aparecerá el siguiente cuadro en el cual editamos el texto de su interior, luego hacemos

clic en OK.

Figura 6.24. Armaduras

Figura 6.25. Armaduras

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 52

El tamaño y el color del texto así como también el color del fondo se editan en el menú

inspector. El tamaño se edita en Font Size.

Figura 6.26. Armaduras

Luego colocaremos la imagen de la armadura que se va a analizar en el GUIDE para ello la

imagen debe de estar en DIRECTORIO en el cual se encuentra el programa.

Figura 6.27. Armaduras

Una vez confirmada la ubicación de la foto procedemos a elaborar los comandos para la

visualización de la imagen, primero jalamos un Axes y lo posicionamos debajo de nuestro

Static Text, y lo ampliamos a nuestro gusto.

Figura 6.27. Armaduras

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 53

Ahora nos dirigiremos al archivo M-FILE que se genera en paralelo con la edición del

GUIDE, para ello hacemos clic en el botón M-File Editor.

Figura 6.28. Armaduras

Lo cual nos conduce al archivo M-File, en el cual las funciones que se generan lo hace de

forma automática según se va editando el GUIDE.

Figura 6.29. Armaduras

Como se sabe las letras de color verde que aparecen son las indicaciones que le programa

nos recomienda para el uso correcto de las funciones. Estas letras si el usuario desea pueden

ser eliminadas sin ocasionar ningún problema al programa que se está elaborando.

Para la elaboración de este programa de ARMADURAS las letras de color verde serán

eliminadas en su totalidad del archivo M-File esto para la mejor visualización de los

comandos en este archivo y para no generar confusiones con los textos que se va a agregar

en este archivo para la explicación de los comandos utilizados.

Una vez eliminado todos las letras de color verde procedemos a ubicar las funciones

iníciales que nos presenta MATLAB de forma automática.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 54

Figura 6.30. Armaduras

La función que está encerrada dentro de la elipse de la Figura 6.30. Es la que ejecuta al

inicio del programa ósea son las funciones iníciales. Dentro de esta función escribimos los

siguientes comandos.

Cuadro 6.2. Armaduras

Comandos para la visualización de imágenes

scrsz=get(0,'screensize'); pa=get(gcf,'position'); xr=scrsz(3)-pa(3); xp=round(xr/2); yr=scrsz(4)-pa(4); yp=round(yr/2); set(gcf,'position',[xp yp pa(3) pa(4)]);

Estos comandos nos sirven para la correcta ubicación de las imágenes que se va a insertar en

los Axes. Para la visualización de las imágenes usaremos los siguientes comandos.

Cuadro 6.3. Armaduras

Comandos para la visualización de imágenes

LOGO1=imread('FOTO1.jpg'); axes(handles.axes1); imshow(LOGO1);

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 55

Entonces colocaremos los dos comandos en el archivo M-File.

Figura 6.31. Armaduras

Ejecutamos el programa y podemos ver la imagen de la armadura en la interfaz grafica.

Figura 6.32. Armaduras

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 56

Para la mejor visualización de la interfaz grafica editaremos el color del fondo para que se

confunda con el del Static Text.

Figura 6.33. Armaduras

Luego colocaremos los Edit Text en la figura. Esto para que el usuario pueda ingresar los

valores de las fuerzas y de las dimensiones de la armadura.

Figura 6.34. Armaduras

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 57

Se debe colocar los Edit Text en forma que coincidan con la imagen de la armadura que se

va a resolver. También se debe borrar el contenido de los Edit Text.

Figura 6.35. Armaduras

Ejecutamos el programa y podemos ver la correcta ubicación de los Edit Text.

Figura 6.36. Armaduras

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 58

Colocamos dos paneles y los ubicamos en la posición deseada.

Figura 6.37. Armaduras

Dentro de estos paneles colocamos cuadros y un Static Text.

Figura 6.38. Armaduras

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 59

Luego colocamos los Push Button y los editamos y ubicamos de acuerdo a nuestra

conveniencia.

Figura 6.39. Armaduras

Con esto hemos acabado la presentación de nuestro programa. Ejecutamos y podemos ver la

interfaz grafica.

Figura 6.40. Armaduras

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 60

Ahorra procederemos a enlazar los controles de la interfaz grafica. Para ello hacemos clic en

el botón SALIR – View Callbacks – Callback.

Figura 6.41. Armaduras

Lo cual nos conduce al archivo M-File, en el programaremos la función de este comando

que es de cerrar el programa para ello escribiremos un su función el comando CLOSE.

Figura 6.42. Armaduras

Ejecutamos el programa hacemos clic en salir y vemos que cierra la interfaz grafica.

Hacemos lo mismo para el botón EJECUTAR y colocamos en su función los siguientes

comandos. Los cuales son para leer el valor que se introduzca en los Edit Text y convertirlo

en un formato de doble cadena que MTALAB recién puede operar.

Cuadro 6.4. Armaduras

Comandos para la visualización de imágenes

FX1=str2double(get(handles.edit1,'string')); FY1=str2double(get(handles.edit2,'string'));

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 61

Entonces colocamos estos comandos en el archive M-File de la función del botón

EJECUTAR.

Figura 6.43. Armaduras

Dentro de esta función se generara nuestra matriz de del sistema de ecuaciones.

Figura 6.44. Armaduras

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 62

Ahorra colocaremos en nuestra matriz los valores que se ingresan en los Edit Text, de esta

forma formaremos la siguiente matriz.

Figura 6.45. Armaduras

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 63

Luego generaremos la siguiente matriz columna.

Figura 6.46. Armaduras

Una vez generada las dos matrices estas serán colocadas en las tablas para su visualización

en la interfaz grafica. Para ello colocaremos los siguientes comandos en el archivo M-File

para que podamos manejar las tablas.

Cuadro 6.5. Armaduras

Comandos para la visualización de matrices

[m n]=size(mtz); celda=cell(n,n); celda(:,:)={''}; set(handles.uitable1,'Data',celda); set(handles.uitable1,'ColumnEditable',true(1,n));

La explicación de los comandos es la siguiente: primero sacamos el tamaño de la matriz mtz,

luego almacenamos el valor de sus dimensiones en la variables m y n, luego damos la

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 64

dimensión de la celda con el valor de la variable n, como no queremos que se muestre

ningún valor en los casilleros se coloca los apostrofes, luego manejamos la tabla insertando

en esta la matriz mtz. Para ello colocamos los siguientes comandos.

Cuadro 6.6. Armaduras

Comandos para la visualización de matrices

set(handles.uitable1,'Data',mtz); set(handles.uitable1,'visible','on');

Escribimos estos comandos en el archive M-File dentro de la función del botón EJECUTAR.

Figura 6.47. Armaduras

Con esto ejecutamos el programa y colocamos en los Edit Text los valores de las fuerzas que

se van aplicar sobre la armadura de nuestra figura, se debe tener en cuenta que para indicar

el sentido de las fuerzas es el mismo el cual se indica en la figura para ello si se quiere

indicar un sentido opuesta a la de la figura bastara con ingresar el valor de la fuerza en forma

negativa, luego hacemos clic en el botón EJECUTAR para ver los resultados que se generan

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 65

en los cuadros, para visualizar las matrices debemos hacer clic en los Slider de las tablas,

como se muestra en la figura.

Figura 6.48. Armaduras

Ahorra solucionaremos el sistema de ecuaciones utilizando el comando de división derecha

de MATLAB \, luego mostraremos el resultado en la tabla siguiente, esto se realizara

mediante los siguientes comandos.

Cuadro 6.7. Armaduras

Comandos para la visualización de matrices

%solucion del sistema de ecuaciones respuesta=mtz\rstl;

%matriz final [m n]=size(mtz); celda=cell(n,n); celda(:,:)={''}; set(handles.uitable3,'Data',celda); set(handles.uitable3,'ColumnEditable',true(1,n)); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% set(handles.uitable3,'Data',respuesta); set(handles.uitable3,'visible','on');

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 66

Ejecutamos el programa con los mismos datos que el ejemplo anterior y ya podemos ver los

resultados de las fuerzan que se generan en cada barra de la armadura, ahorra si el resultado

es positivo este elemento se encuentra en tracción y si el resultado es negativo el elemento se

encuentra en compresión.

Figura 6.49. Armaduras

De esta forma de determina las fuerzas en las barras, para etiquetar la tabla de los resultados

como se v en la figura se procede de la siguiente forma.

Primero hacemos doble clic en la tabla de edición del GUIDE.

Figura 6.50. Armaduras

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 67

Como vemos nos aparece el inspector de propiedades en el ubicamos la opción DATA

hacemos clic en el cuadro de su costado.

Figura 6.51. Armaduras

Nos aparece el siguiente cuadro, y hacemos clic en ROWS.

Figura 6.52. Armaduras

Luego hacemos clic en show names entered below as the row headers.

Figura 6.53. Armaduras

Hacemos clic en INSERT para aumentar el número de filas de la tabla, hasta llegar en

nuestro caso al nuero 16, luego al costado de cada número de fila editamos para qué se

pueda ver en la tabla de la interfaz grafica, los nombres que se ha modificado, luego de

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 68

realizar esta operación procedemos a hacer clic en OK, luego ejecutamos el programa y

podremos ver el resultado de la tabla.

Figura 6.54. Armaduras

Lo mismo realizamos para la columna.

Figura 6.55. Armaduras

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 69

Entonces al hacer clic e OK podemos ver el resultado de nuestra modificación.

Figura 6.56. Armaduras

Ejecutamos el programa y veremos en la interfaz grafica el cambio.

Figura 6.57. Armaduras

De esta forma hemos concluido con nuestro programa para resolver armaduras.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 70

6.7.EJEMPLO DE UN PROGRAMA EN GUI CALCULADORA DE MATRICES

Para comenzar a ejecutar el programa, digitamos en la pantalla de comandos el nombre de

nuestro programa matrixcalc.

A continuación nos presenta el menú principal del programa

Este programa nos permite realizar diversas operaciones con matrices y con sistemas

lineales de ecuaciones las cuales se representan mediante matrices.

En el menú de operaciones podemos realizar la aritmética matricial, eligiendo una

operación deseada, ingresando el tamaño de una matriz cuadrada.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 71

En el menú de DATOS, se ingresan el número de incógnitas, los coeficientes de las

matrices a si como sus respectivos vectores respuesta y si hubiera el caso un vector de

aproximación inicial.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 72

Desarrollaremos un ejemplo para el siguiente sistema de ecuaciones.

Tomaremos un vector de aproximación V= [0 0 0].

Ejecutamos el programa haciendo click en CALCULAR, luego salimos de la interfaz. Si

queremos nuevos datos hacemos click en NUEVO.

Para visualizar los resultados el programa nos ofrece 2 menús, uno con los métodos

directos y el otro con los métodos iterativos, en cada caso nos presentan 4 métodos de

cada caso.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 73

Para ver los resultados con los métodos directos hacemos click en Resultados D, nos

presentara la siguiente interfaz.

En esta interfaz nos presenta un cuadro en el cual nos indica para elegir un método

deseado, hacemos anticlick en el cuadro y tenemos las siguientes opciones: Gauss Simple,

Doolittle, Krout, Cholesky.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 74

Hacemos click en la opción deseada para ver los resultados.

METODO DE GAUSS SIMPLE

METODO DE DOOLITTLE

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 75

METODO DE KROUT

METODO DE CHOLESKY

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 76

Hacemos lo mismo para ver los resultados mediantes los métodos iterativos hacemos click

en Resultados I.

En los métodos iterativos tenemos los siguientes métodos: GAUSS SEIDEL, JACOBI,

GRADIENTE, GRADIENTE CONJUGADO.

Como con los métodos directo elegimos un método deseado para visualizar los resultados,

en este caso nos presenta la matriz de iteraciones y en la última de las columnas nos indica

la norma de los vectores respuesta.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 77

METODO DE GAUSS SEIDEL

METODO DE JACOBI

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 78

METODO DE GRADIENTE

METODO DE GRADIENTE CONJUGADO

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 79

También podemos visualizar los resultados de todos los métodos y comparados con los

resultados del MATLAB, para ello hacemos click en SOLUCION GENERAL y en

Resultados.

El programa también nos da la opción de poder hallar los valores y vectores propios de un

matriz, mediante dos métodos, para ello hacemos click en el menú EIGEN

PROBLEMAS y en la opción Datos Para EGP.

Nos aparece la opción para definir el tamaño de la matriz cuadrada, a si como el número

de tolerancia que se va a cometer para hallar los respectivos valores y vectores propios.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 80

Luego de haber ingresados todos los datos procedemos a realizar el cálculo haciendo click

en CALCULAR, si se desea podemos ingresar una matriz nueva haciendo click en

NUEVO.

Para visualizar los resultados hacemos click en el menú METODOS DE EP y en la

opción Resultados EGP, mostrándonos la siguiente interfaz.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 81

Como en los resultados de SEL nos muestra un cuadro en el cual nos presenta los métodos

para la visualizar los resultados

Hacemos click en una de las opciones para visualizar los resultados con un método

deseado

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 82

METODO JACOBI

METODO JACOBI MODIFICADO

De esta manera hemos concluido con la explicación del programa espero que les interese

el programa y que lo utilicen para salir hacemos click en SALIR

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VI PROGRAMACION EN GUIDE

CARDENAS ALARCON, Max Junior Página 83

Finalmente hacemos click en YES

Este es un ejemplo de programación en GUI como se puede observar la programación es gráfica

y de interacción con el usuario.

Este tipo de programación es la más común en MATLAB, siendo de gran ayuda para la

elaboración de los programas.

Se debe tener en cuenta que en MATLAB ya contamos con diversos comandos matemáticos que

ofrecen y garantizan una mayor rapidez en la elaboración de los programas y una sencillez para

la interpretación de los códigos en la elaboración de los diferentes tipos de programas, con lo

que no cuentan otros lenguajes de programación como son el C, entre otros.

También se debe conocer que MATLAB por poseer estos comandos matemáticos en su leguaje

de programación el tiempo de ejecución de los programas es más lento que los otros lenguajes de

programación en donde no existe estos comandos y se debe crear sus códigos de ejecución para

cada programa, pero esta diferencia no es muy notoria por lo que hace a MATLAB como un

herramienta de gran utilidad para la elaboración de programas.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VII PRÁCTICAS DIRIGIDAS

CARDENAS ALARCON, Max Junior Página 84

7. CAPITULO VII: PRACTICAS DIRIGIDAS

7.1. PRACTICA N° 01: ANALISIS NUMERICO

Hallar el valor de las siguientes operaciones, los ángulos de las razones

trigonométricas están dados en radianes:

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VII PRÁCTICAS DIRIGIDAS

CARDENAS ALARCON, Max Junior Página 85

7.2. PRACTICA N° 02: MATRICES Y ARREGLOS

Sean las matrices A y B:

;

Resolver las siguientes operaciones matriciales:

Sea la matriz F:

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VII PRÁCTICAS DIRIGIDAS

CARDENAS ALARCON, Max Junior Página 86

7.3. PRACTICA N° 03: PROGRAMACION EN SCRIPT

Desarrolle un programa para los siguientes ejemplos:

Desarrolle un programa que le permita leer dos valores en las variables A

y B, y le permita escribir el resultado de la suma, resta, multiplicación,

división y potenciación de los números.

Desarrolle un programa que le permita leer un valor entero, calcular sus

raíces cuadrada, cubica, de dicho numero y expresar el resultado.

Desarrollar un programa que le permita leer un valor numérico y

determinar si este es par o impar, positivo o negativo y mostrar el

resultado.

Desarrollar un programa para determinar si un numero X es múltiplo de

un numero Y.

Desarrollar un programa que pueda leer tres valores, almacenarlos en las

variables A,B y C, luego determinar cuál de los 3 números es el mayor y

menor, mostrando los resultados. Los tres valores A, B y C son distintos.

Desarrolle un programa que le permita determinar la suma de los

primeros n números impares.

Desarrollar un programa que permita visualizar los 100 primeros números

naturales.

Desarrollar un programa que permita calcular el promedio de los

primeros n números naturales.

Desarrollar un programa que permita calcular el factorial de un número

natural.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VII PRÁCTICAS DIRIGIDAS

CARDENAS ALARCON, Max Junior Página 87

7.4. PRACTICA N° 04: PROGRAMACION EN M-FILE

Elabore un programa en M-File Function, el cual nos permita desarrollar los

diferentes tipos de sumatorias y productos que a continuación se mencionaran, este

programa solo debe pedir como dato de entrada un solo valor, y la visualización de

las respuestas deben estar etiquetadas, señalando el tipo de suma o producto que se

desarrolla y su respectiva respuesta para cada caso.

Las sumatorias que se van a desarrollar en el programa serán:

La suma de los primeros N números naturales y su respectivo promedio.

[1.1]

La suma de los primeros N números naturales pares y su respectivo promedio.

[1.2]

La suma de los primeros N números naturales impares y su respectivo promedio.

[1.3]

La suma de la siguiente serie(1):

[1.4]

La suma de la siguiente serie(2):

[1.5]

La suma de la siguiente serie(3):

[1.6]

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VII PRÁCTICAS DIRIGIDAS

CARDENAS ALARCON, Max Junior Página 88

Los productos que se van a desarrollar en el programa serán:

El producto de los primeros N números naturales (factorial).

[1.7]

El producto de los primeros N números naturales pares.

[1.8]

El producto de los primeros N números naturales impares.

[1.9]

El producto de la siguiente serie(4):

[1.10]

El producto de la siguiente serie(5):

[1.11]

El producto de la siguiente serie(6):

[1.12]

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VII PRÁCTICAS DIRIGIDAS

CARDENAS ALARCON, Max Junior Página 89

7.5. PRACTICA N° 05: PROGRAMACION EN GUIDE

Desarrollar una interfaz grafica para desarrollar el siguiente tipo de armaduras

isostáticas, en el siguiente gráfico se muestra la estructura de la armadura, a si como

el número de elementos con la que cuenta y los apoyos correspondientes. El

programa debe calcular cada fuerza que se ejerce en cada barra de la armadura,

también debe determinar si la barra se encuentra sometida a tracción o compresión.

Adicionalmente se puede agregar al programa las áreas de las secciones

transversales de cada barra para determinar los esfuerzos normales que se ejercen en

cada barra, lo cual se debe tener en cuenta para el diseño.

Figura 7.1. Armadura simétrica isostática.

Se debe tener en consideración la aplicación de fuerzas externas en las dos

direcciones en los nudos de la armadura, como se ve en la figura siguiente. Los

triángulos que se forman en la armadura deben de ser triángulos rectángulos.

Figura 7.2. Armadura simétrica isostática.

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VII PRÁCTICAS DIRIGIDAS

CARDENAS ALARCON, Max Junior Página 90

Manteniendo las mismas dimensiones de la Figura 1.2. realizamos el diagrama de

cuerpo libre de la armadura, se ve en la Figura 1.3. que el sentido de las fuerzas que

se ejercen en las barras es de tracción, entonces si las fuerzas obtenidas al final de

resolver la armadura nos resultan negativas diremos que esas barras se encuentran

sometidas a compresión, lo mismo aplicaremos para el sentido de las reacciones.

Figura 7.3. Diagrama de cuerpo libre de la armadura.

Analizando en cada nudo obtenemos:

[7.1]

[7.2]

[7.3]

[7.4]

[7.5]

[7.6]

[7.7]

[7.8]

[7.9]

MATLAB APLICADO A LA INGENIERIA CIVIL

CAPITULO VII PRÁCTICAS DIRIGIDAS

CARDENAS ALARCON, Max Junior Página 91

[7.10]

[7.11]

[7.12]

[7.13]

[7.14]

[7.15]

[7.16]

El siguiente sistema de ecuaciones lineales se puede resolver por diversos métodos

numéricos, a continuación mostraremos el sistema de ecuaciones lineales en forma

matricial.

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO A RESUMEN DE FUNCIONES

CARDENAS ALARCON, Max Junior Página 92

8. ANEXOS

8.1.ANEXO A

A continuación se presentan los diferentes tipos de funciones que MATLAB ofrece dentro de su

lenguaje de programación, se puede encontrar funciones matemáticas, que realizan tareas entre

otros.

En la siguiente tabla se presenta la función con su respectiva descripción.

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO A RESUMEN DE FUNCIONES

CARDENAS ALARCON, Max Junior Página 93

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO A RESUMEN DE FUNCIONES

CARDENAS ALARCON, Max Junior Página 94

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO A RESUMEN DE FUNCIONES

CARDENAS ALARCON, Max Junior Página 95

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Página 96

8.2.ANEXO B

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Página 97

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Página 98

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Página 99

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Página 100

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Página 101

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Página 102

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Página 103

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Página 104

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Página 105

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Página 106

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Página 107

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Página 108

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Página 109

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Página 110

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Página 111

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Página 112

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Página 113

MATLAB APLICADO A LA INGENIERIA CIVIL

ANEXO B GUIA DE INSTALACION

CARDENAS ALARCON, Max Junior Página 114

MATLAB APLICADO A LA INGENIERIA CIVIL

REFERENCIAS

CARDENAS ALARCON, Max Junior Página 115

9. REFERENCIAS

[1] JAVIER GARCÍA DE JALÓN, JOSÉ IGNACIO RODRÍGUEZ, JESÚS

VIDAL. Aprenda Matlab como en primero. Universidad Politécnica De Madrid.

[2] DELORES M. ETTER. Solución de problemas de ingeniería con Matlab. A

Simon y Schuster company. Segunda Edición.

[3] RAFAEL PALACIOS. Curso Rápido de Matlab. Universidad Pontificia Comillas.

Diciembre 2004.

[4] HERON MORALES MARCHENA. Matlab 7 Métodos Numéricos y visualización

Gráfica. Grupo Editorial MegaByte. Primera Edicion Marzo 2005.