Professional Documents
Culture Documents
CURSO DE MATLAB
RESUMEN
La siguiente gua que se presenta, est desarrollada para el mbito de trabajo que nos ofrece el programa de MATLAB, en esta gua se definirn los comandos de programacin, la programacin y el uso adecuados de los scripts, as como tambin el uso de archivos M-File y por ultimo mencionaremos la programacin utilizando la interfaz grafica del usuario GUIDE. El presente trabajo fue elaborado y editado para todos los estudiantes de ingeniera que ingresan en el mundo de la programacin en MATLAB, siendo este software una herramienta indispensable para el ingeniero de la actualidad. La necesidad de elaborar programas que analicen casos especficos que se presentan en la vida profesional y estudiar los resultados en una manera optima, hacen que la programacin en MATLAB nos resulte de gran ayuda. Esta gua se separo en 6 captulos los cuales son: - En el 2 captulo mencionaremos el entrono del programa MATLAB, definiremos los comandos y herramientas que presenta y sus aplicaciones. - En el 3 capitulo mencionaremos los comandos de programacin de MATLAB (IF, FOR, WHILE, SWICHT), definiremos cada comando y su respectiva forma de utilizacin. - En el 4 capitulo mencionaremos la programacin en Script, definiremos la forma de uso y la respectiva codificacin para el desarrollo de los programas, en este captulo se desarrollaran ejemplos. - En el 5 capitulo mencionaremos la programacin en MATLAB usando los archivos M-File con la ejecucin de ejemplos. - En el 6 capitulo mencionaremos la programacin 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 programacin. El autor.
i
INDICE
1. INTRODUCCIN A MATLAB 1.1.EL PROGRAMA MATLAB 1.2.USO DEL HELP 2. ENTORNO DE MATLAB 2.1. VARIABLES 2.2. FORMATOS NUMERICOS 2.3. FUNCIONES MATEMATICAS EN MATLAB 2.4. MATRICES Y ARREGLOS 2.4.1. DEFINICION DE AMTRICES DESDE EL TECLADO 2.4.2. OPERACIONES CON MATRICES 2.4.3. OPERADORES PARA RESOLVER SISTEMAS DE ECUACIONES LINEALES 2.4.4. OPERADORES ELEMENTO A ELEMENTO 2.4.5. TIPOS DE MATRICES PREDEFINIDAS 2.4.6. FORMACION DE UNA MATRIZ A PARTIR DE OTRAS 2.4.7. EL OPERADOR DOS PUNTOS 2.4.8. ACCESO A LOS ELEMENTOS DE UNA MATRIZ 3. COMANDOS DE PROGRAMACION EN MATLAB 3.1. COMANDO IF 3.2. COMANDO SWITCH 3.3. COMANDO FOR 3.4. COMANDO WHILE 3.5. COMANDO BREAK 3.6. EJEMPLOS DE LOS COMANDOS 3.6.1. COMANDO IF 3.6.2. COMANDO SWITCH 3.6.3. COMANDO FOR 3.6.4. COMANDO WHILE 3.7. EJEMPLO DE APLICACIN 4. PROGRAMACION EN SCRIPT 4.1. SCRIPT 4.2. EJEMPLOS DE APLICACIN 4.2.1. EJEMPLO N01 4.2.2. EJEMPLO N02 4.2.3. EJEMPLO N03 4.2.4. EJEMPLO N04 4.2.5. EJEMPLO N05 1 1 2 5 5 5 6 8 8 10 11 13 14 15 16 19 20 20 21 21 22 22 23 23 24 24 24 25 29 29 31 31 32 32 33 33
ii
5. PROGRAMACION EN M-FILE
5.1. EJEMPLO DE APLICACION
34 35 36 36 36 36 36 36 38 38 39 39 39 40 40 41 42 42 43 44 47 50 70 84 84 85 86 87 89 92 92 96 115
6. PROGRAMACION EN GUIDE
6.1. PROPIEDAD DE LOS CONTROLES
6.1.1. STRING 6.1.2. TAG 6.2. CONTROLES DE LA INTERFAZ GRAFICA DEL USUARIO (GUIDE) 6.2.1. PUSH BUTTON 6.2.2. TOGGLE BUTTON 6.2.3. RADIO BUTTON 6.2.4. CHECKBOXES 6.2.5. EDIT TEXT 6.2.6. STATIC TEXT 6.2.7. SLIDERS 6.2.8. PANELS 6.2.9. LIST BOXES 6.2.10. POPUP MENUS 6.2.11. AXES 6.3. INSPECTOR DE PROPIEDADES 6.4. PROPIEDADES GENERALES DE LOS UICONTROL 6.5. ELABORACION DE UNA INTERFAZ GRAFICA 6.6. ELABORACION DE UN PROGRAMA-ANALISIS DE ARMADURAS 6.7. EJEMPLO DE UN PROGRAMA EN GUI 7. PRACTICAS DIRIGIDAS 7.1. PRACTICA N 01: ANALISIS NUMERICO 7.2. PRACTICA N 02: MATRICES Y ARREGLOS 7.3. PRACTICA N 03: PROGRAMACION EN SCRIPT 7.4. PRACTICA N 04: PROGRAMACION EN M-FILE 7.5. PRACTICA N 05: PROGRAMACION EN GUIDE 8. ANEXOS 8.1. ANEXO A: RESUMEN DE FUNCIONES 8.2. ANEXO B: GUIA DE INSTALACION 9. REFERENCIAS
iii
DIRECTORIO
ESPACIO DE TRABAJO
Pgina 1
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). What's New (con las novedades de esta versin 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 amplsima coleccin de informaciones adicionales disponibles en la web de la empresa que ha desarrollado MATLAB).
CARDENAS ALARCON, Max Junior Pgina 2
En la parte izquierda de la ventana, cuando est seleccionada la pestaa Contents, aparece un ndice temtico estructurado en forma de rbol que puede ser desplegado y recorrido con gran facilidad. Las restantes pestaas de esta ventana dan acceso a un ndice por palabras (Index), a un formulario de bsqueda (Search) y a la coleccin de ejemplos ya programados antes citadas (Demos).
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. Web Resources. La Error! No se encuentra el origen de la referencia. muestra algunas direcciones de Internet con informacin interesante sobre MATLAB. Todas ellas corresponden a distintas secciones de la web de The Mathworks (la empresa que desarrolla y comercializa MATLAB), cuya pgina de inicio se muestra en primer lugar. 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
Pgina 3
resultados se presentan grficamente de diversas formas. Es muy interesante recorrer estos ejemplos para hacerse idea de las posibilidades del programa, tanto en clculo como en grficos. Es asimismo muy instructivo analizar los ficheros *.m de los ejemplos de caractersticas similares a las de la aplicacin de se desea desarrollar. 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
El comando helpwin seguido de un nombre de comando o de funcin muestra la informacin 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 cdigo fuente si est disponible; con la opcin Go to online doc for ... se accede a una informacin ms completa que puede incluir ejemplos y comandos similares sobre los que tambin se ofrece ayuda. En la parte inferior de la pgina aparece una lista de enlaces See Also a funciones relacionadas. El comando doc tecleado en la lnea de comandos equivale a Help/Full Product Family Help; si va seguido de un nombre de comando o funcin se muestra la informacin detallada correspondiente a ese comando de modo similar a Go to online doc for ... en el prrafo anterior. En resumen, MATLAB dispone de una ayuda muy completa y accesible, estructurada en varios niveles (lnea de comandos en la Command Window, ventana Help, y manuales en formato PDF), con la que es muy importante estar familiarizado, porque hasta los ms expertos programadores tienen que acudir a ella con una cierta frecuencia.
Pgina 4
NUMERO format short format short e format short g format long format long e format long g format bank format rat
Pgina 5
FUNCION sin(x) sind(x) asin(x) asind(x) sinh(x) asinh(x) cos(x) cosd(x) acos(x) acosd(x) cosh(x) acosh(x) tan(x) tand(x) atan(x) atand(x) tanh(x) atanh(x) cot(x) sec(x) csc(x) Ejemplo:
DESCRIPCION Seno de x en radianes Seno de x en grados sexagesimales Arcoseno de x en radianes Arcoseno de x en grados sexagesimales Seno hiperblico de x Arcoseno hiperblico de x Coseno de x en radianes Coseno de x en grados sexagesimales Arcocoseno de x en radianes Arcocoseno de x en grados sexagesimales Coseno hiperblico de x Arcocoseno hiperblico de x Tangente de x en radianes Tangente de x en grados sexagesimales Arcotangente de x en radianes Arcotangente de x en grados sexagesimales Tangente hiperblico de x Arcotangente hiperblico de x Cotangente de x Secante de x Cosecante de x
asin(x)
Pgina 6
FUNCION abs(x) sqrt(x) real(x) imag(x) sign(x) exp(x) log(x) log10(x) log2(x) min(x) max(x) sort(x) sum(x) num2str(x) str2double(x) Ejemplo:
DESCRIPCION Valor absoluto de x Raz cuadrada de x Parte real del nmero complejo x Parte imaginaria del nmero complejo x Funcin signo de x Logaritmo natural de x Logaritmo decimal de x Logaritmo en base 2 de x Devuelve el valor mnimo de un arreglo x Devuelve el valor mximo de un arreglo x Ordenas los elemento de un arreglo en forma ascendente Calcula la suma de todos los elementos de un arreglo x Convierte en cadena el nmero x Convierte en nmero real la cadena x
DESCRIPCION Evala una funcin en los valores de x Grafica la funcin en el intervalo [a,b] Calcula la raz de la funcin f, partiendo del valor a Calcula el rea de la regin 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 mltiples valores ordenados en orden creciente
Pgina 7
Pgina 8
>> 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 En MATLAB se accede a los elementos de un vector poniendo el ndice entre parntesis (por ejemplo x(3) x(i)). Los elementos de las matrices se acceden poniendo los dos ndices entre parntesis, 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 slo subndice. Por ejemplo, si A es una matriz (33) se obtiene el mismo valor escribiendo A(1,2) que escribiendo A(4). Invertir una matriz es casi tan fcil como trasponerla. A continuacin 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 funcin inv( ) (la precisin o nmero 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 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):
CARDENAS ALARCON, Max Junior Pgina 9
>> x=[10 20 30] % vector fila x= 10 20 30 Por el contrario, si los nmeros estn 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= 12
OPERADOR + * ^ \
Pgina 10
/ .* ./ y .\ .^
Divisin-derecha Producto elemento a elemento 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.
Donde x y b son ectores columna, y A una matriz cuadrada invertible. La resolucin de este sistema de ecuaciones se puede escribir en las 2 formas siguientes (Atencin a la 2 forma, basada en la barra invertida (\), que puede resultar un poco extraa!): x = inv(A)*b x = A\b [2.2] [2.3]
Pgina 11
As pues, el operador divisin-izquierda por una matriz (barra invertida \) equivale a pre-multiplicar por la inversa de esa matriz. En realidad este operador es ms general y ms inteligente de lo que aparece en el ejemplo anterior: el operador divisin-izquierda es aplicable aunque la matriz no tenga inversa e incluso no sea cuadrada, en cuyo caso la solucin que se obtiene (por lo general) es la que proporciona el mtodo de los mnimos cuadrados. Cuando la matriz es triangular o simtrica aprovecha esta circunstancia para reducir el nmero de operaciones aritmticas. En algunos casos se obtiene una solucin con no ms 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 escaln y se resuelve el sistema dando valor cero a las variables libres o independientes. Por ejemplo, considrese el siguiente ejemplo de matriz (12) que conduce a un sistema de infinitas soluciones: >> A=[1 2], b=[2] A= 12 b= 2 >> x=A\b x= 0 1 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: >> A=[1 2; 1 0; 0 1], b=[2 0 0]' A= 12 10 01 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 solucin. La inteligencia del operador barra invertida \ tiene un
Pgina 12
coste: MATLAB debe de emplear cierto tiempo en determinar las caractersticas de la matriz: triangular, simtrica, etc. Si el usuario conoce perfectamente y con seguridad las caractersticas de la matriz del sistema, lo mejor es utilizar la funcin linsolve, que no realiza ninguna comprobacin y puede obtener la mxima eficiencia. Aunque no es una forma demasiado habitual, tambin se puede escribir un sistema de ecuaciones lineales en la forma correspondiente a la traspuesta de la ecuacin [2.1]: yB = c [2.4]
Donde y y c son vectores fila (c conocido). Si la matriz B es cuadrada e invertible, la solucin de este sistema se puede escribir en las formas siguientes: y = c*inv(B) y = c/B [2.5] [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: y' = (B')\c' [2.7]
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): c/B = ((B')\c')' [2.8]
Pgina 13
DESCRIPCION forma la matriz unidad de tamao (44) forma una matriz de ceros de tamao (35) dem de tamao (44) forma una matriz de unos de tamao (33) idem de tamao (24) genera un vector con n valores igualmente espaciados entre x1 y x2 logspace(d1,d2,n) genera un vector con n valores espaciados logartmicamente entre 10^d1 y 10^d2. Si d2 es pi9, los puntos se generan entre 10^d1 y pi forma una matriz de nmeros aleatorios entre 0 y 1, rand(3) con distribucin uniforme, de tamao (33) idem de tamao (25) rand(2,5) forma una matriz de nmeros aleatorios de tamao randn(4) (44), con distribucin normal, de valor medio 0 y varianza 1. crea una matriz (44) con los nmeros 1, 2, ... 4*4, magic(4) con la propiedad de que todas las filas y columnas suman lo mismo crea una matriz de Hilbert de tamao (55). La hilb(5) matriz de Hilbert es una matriz cuyos elementos (i,j) responden a la expresin (1/(i+j-1)). Esta es una matriz especialmente difcil de manejar por los grandes errores numricos a los que conduce crea directamente la inversa de la matriz de Hilbert invhilb(5) produce una matriz con todos los productos de los kron(x,y) elementos del vector x por los elementos del vector y. Equivalente a x'*y, donde x e y son vectores fila construye una matriz cuyo polinomio caracterstico compan(pol) tiene como coeficientes los elementos del vector pol (ordenados de mayor grado a menor) construye la matriz de Vandermonde a partir del vander(v) 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 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.
Pgina 14
FUNCION
DESCRIPCION
[m,n]=size(A)
tril(A) rot90(A,k)
Devuelve el nmero de filas y de columnas de la matriz A. Si la matriz es cuadrada basta recoger el primer valor de retorno Calcula el nmero de elementos de un vector x Forma una matriz de ceros del mismo tamao que una matriz A previamente creada dem con unos Forma una matriz diagonal A cuyos elementos diagonales son los elementos de un vector ya existente x Forma un vector x a partir de los elementos de la diagonal de una matriz ya existente A Crea una matriz diagonal a partir de la diagonal de la matriz A Crea una matriz diagonal de submatrices a partir de las matrices que se le pasan como argumentos 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 ms diagonales por encima o debajo de la diagonal principal. dem con una matriz triangular inferior 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 Halla la matriz simtrica de A respecto de un eje horizontal Halla la matriz simtrica de A respecto de un eje vertical Cambia el tamao de la matriz A devolviendo una matriz de tamao mn cuyas columnas se obtienen a partir de un vector formado por las columnasde A puestas una a ontinuacin de otra. Si la matriz A tiene menos de mn elementos se produce un error.
Pgina 15
26 21 22 17 12 13
19 23 27 10 14 18
24 25 20 15 16 11
Pgina 16
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 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 nmero 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 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.
Pgina 17
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 35 1 6 26 0 0 1 0 3 32 7 21 31 9 2 22 0 0 0 0
0 19 0 23 27 0
0 24 0 25 20 1
Se pueden realizar operaciones an ms 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 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.
Pgina 18
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"
Pgina 19
3.1. COMANDO IF
En su forma ms simple, la sentencia if se escribe en la forma siguiente (obsrvese que a diferencia de C/C++/Java la condicin no va entre parntesis, aunque se pueden poner si se desea):
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 Como se ha dicho, MATLAB dispone de funciones especiales para ayudar en el chequeo de condiciones matriciales. Por ejemplo, la funcin isequal(A, B) devuelve un uno si las dos matrices son idnticas y un cero en caso de que difieran en algo.
CARDENAS ALARCON, Max Junior Pgina 20
end
Al principio se evala la switch_expresion, cuyo resultado debe ser un nmero 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. Segn 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 funcin strcmp() para cadenas de caracteres). A diferencia de C/C++/Java, en MATLAB slo se ejecuta uno de los bloques relacionado con un case.
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.
Pgina 21
En el siguiente ejemplo se presenta el caso ms 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 vara ms rpidamente (por cada valor de i, j toma todos sus posibles valores):
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).
Pgina 22
Ejemplo01.m
clear all a=21; if a<10 B=a+10 elseif a==21 B=a^2 else B=a+20 end
Ejemplo02.m
clear all x=3; if rem(x,2)==0 fprintf('el numero es par'); else fprintf('el numero es impar'); end
Ejemplo03.m
clear all x=0; if x>10 fprintf('APROBADO'); elseif x==10 fprintf('POR VERSE'); elseif x==0 fprintf('anda al bao'); else fprintf('DESAPROBADO'); end
Pgina 23
Ejemplo01.m
clear all x=1; switch x case 1 Y=12+x case 2 Y=1+x end
Ejemplo01.m
clear all for x=1:2:9 Y=x.^2-1; disp([x,Y]); end
3.6.4. COMANDO WHILE Ejemplo de aplicacin, suma de los primeros 10 nmeros 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);
Pgina 24
[3.1] [3.2]
[3.3]
[3.4]
[3.5]
[3.6]
[3.7]
[3.8]
[3.9]
Pgina 25
Pgina 26
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)
Pgina 27
Pgina 28
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.
CARDENAS ALARCON, Max Junior Pgina 29
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:
Cuadro 4.1. Comandos echo en MATLAB
COMANDO echo on echo off echo file on echo file off echo file echo on all echo off all
DESCRIPCION Activa el echo en todos los ficheros script Desactiva el echo Donde 'file' es el nombre de un fichero de funcin, activa el echo en esa funcin Desactiva el echo en la funcin Pasa de on a off y viceversa Activa el echo en todas las funciones Desactiva el echo de todas las funciones
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.
Pgina 30
Ejemplo01.m
clear all clc x=input('Introduzca el nmero:'); if rem(x,30)==0 disp('"El nmero es mltiplo de 2, 3 y 5"') elseif rem(x,6)==0 disp('"El nmero es mltiplo de 2 y 3"') elseif rem(x,10)==0 disp('"El nmero es mltiplo de 2 y 5"') elseif rem(x,15)==0 disp('"El nmero es mltiplo de 3 y 5"') elseif rem(x,2)==0 disp('"El nmero es mltiplo de 2"') elseif rem(x,3)==0 disp('"El nmero es mltiplo de 3"') elseif rem(x,5)==0 disp('"El nmero es mltiplo de 5"') else disp('"El nmero no es mltiplo de 2, ni de 3, ni de 5"') end disp('Gracias por utilizar el sistema, buen da.')
Pgina 31
Solucin
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 trminos ("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 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
Cuadro 4.4. Ejemplo03.m
Ejemplo03.m
clear all clc disp('PROGRAMA PARA CONSULTAR SI UN AO ES BISIESTO O NO:') a=input('Escriba el ao que desea consultar='); if rem(a,400)==0 fprintf('"El ao %2.0f SI es bisiesto"\n',a) elseif rem(a,100)==0 fprintf('"El ao %2.0f NO es bisiesto"\n',a) elseif rem(a,4)==0 fprintf('"El ao %2.0f SI es bisiesto"\n',a) else fprintf('"El ao %2.0f NO es bisiesto"\n',a) end disp('Gracias por utilizar el programa, que tenga buen da.')
Pgina 32
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.
Cuadro 4.5. Ejemplo04.m
Ejemplo04.m
x=input('Introduzca el total de kilmetros 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 da.')
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')
Pgina 33
Pgina 34
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 Primero elaboraremos un programa para transforma el archivo de datos de la hoja de clculo 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);
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
Pgina 35
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.
Pgina 36
Cuando el usuario pulsa el botn Push Button, su callbak se ejecuta y no devuelve un valor ni mantienen un estado.
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.
Pgina 37
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.
Pgina 38
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.
Pgina 39
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.
Pgina 40
Pgina 41
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. Los Callback De Los Ejes Los ejes no son objetos uicontrol, pero puede programarse para ejecutar un Callback cuando los usuarios pulsen el botn 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 opcin de accesibilidad de Orden-lnea en el dialogo de opciones de aplicacin que es fijo en Callback (el valor por defecto). Esto le permite que emita la trama del Callback sin especificar explcitamente los ejes designados.
Pgina 42
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.
Pgina 43
Nombre De La Propiedad
Valor De La Propiedad
BackgroundColor
Value: ColorSpec Default: Systen Dependent Imagen true color mostrada en el Value: Matrix control Color de texto Value: Color Spec Default: [0 0 0] Objetos resaltados cuando son Value: On, Off seleccionados Default: On Etiqueta de Uicontrol, list box y popup Value: String menu Visibilidad de Uicontrol Value: On, Off Default: On
Pgina 44
Informacin General Acerca De Los Objetos Children Enable Parent Selected SliderStep Objetos uicontrol no tiene hijos Activar o desactivar el uicontrol
Style
Value: On, inactive, Off Default: On Padre de objetos uicontrol Value: Scalar figure handle Si los objetos son seleccionados Value: On, Off Default: On Slider escala de tamao Value: Two-element vector Default: [0.01 0.1] Tipo de objeto uicontrol Value: Pushbutton, togglebutton, radiobutton, checkbox, edit, text, slider, frame, listbox, popupmenu Default: pushbutton Identificador de objeto especificado por Value: String el usuario Contenido de los objetos tooltip Value: String Clases de objetos grficos Datos especificados de usuario Controlando La Posicin Del Objeto Value: String(read-only) Default: Uicontrol Value: Matrix
Position
Units
Tamao y localizacin de objetos Value: position uicontrol rectangle Default: [20 20 60 20] Unidades para interpretar vectores de Value: pixels, posicin normalized, inches, centimeters, points, characters Default: pixels Controlando Letras y Etiquetas
FontAngle
Declinacin de caracteres
FontName
Familia fuente
FontSize
Tamao fuente
Value: normal, italic, oblique Default: normal Value: String Default: System dependent Value: size in FontUnits Default: system depende
Pgina 45
FontUnits
FontWeight
HorizontalAlighment
String
Value: points, normalized, inches, centimeters, pixels Default: points Peso de los caracteres de textos Value: light, normal, demi, bold Default: normal Alineamiento de la cadena de etiquetas Value: left, center, right Default: depends on uicontrol object Etiqueta de objetos uicontrol, tambin Value: String list box e tems de men pop-up
Controlando La Ejecucin De Las Rutinas Callback BusyAction ButtonDownFcn Callback CreateFcn DeleteFcn Interruptible uicontextMenu Interrupcin de rutinas Callback Value: cancel, queue Default: queue Presin de botn de rutina Callback Value: String Accin de control Value: String Rutina Callback ejecutada durante la Value: String creacin de objetos Rutina Callback ejecutada durante la Value: String supresin de objetos Modo de interrupcin de la rutina Value: on, off Callback Default: on Objetos Uicontextmenu asociados con Value: handle el Uicontrol Informacin Acerca Del Estado Actual listboxTop Max Min Value ndice de las cadenas ms visualizadas en la list box Valor mximo (depende del objeto uicontrol) Valor mnimo (depende del objeto uicontrol) Valor actual del objeto uicontrol Value: scalar Default: [1] Value: scalar Default: object depende Value: scalar Default: object depende Value: scalar or vector Default: object depende
Controlando El Acceso A Objetos HandleVisibility HitTest Si el manejador es inaccesible desde la Value: on, callback, off lnea de comandos y GUIs Default: on Si es seleccionado por el clic del mouse Value: on, off Default: on
Pgina 46
Pgina 47
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.
Pgina 48
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
Pgina 49
Luego editamos el tamao del Static Text, con el mouse picamos en una de las esquinas y jalamos el Static Text.
Pgina 50
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.
Pgina 51
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.
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.
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.
Pgina 52
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.
Pgina 53
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.
Cuadro 6.2. Armaduras
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.
Cuadro 6.3. Armaduras
Pgina 54
Pgina 55
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.
Pgina 56
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.
Pgina 57
Pgina 58
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.
Pgina 59
Ahorra procederemos a enlazar los controles de la interfaz grafica. Para ello hacemos clic en el botn SALIR View Callbacks Callback.
Lo cual nos conduce al archivo M-File, en el programaremos la funcin de este comando que es de cerrar el programa para ello escribiremos un su funcin el comando CLOSE.
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.
Cuadro 6.4. Armaduras
Pgina 60
Entonces colocamos estos comandos en el archive M-File de la funcin del botn EJECUTAR.
Pgina 61
Ahorra colocaremos en nuestra matriz los valores que se ingresan en los Edit Text, de esta forma formaremos la siguiente matriz.
Pgina 62
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.
Cuadro 6.5. Armaduras
La explicacin de los comandos es la siguiente: primero sacamos el tamao de la matriz mtz, luego almacenamos el valor de sus dimensiones en la variables m y n, luego damos la
Pgina 63
dimensin de la celda con el valor de la variable n, como no queremos que se muestre ningn 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
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
Pgina 64
en los cuadros, para visualizar las matrices debemos hacer clic en los Slider de las tablas, como se muestra en la figura.
Ahorra solucionaremos el sistema de ecuaciones utilizando el comando de divisin derecha de MATLAB \, luego mostraremos el resultado en la tabla siguiente, esto se realizara mediante los siguientes comandos.
Cuadro 6.7. Armaduras
Pgina 65
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.
Pgina 66
Como vemos nos aparece el inspector de propiedades en el ubicamos la opcin DATA hacemos clic en el cuadro de su costado.
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
Pgina 67
realizar esta operacin procedemos a hacer clic en OK, luego ejecutamos el programa y podremos ver el resultado de la tabla.
Pgina 68
De esta forma hemos concluido con nuestro programa para resolver armaduras.
Pgina 69
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 aritmtica matricial, eligiendo una operacin deseada, ingresando el tamao de una matriz cuadrada.
Pgina 70
En el men de DATOS, se ingresan el nmero de incgnitas, los coeficientes de las matrices a si como sus respectivos vectores respuesta y si hubiera el caso un vector de aproximacin inicial.
Pgina 71
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 mens, uno con los mtodos directos y el otro con los mtodos iterativos, en cada caso nos presentan 4 mtodos de cada caso.
Pgina 72
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.
Pgina 73
Hacemos click en la opcin deseada para ver los resultados. METODO DE GAUSS SIMPLE
METODO DE DOOLITTLE
Pgina 74
METODO DE KROUT
METODO DE CHOLESKY
Pgina 75
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.
Pgina 76
METODO DE JACOBI
Pgina 77
METODO DE GRADIENTE
Pgina 78
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.
Pgina 79
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. Para visualizar los resultados hacemos click en el men METODOS DE EP y en la opcin Resultados EGP, mostrndonos la siguiente interfaz.
Pgina 80
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
Pgina 81
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
Pgina 82
Este es un ejemplo de programacin en GUI como se puede observar la programacin es grfica y de interaccin con el usuario. Este tipo de programacin es la ms comn en MATLAB, siendo de gran ayuda para la elaboracin de los programas. 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.
Pgina 83
7. CAPITULO VII: PRACTICAS DIRIGIDAS 7.1. PRACTICA N 01: ANALISIS NUMERICO Hallar el valor de las siguientes operaciones, los ngulos de las razones trigonomtricas estn dados en radianes:
Pgina 84
Sea la matriz F:
Pgina 85
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, multiplicacin, divisin y potenciacin de los nmeros. Desarrolle un programa que le permita leer un valor entero, calcular sus races cuadrada, cubica, de dicho numero y expresar el resultado. Desarrollar un programa que le permita leer un valor numrico 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 mltiplo de un numero Y. Desarrollar un programa que pueda leer tres valores, almacenarlos en las variables A,B y C, luego determinar cul de los 3 nmeros 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 nmeros impares. Desarrollar un programa que permita visualizar los 100 primeros nmeros naturales. Desarrollar un programa que permita calcular el promedio de los primeros n nmeros naturales. Desarrollar un programa que permita calcular el factorial de un nmero natural.
Pgina 86
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 continuacin se mencionaran, este programa solo debe pedir como dato de entrada un solo valor, y la visualizacin de las respuestas deben estar etiquetadas, sealando 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 sern: La suma de los primeros N nmeros naturales y su respectivo promedio.
[1.5]
[1.6]
Pgina 87
Los productos que se van a desarrollar en el programa sern: El producto de los primeros N nmeros naturales (factorial).
[1.11]
[1.12]
Pgina 88
7.5. PRACTICA N 05: PROGRAMACION EN GUIDE Desarrollar una interfaz grafica para desarrollar el siguiente tipo de armaduras isostticas, en el siguiente grfico se muestra la estructura de la armadura, a si como el nmero 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, tambin debe determinar si la barra se encuentra sometida a traccin o compresin. 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 diseo.
Se debe tener en consideracin la aplicacin de fuerzas externas en las dos direcciones en los nudos de la armadura, como se ve en la figura siguiente. Los tringulos que se forman en la armadura deben de ser tringulos rectngulos.
Pgina 89
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 traccin, entonces si las fuerzas obtenidas al final de resolver la armadura nos resultan negativas diremos que esas barras se encuentran sometidas a compresin, lo mismo aplicaremos para el sentido de las reacciones.
Analizando en cada nudo obtenemos: [7.1] [7.2] [7.3] [7.4] [7.5] [7.6] [7.7] [7.8] [7.9]
Pgina 90
[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 mtodos numricos, a continuacin mostraremos el sistema de ecuaciones lineales en forma matricial.
Pgina 91
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.
Pgina 92
Pgina 93
Pgina 94
Pgina 95
8.2.ANEXO B
Pgina 96
Pgina 97
Pgina 98
Pgina 99
Pgina 100
Pgina 101
Pgina 102
Pgina 103
Pgina 104
Pgina 105
Pgina 106
Pgina 107
Pgina 108
Pgina 109
Pgina 110
Pgina 111
Pgina 112
Pgina 113
Pgina 114
9. REFERENCIAS
[1] JAVIER GARCA DE JALN, JOS IGNACIO RODRGUEZ, JESS VIDAL. Aprenda Matlab como en primero. Universidad Politcnica De Madrid.
[2] DELORES M. ETTER. Solucin de problemas de ingeniera con Matlab. A Simon y Schuster company. Segunda Edicin.
[3] RAFAEL PALACIOS. Curso Rpido de Matlab. Universidad Pontificia Comillas. Diciembre 2004.
[4] HERON MORALES MARCHENA. Matlab 7 Mtodos Numricos y visualizacin Grfica. Grupo Editorial MegaByte. Primera Edicion Marzo 2005.
Pgina 115