Professional Documents
Culture Documents
XP
COLOSSUS
EDITION 2
CURSO DE MATLAB
RELOADED
El autor.
i
INDICE
1. INTRODUCCIN A MATLAB 1
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.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 APLICACIN 25
4. PROGRAMACION EN SCRIPT 29
4.1. SCRIPT 29
4.2. EJEMPLOS DE APLICACIN 31
4.2.1. EJEMPLO N01 31
4.2.2. EJEMPLO N02 32
4.2.3. EJEMPLO N03 32
4.2.4. EJEMPLO N04 33
4.2.5. EJEMPLO N05 33
ii
5. PROGRAMACION EN M-FILE 34
6. PROGRAMACION EN GUIDE 36
7. PRACTICAS DIRIGIDAS 84
8. ANEXOS 92
9. REFERENCIAS 115
iii
MATLAB APLICADO A LA INGENIERIA CIVIL
VENTANA DE
COMANDOS
DIRECTORIO
ESPACIO DE
TRABAJO
MATLAB 7.0 dispone de un excelente Help con el que se puede encontrar la informacin
que se desee. La Figura 5 muestra las distintas opciones que aparecen en el men Help de la
ventana principal de la aplicacin:
Full Product Family Help, Se abre la ventana de la Figura 8, en la que se puede buscar
informacin general sobre MATLAB o sobre otros productos de la familia a los que se
tenga acceso. La forma de la ventana de ayuda es tpica y comn con otros niveles de
ayuda. La mayor parte de las pginas de ayuda estn en formato HTML.
MATLAB Help. Se abre la ventana de la Figura 9, en la que se puede buscar ayuda general
sobre MATLAB o sobre la funcin o el concepto que se desee. La portada de esta ayuda
tiene tres captulos principales:
Functions, que contiene informacin de referencia sobre las funciones por orden alfabtico
o por categoras.
Handle Graphics, que permite acceder a informacin concreta sobre las distintas
propiedades de los objetos grficos.
Documentation Set, que da acceso a versiones completas de los manuales del programa en
formato de pantalla fcilmente navegable (con apartados de Getting Started, User Guides,
Programming Tips y Examples in Documentation).
Product Demos (con una coleccin de jemplos programados que se pueden ejecutar y cuyo
cdigo se puede examinar para ver cmo estn programados).
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 amplsima coleccin de
informaciones adicionales disponibles en la web de la empresa que ha desarrollado
MATLAB).
Using the Desktop. Se abre una ventana de ayuda con un formato similar a las de las
Figuras anteriores con informacin detallada sobre cmo utilizar y configurar el entorno de
desarrollo o Desktop. Las distintas herramientas disponibles se describen sucesivamente.
Cada pgina dispone de flechas y enlaces que permiten ir a la pgina siguiente o volver a la
anterior. Es posible tambin imprimir aquellas pginas que se deseee consultar o archivar
sobre papel. Una caracterstica muy importante es la posibilidad de organizar las ventanas
con gran flexibilidad, agrupndolas o independizndoles segn los propios gustos o deseos.
Using the Command Window. Esta opcin del men Help da acceso a la informacin
necesaria para aprovechar las capacidades de la Command Window, que es el corazn de
MATLAB.
Check for Updates. MATLAB se conecta con The Mathworks y comprueba si has
versiones ms recientes de los productos instalados. Si se es un usuario registrado, es
posible descargar las versiones ms actuales. Demos. Se abre una ventana como la mostrada
en la Figura 7 que da acceso a un buen nmero de ejemplos resueltos con MATLAB, cuyos
Adems, de una forma muy inmediata, es posible tambin recurrir al Help desde la lnea de
comandos de la Command Window. Se aconseja practicar un poco al respecto. Por ejemplo,
obsrvese la respuesta a los siguientes usos del comando help:
>> help
>> help lang
2.1. VARIABLES
El nombre que se declare a las variables en MATLAB a si como en otros lenguajes de
programacin debe tener ciertas reglas, las cuales son:
- Las maysculas y las minsculas 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 vlido 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
Format.- Modifica el formato numrico de las variables desplegables por MATLAB, donde
la funcin afecta slo como son los nmeros exhibidos, no cmo los computarizados.
FUNCIONES TRIGONOMETRICAS
Se debe tener en cuenta que las funciones trigonomtricas que nos proporciona
MATLAB se encuentran en las unidades de los radianes si queremos obtener la razn
trigonomtricas de un ngulo en grados sexagesimales demos utilizar el comando
sind(x).
Ejemplo:
x = [1, 2, 3; 9, 8, 7; 4, 5, 6];
sin(x)
asin(x)
Ejemplo:
FUNCIONES REALES
Ejemplo:
nombre_f = 3*x.^2-5;
x = [1 2 4]
eval(nombre_f)
-2 7 43
z = fzero(nombre_f,2);
1.2910
>> A=[1 2 3; 4 5 6; 7 8 9]
La respuesta del programa es la siguiente:
A=
123
456
789
A partir de este momento la matriz A est disponible para hacer cualquier tipo de
operacin con ella (adems de valores numricos, en la definicin de una matriz o vector
se pueden utilizar expresiones y funciones matemticas). Por ejemplo, una sencilla
operacin con A es hallar su matriz traspuesta. En MATLAB el apstrofo (') es el
smbolo de transposicin matricial. Para calcular A' (traspuesta de A) basta teclear lo
siguiente (se aade a continuacin la respuesta del programa):
>> B=A'
B=
147
258
369
Ahora ya estn 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 simtrica):
>> B*A
ans =
66 78 90
78 93 108
90 108 126
>> B=inv(A)
B=
0.1803 0.2213 -0.1885
0.1311 0.0246 0.0902
-0.0984 0.1066 0.0574
>> B*A
ans =
1.0000 0.0000 0.0000
0.0000 1.0000 0.0000
0.0000 0.0000 1.0000
De forma anloga a las matrices, es posible definir un vector fila x en la forma siguiente
(si los tres nmeros estn separados por blancos o comas, el resultado ser un vector
fila):
B
Por el contrario, si los nmeros estn separados por intros o puntos y coma (;) se
obtendr un vector columna:
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.
>> x+y'
ans =
21 32 43
OPERADORES ARITMTICOS
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 funcin invertir inv( ). Los operadores matriciales de MATLAB son:
/ Divisin-derecha
.* Producto elemento a elemento
./ y .\ Divisin elemento a elemento
.^ Elevar a una potencia elemento a elemento
Estos operadores se aplican tambin 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
tamao. Si los operadores no se usan de modo correcto se obtiene un mensaje de error.
Los operadores anteriores se pueden aplicar tambin de modo mixto, es decir con un
operando escalar y otro matricial. En este caso la operacin con el escalar se aplica a
cada uno de los elementos de la matriz. Considrese el siguiente ejemplo:
>> A=[1 2; 3 4]
A=
12
34
>> A*2
ans =
24
68
>> A-4
ans =
-3 -2
-1 0
MATLAB utiliza el operador de divisin / 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 continuacin s requiere ms atencin.
Ax = b [2.1]
x = inv(A)*b [2.2]
x = A\b [2.3]
B
Que es la solucin 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 ms cercano -en el sentido de mnima norma del
error- a las ecuaciones dadas (aunque no cumpla exactamente ninguna de ellas). Vase el
siguiente ejemplo de tres ecuaciones formadas por una recta que no pasa por el origen y
los dos ejes de coordenadas:
yB = c [2.4]
y = c*inv(B) [2.5]
y = c/B [2.6]
En este caso, el operador divisin-derecha por una matriz (/) equivale a pos multiplicar
por la inversa de la matriz. Si se traspone la ecuacin [2.4] y se halla la solucin
aplicando el operador divisin izquierda se obtiene:
Comparando las expresiones [2.6] y [2.7] se obtiene la relacin entre los operadores
divisin-izquierda y divisin-derecha (MATLAB slo tiene implementado el operador
divisin-izquierda):
>> [1 2 3 4]^2
??? Error using ==> ^
Matrix must be square.
>> [1 2 3 4].^2
ans =
1 4 9 16
Existen en MATLAB varias funciones orientadas a definir con gran facilidad matrices
de tipos particulares. Algunas de estas funciones son las siguientes:
Existen otras funciones para crear matrices de tipos particulares. Con Help/Matlab Help
se puede obtener informacin sobre todas las funciones disponibles en MATLAB, que
aparecen agrupadas por categoras o por orden alfabtico. En la categora Mathematics
aparecen la mayor parte de las funciones estudiadas en este apartado.
B
MATLAB ofrece tambin la posibilidad de crear una matriz a partir de matrices previas
ya definidas, por varios posibles caminos:
A continuacin se describen algunas de las funciones que crean una nueva matriz a partir
de otra o de otras, comenzando por dos funciones auxiliares:
>> x=1:10
x=
1 2 3 4 5 6 7 8 9 10
En cierta forma se podra decir que el operador (:) representa un rango: en este caso, los
nmeros enteros entre el 1 y el 10. Por defecto el incremento es 1, pero este operador
puede tambin 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 continuacin:
>> x=1:2:10
x=
13579
>> 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. Ejectese y obsrvese el resultado (recurdese que con (;)
despus 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]
>> 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
B
Recurdese que MATLAB accede a los elementos de una matriz por medio de los
ndices de fila y de columna encerrados entre parntesis y separados por una coma. Por
ejemplo:
>> A(2,3)
ans =
7
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
nmero correspondiente. Por ejemplo, para extraer la sexta fila (la ltima) de la matriz:
>> A(end, :)
ans =
4 36 29 13 18 11
>> A(3:5,:)
ans =
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
En los ejemplos anteriores se han extrado 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.
B
El operador dos puntos (:) puede utilizarse en ambos lados del operador (=). Por
ejemplo, a continuacin se va a definir una matriz identidad B de tamao 66 y se van a
reemplazar filas de B por filas de A. Obsrvese 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
>> B=eye(size(A));
>> B(1:2,:)=[0 1; 1 0]*B(1:2,:)
>> 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
Obsrvese que por haber utilizado parntesis 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=
816
357
492
>> A(:,3:-1:1)
ans =
618
753
294
Aunque hubiera sido ms fcil utilizar la funcin fliplr(A), que es especfica para ello.
Finalmente, hay que decir que A(:) representa un vector columna con las columnas de A
una detrs de otra.
B
Ejemplo:
a(3,5)=56.8;
Ejemplo:
a(2:3,1:4)=zeros(2,4);
O bien:
a(2:3,1:4)=0;
Ejemplo:
a([2,3],[2,4])=ones(2,2);
O bien:
a([2,3],[2,4])=0;
Como ya se ha dicho varias veces incluso con algn ejemplo MATLAB es una aplicacin que se
puede programar muy fcilmente. De todas formas, como lenguaje de programacin 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 bsicos de cualquier programa de una cierta complejidad.
3.1. COMANDO IF
if condicin
Sentencias
end
Existe tambin la bifurcacin mltiple, 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 % opcin por defecto para cuando no se cumplan las condiciones 1,2,3
bloque4
end
Donde la opcin 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
observacin muy importante: la condicin del if puede ser una condicin matricial, del tipo
A==B, donde A y B son matrices del mismo tamao.
Para que se considere que la condicin se cumple, es necesario que sean iguales dos a dos
todos los elementos de las matrices A y B (aij=bij, 1im, 1jn). 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. Anlogamente, una condicin en la forma A~=B exige que
todos los elementos sean diferentes dos a dos (aijbij, 1im, 1jn). Bastara que hubiera
dos elementos aij y bij iguales para que la condicin 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
switch switch_expresion
case case_expr1,
bloque1
case {case_expr2, case_expr3, case_expr4,...}
bloque2
MATLAB APLICADO A LA INGENIERIA CIVIL
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.
B
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 vara ms rpidamente (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 inters 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 iteracin el valor de una de las
columnas de A. Cuando se introducen interactivamente en la lnea de comandos, los bucles
for se ejecutan slo despus de introducir la sentencia end que los completa.
while condicion
sentencias
end
Donde condicion puede ser una expresin vectorial o matricial. Las sentencias se siguen
ejecutando mientras haya elementos distintos de cero en condicion, es decir, mientras haya
algn o algunos elementos true.
El bucle se termina cuando todos los elementos de condicion son false (es decir, cero).
Al igual que en C/C++/Java, la sentencia break hace que se termine la ejecucin del bucle
for y/o while ms interno de los que comprenden a dicha sentencia.
B
3.6.1. COMANDO IF
Ejemplo de aplicacin
Ejemplo de aplicacin
Ejemplo de aplicacin
Parte matemtica
[3.1]
[3.2]
[3.3]
[3.4]
[3.5]
[3.6]
[3.7]
[3.8]
[3.9]
B
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 clasificacin 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
B
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)
Los ficheros con extensin (.m) son ficheros de texto sin formato (ficheros ASCII) que
constituyen el centro de la programacin 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 tambin
Debugger.
Existen dos tipos de ficheros *.m, los ficheros de comandos (llamados scripts en ingls) y las
funciones. Los primeros contienen simplemente un conjunto de comandos que se ejecutan
sucesivamente cuando se teclea el nombre del fichero en la lnea 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 lnea 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 ejecucin de dicho fichero.
Las funciones permiten definir funciones enteramente anlogas 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 travs de Internet). Las funciones
definidas en ficheros *.m se caracterizan porque la primera lnea (que no sea un comentario)
comienza por la palabra function, seguida por los valores de retorno (entre corchetes [ ] y
separados por comas, si hay ms de uno), el signo igual (=) y el nombre de la funcin, seguido
de los argumentos (entre parntesis y separados por comas).
Recurdese 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 tambin desde funciones,
en cuyo caso las variables que se crean pertenecen al espacio de trabajo de la funcin. El
espacio de trabajo de una funcin es independiente del espacio de trabajo base y del espacio de
trabajo de las dems 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 continuacin se ver con un poco ms 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 sucesin de comandos anloga a la que se tecleara en el
uso interactivo del programa. Dichos comandos se ejecutan sucesivamente cuando se teclea
el nombre del fichero que los contiene (sin la extensin), es decir cuando se teclea file1 con
el ejemplo considerado. Cuando se ejecuta desde la lnea de comandos, las variables
creadas por file1 pertenecen al espacio de trabajo base de MATLAB. Por el contrario, si se
ejecuta desde una funcin, las variables que crea pertenecen al espacio de trabajo de la
funcin.
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: slo se puede hacer de las
funciones.
MATLAB APLICADO A LA INGENIERIA CIVIL
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 carcter que las que se
crean interactivamente en MATLAB si el fichero se ha ejecutado desde la lnea de
comandos. Al terminar la ejecucin del script, dichas variables permanecen en memoria.
El comando echo hace que se impriman los comandos que estn en un script a medida que
van siendo ejecutados. Este comando tiene varias formas:
Mencin 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 sesin, por ejemplo format compact y los
comandos necesarios para modificar el path.
4.2.EJEMPLOS DE APLICACIN
4.2.1. EJEMPLO N 01
Determinar si un nmero es mltiplo de 2, de 3, de 5 o de ninguno de ellos. Considere
que existen nmeros que pueden ser mltiplos de ms de un nmero. Por ejemplo: si se
Ingresa 15 debe mostrarse "El numero es mltiplo de 3", "El numero es mltiplo de 5".
Solucin
MATLAB APLICADO A LA INGENIERIA CIVIL
4.2.2. EJEMPLO N
02 Determinar la suma de los n primeros trminos de la siguiente serie:
Solucin
MATLAB APLICADO A LA INGENIERIA CIVIL
4.2.3. EJEMPLO N 03
Escribir un programa que determine si un ao es bisiesto. Un ao es bisiesto si es
mltiplo de 4 (por ejemplo 1984). Los anos mltiplos de 100 no son bisiestos, salvo si
ellos son tambin mltiplos de 400 (2000 es bisiesto, pero; 1800 no lo es).
Solucin
4.2.4. EJEMPLO N
04 Una compaa 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 kilmetros a razn de S/.30 por km. y si la distancia recorrida es
mayor a 1000 km., la compaa cobra la tarifa fija mas los km. recorridos entre 300 y
1000 a razn de 30, y S/.20 para las distancias mayores de 1000 km. Calcular el monto
que pagara un cliente.
MATLAB APLICADO A LA INGENIERIA CIVIL
4.2.5. EJEMPLO N 05
Se disea un cohete para obtener datos experimentales, para lo cual obtienen la ecuacin
que mide la altura de la punta del cohete en funcin 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
La programacin 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 visualizacin
d los resultados, entonces explicaremos la forma de crear una archivo M-File.
5.1.EJEMPLO DE APLICACIN
Elaborar un programa para evaluar el caudal de un rio, teniendo un archivo en el cual se
reporta el caudal medido en cada ao del rio, este archivo se encuentra en una hoja de
clculo de Excel, con estos datos determinar el caudal mnimo, el caudal mximo y el caudal
promedio del rio.
Solucin
6.1.1. STRING
Esta propiedad posee la cadena de caracteres que se mostrara sobre el botn.
6.1.2. TAG
Guide usa la propiedad Tag para nombrar la subfuncin del Callback en el archivo m de
la aplicacin. Coloque en Tag un nombre descriptivo (por ejemplo, close_button) antes
de activar el Guide.
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 continuacin se presenta informacin sobre estos comandos.
Al hacer doble clic en el botn 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 botn. 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 botn como se indica en la Figura 6.2. y nos
aparecer el siguiente archivo, previamente debemos guardar el archivo GUI.
Como vemos en la Figura 6.4. aparece subrayado la funcin del botn en este caso del
Push Button, es en esta funcin del archivo m que se programa las tareas que va a
realizar el respectivo botn.
Los Rados Buttons son mutuamente exclusivos dentro de un grupo de opciones, los
Callback para cada Rado Button se deber poner en la propiedad value igual a O en
todos los otros Rado Buttons del grupo. MATLAB pone la propiedad de value a 1 en el
Rado Button pulsado por el usuario.
6.2.4. CHECKBOXES
Los Checkboxs se utilizan para proporcionar al usuario varias opciones de las que se
puede elegir una o ms de una cuando se ha pulsado el botn 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.
6.2.7. SLIDERS
Los deslizadores o barras de desplazamiento permiten explorar fcilmente un alarga lista
de elementos o una gran cantidad de informacin, y acepta la entrada numrico dentro
de un rango especfico, permitindole al usuario mover una barra movediza. El
desplazamiento de la barra se efecta presionando el botn del mouse y arrastrando la
diapositiva, o pulsando el botn que posee una flecha, la ubicacin de la barra indica un
valor numrico.
Existen cuatro propiedades que controlan el rango y tamao del paso del deslizador.
Value, contiene el valor actual del deslizador.
Max, define el valor mximo del deslizador, el valor por defecto es 1.
Min, define le valor mnimo del deslizador, el valor por defecto es 0.
Slider Step, especifica el tamao 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.
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 slo uicontrol pueden
aparecer dentro de los marcos excepto de los ejes.
Los marcos son opacos. Si usted agrega un marco despus 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 propsito.
6.2.11. AXES
Los ejes le permiten a su GUI visualizar los grficos, como todos los objetos de los
grficos, los ejes tienen las propiedades que usted puede poner para controlar muchos
aspectos de su conducta y apariencia. En los objetos de los ejes.
6.3.INSPECTOR DE PROPIEDADES
Son las ventanas que contienen el GUI con el editor del esquema. A continuacin se
presentan cada una de sus propiedades.
Esta tabla contiene la lista de todas las propiedades tiles para objetos uicontrol
agrupndolos por funcin. Cada nombre de propiedad acta como un enlace a una
descripcin de la propiedad.
Esta ventana nos ofrece 4 opciones para la creacin 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 opcin MATLAB nos ofrece formatos de diferentes tipos de
GUI como son graficadores de dialogo entre otros, como se muestran en la siguiente figura.
Estas opciones estn presentes en la pestaa Create New GUI, mientras en la segunda
pestaa 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 confusin.
MATLAB APLICADO A LA INGENIERIA CIVIL
Entonces elegimos la opcin que nos ofrece en la Figura 6.17. es decir la opcin en blanco
para generar nuestra interfaz de usuario, hacemos clic en ok y nos aparece la siguiente
ventana para la edicin del GUI
Al tener la hoja en blanco para la edicin del GUIDE, comenzamos aadiendo el titulo a la
presentacin del programa. Para ello jalamos el icono de Static Text y lo posicionamos en el
lugar deseado.
Luego editamos el tamao del Static Text, con el mouse picamos en una de las esquinas y
jalamos el Static Text.
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 pequeo al lado izquierdo de Static
Text.
Nos aparecer el siguiente cuadro en el cual editamos el texto de su interior, luego hacemos
clic en OK.
El tamao y el color del texto as como tambin el color del fondo se editan en el men
inspector. El tamao se edita en Font Size.
Una vez confirmada la ubicacin de la foto procedemos a elaborar los comandos para la
visualizacin de la imagen, primero jalamos un Axes y lo posicionamos debajo de nuestro
Static Text, y lo ampliamos a nuestro gusto.
Ahora nos dirigiremos al archivo M-FILE que se genera en paralelo con la edicin del
GUIDE, para ello hacemos clic en el botn M-File Editor.
Lo cual nos conduce al archivo M-File, en el cual las funciones que se generan lo hace de
forma automtica segn se va editando el GUIDE.
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 ningn problema al programa que se est elaborando.
Para la elaboracin de este programa de ARMADURAS las letras de color verde sern
eliminadas en su totalidad del archivo M-File esto para la mejor visualizacin de los
comandos en este archivo y para no generar confusiones con los textos que se va a agregar
en este archivo para la explicacin de los comandos utilizados.
Una vez eliminado todos las letras de color verde procedemos a ubicar las funciones
inciales que nos presenta MATLAB de forma automtica.
MATLAB APLICADO A LA INGENIERIA CIVIL
La funcin que est encerrada dentro de la elipse de la Figura 6.30. Es la que ejecuta al
inicio del programa sea son las funciones inciales. Dentro de esta funcin escribimos los
siguientes comandos.
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 ubicacin de las imgenes que se va a insertar en
los Axes. Para la visualizacin de las imgenes usaremos los siguientes comandos.
Para la mejor visualizacin de la interfaz grafica editaremos el color del fondo para que se
confunda con el del Static Text.
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.
Se debe colocar los Edit Text en forma que coincidan con la imagen de la armadura que se
va a resolver. Tambin se debe borrar el contenido de los Edit Text.
Luego colocamos los Push Button y los editamos y ubicamos de acuerdo a nuestra
conveniencia.
Con esto hemos acabado la presentacin de nuestro programa. Ejecutamos y podemos ver la
interfaz grafica.
Ahorra procederemos a enlazar los controles de la interfaz grafica. Para ello hacemos clic en
el botn SALIR View Callbacks Callback.
Ejecutamos el programa hacemos clic en salir y vemos que cierra la interfaz grafica.
Hacemos lo mismo para el botn EJECUTAR y colocamos en su funcin 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 recin puede operar.
Ahorra colocaremos en nuestra matriz los valores que se ingresan en los Edit Text, de esta
forma formaremos la siguiente matriz.
Una vez generada las dos matrices estas sern colocadas en las tablas para su visualizacin
en la interfaz grafica. Para ello colocaremos los siguientes comandos en el archivo M-File
para que podamos manejar las tablas.
Escribimos estos comandos en el archive M-File dentro de la funcin del botn EJECUTAR.
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 botn EJECUTAR para ver los resultados que se generan
MATLAB APLICADO A LA INGENIERIA CIVIL
en los cuadros, para visualizar las matrices debemos hacer clic en los Slider de las tablas,
como se muestra en la figura.
%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
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 traccin y si el resultado es negativo el elemento se
encuentra en compresin.
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 edicin del GUIDE.
Luego hacemos clic en show names entered below as the row headers.
Hacemos clic en INSERT para aumentar el nmero de filas de la tabla, hasta llegar en
nuestro caso al nuero 16, luego al costado de cada nmero 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
realizar esta operacin procedemos a hacer clic en OK, luego ejecutamos el programa y
podremos ver el resultado de la tabla.
De esta forma hemos concluido con nuestro programa para resolver armaduras.
MATLAB APLICADO A LA INGENIERIA CIVIL
Este programa nos permite realizar diversas operaciones con matrices y con sistemas
lineales de ecuaciones las cuales se representan mediante matrices.
Para ver los resultados con los mtodos 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 mtodo
deseado, hacemos anticlick en el cuadro y tenemos las siguientes opciones: Gauss Simple,
Doolittle, Krout, Cholesky.
MATLAB APLICADO A LA INGENIERIA CIVIL
METODO DE DOOLITTLE
MATLAB APLICADO A LA INGENIERIA CIVIL
METODO DE KROUT
METODO DE CHOLESKY
MATLAB APLICADO A LA INGENIERIA CIVIL
Hacemos lo mismo para ver los resultados mediantes los mtodos iterativos hacemos click
en Resultados I.
En los mtodos iterativos tenemos los siguientes mtodos: GAUSS SEIDEL, JACOBI,
GRADIENTE, GRADIENTE CONJUGADO.
Como con los mtodos directo elegimos un mtodo 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
METODO DE JACOBI
MATLAB APLICADO A LA INGENIERIA CIVIL
METODO DE GRADIENTE
Tambin podemos visualizar los resultados de todos los mtodos y comparados con los
resultados del MATLAB, para ello hacemos click en SOLUCION GENERAL y en
Resultados.
El programa tambin nos da la opcin de poder hallar los valores y vectores propios de un
matriz, mediante dos mtodos, para ello hacemos click en el men EIGEN
PROBLEMAS y en la opcin Datos Para EGP.
Nos aparece la opcin para definir el tamao de la matriz cuadrada, a si como el nmero
de tolerancia que se va a cometer para hallar los respectivos valores y vectores propios.
MATLAB APLICADO A LA INGENIERIA CIVIL
Luego de haber ingresados todos los datos procedemos a realizar el clculo haciendo click
en CALCULAR, si se desea podemos ingresar una matriz nueva haciendo click en
NUEVO.
Como en los resultados de SEL nos muestra un cuadro en el cual nos presenta los mtodos
para la visualizar los resultados
Hacemos click en una de las opciones para visualizar los resultados con un mtodo
deseado
MATLAB APLICADO A LA INGENIERIA CIVIL
METODO JACOBI
De esta manera hemos concluido con la explicacin del programa espero que les interese
el programa y que lo utilicen para salir hacemos click en SALIR
MATLAB APLICADO A LA INGENIERIA CIVIL
Se debe tener en cuenta que en MATLAB ya contamos con diversos comandos matemticos que
ofrecen y garantizan una mayor rapidez en la elaboracin de los programas y una sencillez para
la interpretacin de los cdigos en la elaboracin de los diferentes tipos de programas, con lo
que no cuentan otros lenguajes de programacin como son el C, entre otros.
Tambin se debe conocer que MATLAB por poseer estos comandos matemticos en su leguaje
de programacin el tiempo de ejecucin de los programas es ms lento que los otros lenguajes de
programacin en donde no existe estos comandos y se debe crear sus cdigos de ejecucin para
cada programa, pero esta diferencia no es muy notoria por lo que hace a MATLAB como un
herramienta de gran utilidad para la elaboracin de programas.
MATLAB APLICADO A LA INGENIERIA CIVIL
MATLAB APLICADO A LA INGENIERIA CIVIL
Sea la matriz F:
MATLAB APLICADO A LA INGENIERIA CIVIL
[1.1]
[1.2]
[1.3]
[1.4]
[1.5]
[1.6]
MATLAB APLICADO A LA INGENIERIA CIVIL
[1.7]
[1.8]
[1.9]
[1.10]
[1.11]
[1.12]
MATLAB APLICADO A LA INGENIERIA CIVIL
[7.1]
[7.2]
[7.3]
[7.4]
[7.5]
[7.6]
[7.7]
[7.8]
[7.9]
[7.10]
[7.11]
[7.12]
[7.13]
[7.14]
[7.15]
[7.16]
8. ANEXOS
8.1.ANEXO A
A continuacin se presentan los diferentes tipos de funciones que MATLAB ofrece dentro de su
lenguaje de programacin, se puede encontrar funciones matemticas, que realizan tareas entre
otros.
En la siguiente tabla se presenta la funcin con su respectiva descripcin.
8.2.ANEXO B
REFERENCIAS
9. REFERENCIAS