Vous êtes sur la page 1sur 30

REPBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA EDUCACIN SUPERIOR CENTRO DE ESTUDIOS EN CIENCIAS DE LA ENERGA UNIVERSIDAD

BOLIVARIANA DE VENEZUELA PROGRAMA DE FORMACIN DE GRADO EN HIDROCARBUROS

GUA DE INSTRUCCIONES PARA USAR EL SOFTWARE MATLAB


(Para la realizacin de esta gua, se tom informacin de tutoriales y libros del software MATLAB, para fines didcticos)

Elaborador por: Ing. Richard Pisos

Carabobo, Febrero 2011

NDICE
CONTENIDO INTRODUCCIN UNIDAD I. ENTORNO DE MATLAB A. NOCIONES GENERALES A.1 Matlab Desktop A.2 Command Window A.3 Command History Browser A.4 Current Directory Browser A.5 Workspace Browser y Array Editor A.6 Profiler UNIDAD II. OPERACIONES BSICAS EN MATLAB A. VECTORES Y MATRICES B. REPRESENTACIN GRFICA DE FUNCIONES C. OPERACIONES CON POLINOMIOS D. ECUACIONES DIFERENCIALES E. INTEGRALES F. DERIVADAS G. MANEJO DE EXPRESIONES SIMBLICAS UNIDAD III. PROGRAMACIN EN MATLAB A. BIFURCACIONES Y BUCLES A.1 Sentencia If A.2 Sentencia Switch A.3 Sentencia For A.4 Sentencia While A.5 Sentencia Break A.6 Sentencia Continue A.7 Sentencia TryCatchEnd B. LECTURA Y ESCRITURA INTERACTIVA B.1 Funcin input B.2 Funcin disp B.3 Ficheros *m B.4 Ficheros de comandos(Scripts) C. DEFINICIN DE FUNCIN C.1 Funciones Fscanf, Sscanf, Fprintf, Sprintf D. ENTRADA Y SALIDA DE DATOS D.1 Importar datos de otras aplicaciones D.2 Exportar datos de otras aplicaciones E. EJEMPLOS PRCTICOS EN MATLAB E.1.Suma de dos Nmeros E.2 Lanzamiento de proyectiles E.3 Control de temperatura en un intercambiador de calor E.4 Representacin grfica en MATLAB REFERENCIAS BIBLIOGRFICAS Pg 1 2 2 2 3 3 4 5 5 5 6 8 10 10 11 11 11 11 11 12 12 13 14 14 14 14 15 15 15 15 16 16 17 18 18 18 19 19 23 25 26 28

INTRODUCCIN
La presente gua instructiva para el uso del software Matlab, fue realizada con la finalidad de orientar a los estudiantes y profesores del PFG en Hidrocarburos, sobre las nociones generales del software y sus principales aplicaciones en el clculo tcnico y cientfico. MATLAB es un programa para realizar clculos numricos con vectores y matrices. Tambin puede trabajar con nmeros escalares (tanto reales como complejos), cadenas de caracteres y otras estructuras de informacin ms complejas. Una de las capacidades ms atractivas es la de realizar una amplia variedad de grficos en dos y tres dimensiones y tiene un lenguaje de programacin propio. La gua consta de tres (3) unidades. Primeramente, se tiene una explicacin breve del entorno de MATLAB, para conocer su funcionamiento. Luego, se presentan algunas operaciones bsicas que se pueden realizar con MATLAB, como son operaciones con vectores y matrices, resolucin de sistemas de ecuaciones lineales, operaciones con polinomios, resolucin de ecuaciones diferenciales, integrales, derivadas y el manejo simblico de algunas expresiones de inters. Por ltimo se presentan nociones generales de programacin en MATLAB y ejemplos prcticos de fcil comprensin.

UNIDAD I. ENTORNO DE MATLAB A. NOCIONES GENERALES

El entorno de trabajo de MATLAB es muy grfico e intuitivo, similar al de otras aplicaciones profesionales de Windows. Las componentes ms importantes del entorno de trabajo de MATLAB son las siguientes: 1. 2. El Escritorio de Matlab (Matlab Desktop), que es la ventana o contenedor de mximo nivel en la que se pueden situar (to dock) las dems componentes. Las componentes individuales, orientadas a tareas concretas, entre las que se puede citar: a. b. c. d. e. f. g. h. i. La ventana de comandos (Command Window), La ventana histrica de comandos (Command History), El espacio de trabajo (Workspace), La plataforma de lanzamiento (Launch Pad), El directorio actual (Current Directory) La ventana de ayuda (Help) El editor de ficheros y depurador de errores (Editor&Debugger), El editor de vectores y matrices (Array Editor). La ventana que permite estudiar cmo se emplea el tiempo de ejecucin (Profiler).

A continuacin se describirn las ms relevantes: A.1 Matlab Desktop Es la ventana ms general de la aplicacin. El resto de las ventanas o componentes citadas pueden alojarse en la Matlab Desktop o ejecutarse como ventanas independientes. A su vez, los componentes alojados en el Matlab Desktop pueden aparecer como sub-ventanas independientes o como pestaas dentro de una de las sub-ventanas. MATLAB 7.0 ofrece una gran flexibilidad al respecto y es cada usuario quien decide en qu forma desea utilizar la aplicacin.

A.2 Command Window sta es la ventana en la que se ejecutan interactivamente las instrucciones de MATLAB y en donde se muestran los resultados correspondientes, si es el caso. En cierta forma es la ventana ms importante y la nica que exista en las primeras versiones de la aplicacin.

A.3 Command History Browser Ofrece acceso a las sentencias que se han ejecutado anteriormente en la Command Window. Estas sentencias estn tambin accesibles por medio de las teclas y como en las versiones anteriores, pero esta ventana facilita mucho el tener una visin ms general de lo hecho anteriormente y seleccionar lo que realmente se desea repetir. Las sentencias ejecutadas anteriormente se pueden volver a ejecutar mediante un doble clic o por medio del men contextual que se abre al clicar sobre ellas con el botn derecho.

A.4 Current Directory Browser Permite explorar los directorios del ordenador en forma anloga a la del Explorador u otras aplicaciones de Windows. Cuando se llega al directorio deseado se muestran los ficheros y ficheros all contenidos. La ventana Current Directory permite ordenarlos por fecha, tamao, nombre, etc. El directorio actual cambia automticamente en funcin del directorio seleccionado con este explorador, y tambin se puede cambiar desde la propia barra de herramientas del Matlab Desktop. Los ficheros *.m que se muestran en la ventana Current Directory se pueden abrir con el Editor/Debugger mediante un doble clic.

A.5 Workspace Browser y Array Editor Es el conjunto de variables y de funciones de usuario que en un determinado momento estn definidas en la memoria del programa o de la funcin que se est ejecutando. Para obtener informacin sobre el Workspace desde la lnea de comandos se pueden utilizar los comandos who y whos. El Array Editor permite ver los valores de los elementos de cualquier matriz o vector definido en el programa y modificar estos valores clicando sobre la celda correspon- diente. La ventana del Array Editor incluye una lista desplegable en la que se puede elegir el formato en el que se desea ver los datos. Tambien es muy til tambin para entender bien ciertos algoritmos, ejecutando paso a paso un programa y viendo cmo cambian los valores de las distintas variables. Es posible aparcar o situar las ventanas o pestaas del Array Editor en la misma ventana del Editor/Debugger, que se va a visualizar a continuacin.

A.6 Profiler Es un programa de utilidad que permite saber cmo se ha empleado el tiempo de la CPU en la ejecucin de un determinado programa. El profiler es una herramienta muy til para determinar los cuellos de botella de un programa, es decir las funciones y las lneas de cdigo que ms veces se llaman y que se llevan la mayor parte del tiepo de ejecucin. Por ejemplo, es obvio que si se trata de mejorar la eficiencia de un programa, sera ms importante mejorar una funcin que se llevase el 60% del tiempo total que otra que slo se llevase el 2%. Dentro de la funcin ms llamada ,el profiler proporciona informacin sobre el tiempo que se lleva cada sentencia, y da tambin algunas orientaciones sobre las posibilidades de mejorarla.

UNIDAD II. OPERACIONES BSICAS EN MATLAB A continuacin, se presentarn algunos ejemplos y consideraciones para la operacin en Matlab de:
A. B. C. D. E. F. G. VECTORES Y MATRICES, SISTEMAS DE ECUACIONES. REPRESENTACIN GRFICA DE FUNCIONES. OPERACIONES CON POLINOMIOS. ECUACIONES DIFERENCIALES. INTEGRALES. DERIVADAS. MANEJO DE EXPRESIONES SIMBLICAS.
5

Es importante sealar las siguientes consideraciones, con respecto a la simbologa, variables y cadena de caracteres del software Matlab: Smbolos especiales que usa MATLAB [ ] para definir vectores y matrices ( ) para definir precedencia en expresiones y para subndices , para separar elementos de un vector use comas o espacios ; para separar filas y para evitar mostrar contenido de variables % para iniciar un comentario (programas y funciones) ... para continuar un comando en la siguiente lnea Variables No requieren ser declaradas. Su tipo depende del valor asignado. Pueden ser redefinidas. Sensible al tipo de letra. (maysculas o minsculas) ans es la variable por omisin provista por MATLAB Matlab realiza la asignacin de memoria a variables durante la ejecucin. Cadenas de caracteres >> x='Matematica';

asignacin de una cadena (use comillas simples)

A. VECTORES Y MATRICES, SISTEMAS DE ECUACIONES

Vectores y Matrices: >> x=[3, -1, 4, 7, -2] >> x=[3 -1 4 7 -2] >> a=[2, -3; 5, 1; 0, 7] Sistemas de ecuaciones: 2x + 3y = 4 5x 2y = 6 >> a=[2, 3; 5, -2]; >> b=[4; 6]; >> x=inv(a)*b; >> x

asignacin directa de un vector fila puede separar con comas o con espacios una matriz 3x2

ingrese la matriz de coeficientes ingrese el vector columna de constantes obtenga la solucin con la funcin para invertir muestre el vector solucin

Funciones adicionales para manejo de datos con vectores y matrices. Ejemplo: >> x=[2, 5, 4]; un vector >> a=[5,-1; 3, 4; 2, 7]; una matriz

>> t=max(x) >> v=max(a) >> t=sum(x) >> v=sum(a) >> t=prod(x) >> v=prod(a) >> t=cumsum(x) >> v=cumsum(a)

el mayor valor del vector x el mayor valor por columnas de la matriz a suma de componentes suma de componentes por columnas producto escalar producto escalar por columnas suma acumulada suma acumulada por columnas

>> t=cumprod(x) >> v=cumprod(a) >> t=mean(x) >> v=mean(a) >> t=median(x) >> v=median(a) >> t=std(x) >> v=std(a) >> t=sort(x) >> v=sort(a) >> t=dsort(x) >> bar(x) >> bar(a) >> hist(x) >> stairs(x) >> pie(x) >> pie3(x)

producto acumulado

media aritmtica

mediana

desviacin estndar

ordenamiento ascendente

ordenamiento descendente diagrama de barras

histograma dibuja x mediante escalones grfico tipo pastel pastel en relieve

B. REPRESENTACIN GRFICA DE FUNCIONES

Grfico de funciones de una variable:

Ejemplo. Grafique la funcin f(x)=sen(x) ex en el intervalo 0 x >> ezplot('sin(x)*exp(x)', 0, pi); escriba la funcin entre comillas simples >> grid on; muestre cuadrculas en el grfico

Consideraciones adicionales: >> x=[0: 0.1: 2*pi]; puntos para evaluar alguna funcin >> y=sin(x); puntos de la funcin seno >> plot(x,y); funcin para graficar la funcin con lnea contnua >> plot(x,y,'o') grfico con puntos. Puede elegir: o . * + x ->> plot(x,y,'r') cambiar a color rojo. Puede elegir r,b,y,m,g,w,k >> plot(x,y,'og') grfica con crculos verdes. >> grid on colocar cuadrculas en el dibujo >> title('seno de x') >> gtext('seno de x') >> xlabel('X') >> ylabel('Y') >> c=[0, 2*pi, -2, 2] >> axis(c) >> hold on >> hold off >> clf >> subplot(2,3,1) >> clf(1) >> clf >> x=[0:0.1:10}; >> y=exp(x); >> semilogx(x,y) >> semilogy(x,y) >> loglog(x,y) >> grid on >> a=0:0.01:2*pi; >> r=sin(3*a); >> polar(a, r); incluya un ttulo en el grfico posicione el texto en el grfico con el mouse rotule el eje horizontal rotule el eje vertical defina la regin para el grfico

superponer siguientes grficos deshabilitar opcin anterior borrar el grfico puede dividir una figura en subgrficos. Ej. en 2 filas y 3 columnas. Activando el grfico 1 borra el grfico 1 borre todos los grficos

graficar en escalas logartmicas doble logartmica

'rosa' de 3 ptalos grafique en coordenadas polares

Grfico de funciones implcitas y ecuaciones con dos variables Consideraciones: >> f='(x-2)^2+(y-3)^2-5'; >> ezplot(f); Graficar la circunferencia (x - 2)2 + (y - 3)2 = 5 en el dominio -2x2, -2y2 >> ezplot(f,[-1,5,0,6]) Graficar f en el dominio -1x5, 0y6 >> grid on; Colocar cuadrculas >> hold on; Superponer el siguiente grfico: >> g=y-2*(x-3)^2-3; una parbola y=2(x-3)2-3 en el mismo dominio >> ezplot(g,[-1,5,0,6]) Grfico de funciones definidas en forma paramtrica Consideraciones: >> ezplot('sin(t)','cos(t)',[-pi,pi]); Graficar x=x(t), y=y(t) en -t >> ezplot('sin(3*t)*cos(t)','sin(3*t)*sin(t)',[0,pi]); Una rosa de 3 ptalos Grfico de funciones de dos variables Consideraciones: >> a=[1 3 2; 5 3 7; 4 5 2]; una matriz 3x3 >> mesh(a); graficar los elementos como puntos sobre el plano. El siguiente ejemplo es una referencia para graficar funciones de dos variables Graficar z = x2 y2, -2x2, -3y3 >> x=-2:0.1:2; dominio de la funcin para el ejemplo >> y=-3:0.1:3; >> [u,v]=meshgrid(x,y); u, v: matrices que contienen cada par ordenado x,y >> z=u.^2 v.^2; puntos de la funcin z = x2 y2 >> mesh(x, y, z) grfico de malla >> contour(x, y, z) grfico de contorno >> surfc(x, y, z) grfico de superficie y contorno >> surf(x, y, z) grfico de superficie >> xlabel('X') rotulacin de eje x; tambin con ylabel, zlabel >> title('Silla de montar') ttulo para el grfico >> colormap(copper); color del grfico; tambin: gray, jet, pink >> shading interp; suavizado del grfico

C. OPERACIONES CON POLINOMIOS Ejemplo: Resuelva la ecuacin cbica 5x3 + 2x2 - 3x + 1 = 0; >> a=[5, 2, -3, 1]; ingrese los coeficientes de la ecuacin >> x=roots(a) obtenga y muestre las races de la ecuacin Consideraciones adicionales: >> a=[2, -3, 0, 5}, define el polinomio 2x3 3x2 + 5 >> y=polyval(a,4) evaluacin del polinomio con un valor >> x=roots(a) obtenga un vector con races (reales y complejas) >> t=polyval(a, x(1)) verifique una raz >> p=poly(x) producto de todas las races >> b=[3, 4, -2]; define el polinomio 3x2+ 4x - 2 >> c=conv(a,b) producto de polinomios >> [c, r]=deconv(a,b); divisin de polinomios >> c cociente >> r residuo >> a=polyfit(x, y, 2); polinomio de mnimos cuadrados de grado 2 >> a el vector a contiene los coeficientes

D. ECUACIONES DIFERENCIALES Ejemplo: Obtenga la solucin de la ecuacin diferencial ordinaria: y-x-y = 0, y(0)=1 >> y=dsolve('Dy-x-y=0','y(0)=1', 'x'); defina la ecuacin, condicin y variable >> y muestre la solucin analtica obtenida >> ezplot(y, 0, 2); grafique la solucin para 0 x 2 >> grid on muestre cuadrculas Solucin analtica y grfico de una EDO de primer orden con una condicin en el inicio >> y=dsolve('Dy=(x-y)/x','y(0)=0','x') >> ezplot(y,0,2); >> grid on EDO de segundo orden con condiciones en el inicio y grfico de la solucin >> y=dsolve('D2y+Dy+2*y-x-3=0','y(0)=0,Dy(0)=1','x') >> ezplot(y,0,2); >> grid on; EDO de segundo orden con condiciones en los bordes >> y=dsolve('D2y-Dy+2*y-5*x-3=0','y(0)=0,y(1)=2','x') >> ezplot(y,0,2); >> grid on
10

E. INTEGRALES Integre la funcin f(x) = x sen(x) >> f=int('x*sin(x)') >> s=int('x*sin(x)',0,pi) F. DERIVADAS Derivadas: diff(funcin, derivada n-sima) syms x diff(x^2+3,2) G. MANEJO SIMBLICO >> syms x; >> 2*x+3*x >> a=[x 5; 3*x 4]; >> t=inv(a) >> t=solve(2*x^2+3*x-2) >> f=3*x^2+5*x; >> limit(sin(x)/x) >> syms y; >> f=2*x^3+3*y^2 >> g=diff(f,x) >> u=int(f,x)

obtenga el resultado analtico integre entre 0 y

derivada segunda de f(x)=x2+3.

definicin de variable tipo simblico suma algebraica matriz con elementos smbolos su inversa tambin contiene smbolos solucin de una ecuacin definicin simblica de una funcin obtencin de lmites de funciones una funcin de dos variables derivada parcial integrar en x

UNIDAD III. PROGRAMACIN DE MATLAB MATLAB es una aplicacin en la cual se puede programar muy fcilmente. 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. A. Bifurcaciones y bucles MATLAB posee un lenguaje de programacin que dispone de sentencias para realizar bifurcaciones y bucles. Las bifurcaciones permiten realizar una u otra opera- cin segn se cumpla o no una determinada condicin. En la siguiente figura se muestran tres posibles formas de bifurcacin.
True Condicin 1 False Condicin 1 True True Sentencia Bloque 1 Bloque 2 Condicin 2 False Bloque 3 Bloque 2
11

Condicin 1

False False True Bloque 1

Los bucles permiten repetir las mismas o anlogas operaciones sobre datos distintos. En MATLAB se utiliza la palabra end con anloga finalidad. Existen tambin algunas otras diferencias de sintaxis. Las bifurcaciones y bucles no slo son tiles en la preparacin de programas o de ficheros *.m. Tambin se aplican con frecuencia en el uso interactivo de MATLAB. A.1 Sentencia If En su forma ms simple, la sentencia if se escribe en la forma siguiente:
if condicion 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 if A=B A.2 Sentencia Switch Realiza una funcin anloga a un conjunto de if...elseif concatenados. Su forma general es la siguiente:
switch switch_expresion case case_expr1, bloque1 case {case_expr2, case_expr3, case_expr4,...} bloque2 end ... otherwise, % opcin por defecto Bloque3 end
12

exige que todos los elementos sean iguales dos a dos exige que todos los elementos sean diferentes dos a dos

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, explicado en el apartado 5.4); 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.3 Sentencia For La sentencia for repite un conjunto de sentencias un nmero predeterminado de veces.. La siguiente construccin ejecuta sentencias con valores de i de 1 a n, variando de uno en uno.
for i=1:n sentencias end

o bien,
for i=vectorValores sentencias end

donde vectorValores es un vector con los distintos valores que tomar la variable i. 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):
for i=1:m for j=1:n sentencias 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.

13

A.4 Sentencia While La estructura del bucle while es la siguiente:


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). A.5 Sentencia Break Esta sentencia hace que se termine la ejecucin del bucle for y/o while ms interno de los que comprenden a dicha sentencia. A.6 Sentencia Continue La sentencia continue hace que se pase inmediatamente a la siguiente iteracin del bucle for o while, saltando todas las sentencias que hay entre el continue y el fin del bucle en la iteracin actual. A.7 Sentencias Try...Catch...End La construccin try...catch...end permite gestionar los errores que se pueden producir en tiempo de ejecucin. Su forma es la siguiente:
try sentencias1 catch sentencias2 end

En el caso de que durante la ejecucin del bloque sentencias1 se produzca un error, el control de la ejecucin se transfiere al bloque sentencias2. Si la ejecucin transcurriera normalmente, sentencias2 no se ejecutara nunca. MATLAB dispone de una funcin lasterr que devuelve una cadena de caracteres con el mensaje correspondiente al ltimo error que se ha producido. En la forma lasterr('') pone a cero este contador de errores, y hace que la funcin lasterr devuelva la matriz vaca [ ] hasta que se produzca un nuevo error.

14

B. Lectura y escritura interactiva de variables B.1 Funcin Input Permite imprimir un mensaje en la lnea de comandos de MATLAB y recuperar como valor de retorno un valor numrico o el resultado de una expresin tecleada por el usuario. Despus de imprimir el mensaje, el programa espera que el usuario teclee el valor numrico o la expresin. Cualquier expresin vlida de MATLAB es aceptada por este comando. El usuario puede teclear simplemente un vector o una matriz. En cualquier caso, la expresin introducida es evaluada con los valores actuales de las variables de MATLAB y el resultado se devuelve como valor de retorno. Vase un ejemplo de uso de esta funcin:
>> n = input('Teclee el nmero de ecuaciones')

Otra posible forma de esta funcin es la siguiente (obsrvese el parmetro 's'):


>> nombre = input('Cmo te llamas?','s')

En este caso el texto tecleado como respuesta se lee y se devuelve sin evaluar, con lo que se almacena en la cadena nombre. As pues, en este caso, si se teclea una frmula, se almacena como texto sin evaluarse. B.2 Funcin Disp Permite imprimir en pantalla un mensaje de texto o el valor de una matriz, pero sin imprimir su nombre. En realidad, disp siempre imprime vectores y/o matrices: las cadenas de caracteres son un caso particular de vectores. Considrense los siguientes ejemplos de cmo se utiliza:
>> disp('El programa ha terminado') >> A=rand(4,4) >> disp(A)

B.3 Ficheros *.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 sucesiva- mente 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 co- mandos. 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 y permanecen en l cuando se termina la ejecucin de dicho fichero.

15

B.4 Ficheros De Comandos (Scripts) Dichos comandos se ejecutan sucesivamente cuando se teclea el nombre del fichero que los contiene (sin la extensin). Cuando se ejecuta desde la lnea de comandos, las variables creadas por el fichero 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. 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.

C. Definicin de Funciones La primera lnea de un fichero llamado name.m que define una funcin tiene la forma:
function [lista de valores de retorno] = name(lista de argumentos)

donde name es el nombre de la funcin. Entre corchetes y separados por comas van los valores de retorno (siempre que haya ms de uno), y entre parntesis tambin separados por comas los argumentos. Puede haber funciones sin valor de retorno y tambin sin argumentos. Si no hay valores de retorno se omiten los corchetes y el signo igual (=); si slo hay un valor de retorno no hace falta poner corchetes. Tampoco hace falta poner parntesis si no hay argumentos. Las variables definidas dentro de una funcin son variables locales, en el sentido de que son inaccesibles desde otras partes del programa y en el de que no interfieren con variables del mismo nombre definidas en otras funciones o partes del programa. Se puede decir que pertenecen al propio espacio de trabajo de la funcin y no son vistas desde otros espacios de trabajo. Para que la funcin tenga acceso a variables que no han sido pasadas como argumentos es necesario declarar dichas variables como variables globales, tanto en el programa principal como en las distintas funciones que deben acceder a su valor. Es frecuenteutilizar usar nombres largos (ms de 5 letras) y con maysculas para las variables globales. Las variables persistentes son variables locales de las funciones (pertenecen al espacio de trabajo de la funcin y slo son visibles en dicho espacio de trabajo), que conservan su valor entre distintas llamadas a la funcin. Por defecto, las variables locales de una funcin se crean y destruyen cada vez que se ejecuta la funcin. Las variables persistentes se pueden definir en funciones, pero no en ficheros de comandos. Es habitual utilizar para ellas letras maysculas. Las variables se declaran como persistentes utilizando la palabra persistent
16

seguida de los nombres separados por blancos, como por ejemplo:


>> persistent VELOCIDAD TIEMPO

Las variables persistent se inicializan a la matriz vaca [] y permanecen en memoria hasta que se hace clear de la funcin o cuando se modifica el fichero-M. Para evitar que un fichero-M se modifique se puede utilizar el comando mlock file.m, que impide la modificacin del fichero. El comando munlock desbloquea el fichero mientras que la funcin mislocked permite saber si est bloqueado o no. Las variables globales son visibles en todas las funciones (y en el espacio de trabajo base o general) que las declaran como tales. Dichas variables de declaran precedidas por la palabra global y separadas por blancos, en la forma:
global VARIABLE1 VARIABLE2

Como ya se ha apuntado, estas variables slo son visibles en los espacios de trabajo de las funciones que las declaran como tales (y en el propio espacio de trabajo base, si tambin ah han sido declaradas como globales). Ya se ha dicho tambin que se suele recurrir al criterio de utilizar nombres largos y con maysculas, para distinguirlas fcilmente de las dems variables.

C.1 Funciones Fscanf, Sscanf, Fprintf y Sprintf Estas funciones permiten leer y escribir en ficheros ASCII, es decir, en ficheros formateados. La forma general de la funcin fscanf es la siguiente:
[var1,var2,...] = fscanf(fi,'cadena de control',size)

donde fi es el identificador del fichero (devuelto por la funcin fopen), y size es un argumento op- cional que puede indicar el tamao del vector o matriz a leer. Obsrvese otra diferencia con C: las variables ledas se devuelven como valor de retorno y no como argumentos pasados por referencia (precedidos por el carcter &). La cadena de control va encerrada entre apstrofos simples, y contiene los especificadores de formato para las variables: %s %d %f %lf para cadenas de caracteres para variables enteras para variables de punto flotante para variables de doble precisin

La funcin sscanf es similar a fscanf pero la entrada de caracteres no proviene de un fichero sino de una cadena de caracteres. Finalmente, la funcin fprintf dirige su salida formateada hacia el fichero indicado por el identificador. Su forma general es:
fprintf(fi,'cadena de control',var1,var2,...)

sta es la funcin ms parecida a su homloga de C. La cadena de control contiene los formatos de escritura, que son similares a los de C, como muestran los ejemplos siguientes:
fprintf(fi,'El nmero de ecuaciones es: %d\n',n) fprintf(fi,'El determinante es: %lf10.4\n',n)
17

De forma anloga, la funcin sprintf convierte su resultado en una cadena de caracteres que devuelve como valor de retorno, en vez de enviarlo a un fichero. Vase un ejemplo:
resultado = sprintf('El cuadrado de %f es %12.4f\n',n,n*n)

donde resultado es una cadena de caracteres. Esta funcin constituye el mtodo ms general de convertir nmeros en cadenas de caracteres, por ejemplo para ponerlos como ttulos de figuras. D. Entrada y salida de datos D.1 Importar datos de otras aplicaciones Hay varias formas de pasar datos de otras aplicaciones por ejemplo de Excel a MATLAB. Se pueden enumerar las siguientes: Se puede utilizar el icono Copy y Paste para copiar datos de la aplicacin original y depositarlos entre los corchetes de una matriz o vector, en una lnea de comandos de MATLAB. Tiene el inconveniente de que estos datos no se pueden editar. Se puede crear un fichero *.m con un editor de textos, con lo cual no existen problemas de edicin. Es posible leer un flat file escrito con caracteres ASCII. Un flat file es un fichero con filas de longitud constante separadas con Intro, y varios datos por fila separados por blancos. Estos ficheros pueden ser ledos desde MATLAB con el comando load. Si se ejecuta load datos.txt El contenido del flat file se deposita en una matriz con el nombre datos. Por ejemplo, creando un fichero llamado flat.txt que contenga las lneas:
23.456 56.032 67.802 3.749 -98.906 34.910

el comando A=load('flat.txt') leer estos valores y los asignar a la matriz A. El comando textread permite leer datos de cualquier tipo de un fichero siempre que estn con- venientemente separados. Se pueden leer datos de un fichero con las funciones fopen y fread. Existen tambin otros mtodos posibles: escribir funciones en C para traducir a formato *.mat (y cargar despus con load), crear un fichero ejecutable *.mex que lea los datos, entre otros. D.2 Exportar datos a otras aplicaciones De forma anloga, tambin los resultados de MATLAB se pueden exportar a otras aplicaciones como Word o Excel. Utilizar el comando diary para datos de pequeo tamao. Utilizar el comando save con la opcin -ascii. Utilizar las funciones de bajo nivel fopen, fwrite y otras. Otros mtodos que no se vern aqu: escribir subrutinas en C para traducir de formato
18

*.mat (guardando previamente con save), crear un fichero ejecutable *.mex que escriba los datos, etc. Hay que sealar que los ficheros binarios *.mat son trasportables entre versiones de MATLAB en distintos tipos de computadores, porque contienen informacin sobre el tipo de mquina en el header del fichero, y el programa realiza la transformacin de modo automtico. Los ficheros *.m sonde tipo ASCII, y por tanto pueden ser ledos por distintos computadores sin problemas de ningn tipo. E. EJEMPLOS PRCTICOS DE PROGRAMACIN EN MATLAB E.1 Suma de dos nmeros E.1.1 Desarrolle un programa en el software Matlab que realice la suma de dos nmeros, ingresando los nmeros por pantalla.

19

Secuencia de pasos fundamentales: A=input('Ingrese el valor de A:'); B=input('Ingrese el valor de B:'); SUMA=A+B; disp('El resultado es:'); SUMA E.1.2 Realice el ejemplo 1 utilizando la opcin FUNCTION

20

Secuencia de pasos fundamentales: function SUMA= calculo2(A,B) SUMA=A+B; disp('El resultado es:'); end E.1.3 Realice la sumatoria del ejemplo 1 para varios valores de A y B, utilizando vectores, guardando los resultados en una tabla e imprimiendo en pantalla.

21

Secuencia de pasos fundamentales: A=[2 3 4 5]; B=[6 7 8 9]; SUMA=A+B; Table=[A;B;SUMA]; disp('Los resultados obtenidos de la suma son los siguientes:'); disp('A B SUMA'); fprintf('%0.0f %5.0f %5.0f\n', Table)

22

E.2. Lanzamiento de Proyectiles (Ejercicio tomado con fines didcticos del libro Matlab para ingenieros, Autor: Holly Moore y adaptado por quien elabor la gua) El Rango de un objeto que se lanza en un angulo con respecto al eje x y una velocidad inicial v0 est dado por:

Demueste que el rango mximo se btiene a , graficando en las condiciones especificadas con incrementos en el angulo de 0.05 para dos velocidades iniciales.

Secuencia de pasos fundamentales: g=9.81; v1=50; v2=100; angle=0:0.05:pi/2; R1=(v1^2/g)*sin(2*angle); R2=(v2^2/g)*sin(2*angle); plot(angle,R1,angle,R2); title('Rango del Proyectil') xlabel('angulo del proyectil') ylabel('Rango, metros') legend('velocidad inicial= 50m/s', 'velocidad inicial=100m/s') Table=[angle;R1;R2];
23

disp('angle Recorrido1 Recorrido2'); fprintf('%0.2f %10.3f %10.3f\n',Table)

24

E.3 Control de temperatura en un intercambiador de calor Ingreso de datos por teclado utilizando un vector. Sentencia For, Sentencia If. Se tiene un intercambiador de calor de tubo y carcasa, al cual se desea controlar la temperatura de salida del fluido que se inyecta por el tubo. Si se conoce que la temperatura optima de salida del fluido es 45 C. Desarrolle un programa donde los valores de temperatura de salida del fluido se ingresen en un vector por teclado, la temperatura ptima del fluido y la cantidad de datos de temperatura se ingresen por teclado y a su vez, calcule: La temperatura mxima de los datos suministrados. La cantidad de temperaturas que son superiores a la temperatura ptima. La cantidad de temperaturas que son inferiores a la temperatura ptima. Nota: El programa debe prevenir si todas las temperaturas pudieran llegar a ser mayores o menores que la temperatura optima y a su vez, calcular los promedios correspondientes. Solucin:
%Temperatura de un intercambiador de calor% a=input('Ingrese los valores del vector: '); m=input('Ingrese el nmero de elementos que tiene el vector:'); topt=input('Ingrese el valor de la temperatura optima:'); tmax=-1000000; %Puede asumir un valor que considere un absurdo% c1=0; %Contador de temperaturas mayores a la ptima% c2=0; %Contador de temperaturas menores a la ptima% s1=0; %acumulador de las temperaturas mayores a la ptima% s2=0; %acumulador de las temperaturas menores a la ptima% for i=1:m if a(i)>=topt %Datos fundamentales para estimar el promedio de las %temperaturas mayores a la ptima c1=c1+1; s1=s1+a(i); else c2=c2+1; %Datos fundamentales para estimar el promedio de las %temperaturas mayores a la ptima s2=s2+a(i); end if a(i)>=tmax %Obtencin de la temperatura mxima del sistema% tmax=a(i); else end end Table=[tmax;c1;c2]; disp('Los valores de la temperatura mxima, cantidad de temperaturas mayores y menores a la optima son:'); disp('tmax c1 c2'); fprintf('%0.0f %5.0f %5.0f\n', Table)

25

%Condiciones para verificar si se puede calcular o no el promedio de %temperaturas mayores o menores que la ptima if c1>0 prom1=s1/c1; disp('El promedio de las temperaturas mayores a la optima es: '); prom1 else disp('Todos los valores de temperatura son menores a la optima'); end if c2>0 prom2=s2/c2; disp('El promedio de las temperaturas menores a la optima es: '); prom2 else disp('Todos los valores de temperatura son mayores la optima') end

Nota: Este programa puede ser modificado ingresando y extrayendo los datos usando archivos, as como tambin se pueden simplificar las sentencias utilizadas.

E.4 Representaciones grficas en MATLAB


E.4.1. Realice un triangulo siguiendo las instrucciones en Matlab

Solucin:
%Dibujo de un triangulo x=[2 4 6 2];y=[5 7 2 5]; plot (x,y) grid on

26

E.4.2 Grafique la funcin z=exp (-x2-y2) sobre el rectngulo [-2,2]x[-2,2]

Solucin:
%Este conjunto de instrucciones genera la grfica de la funcin z sobre el rectngulo [-2,2] x [-2,2] [x y]=meshgrid(-2:0.1:2); z=exp(-x.^2 - y.^2); mesh(x,y,z)

E.4.3. Grafique una recta que contenga al punto (1,0,3) y es paralela al vector [-1,1,2] si se conoce que la ecuacin vectorial de la recta es: (x,y,z)=(1,0,3)+t(-1,1,2) Solucin:
%grfica de una recta en el espacio t = -3:0.1:3; x =1-t; y = t; z=3+2*t; plot3(x,y,z,'linewidth',2)%la opcin linewidth permite aumentar el grosor de la linea recta% grid on

27

E.4.4 Grafique las siguientes rectas, utilizando el software Matlab: y1=2*x y2=-3*x+4 Solucin:
%graficacin de varias funciones% x=[0 3]; y1= 2*x; plot(x,y1,'g', 'linewidth',3) %'g' especifica que el color de la recta es verde% hold on y2=-3*x+4; plot(x,y2,'r','linewidth',3) %'r' especifica que el color de la recta es rojo% hold off grid on

Con estos ejemplos, se culmina la explicacin inicial del software Matlab. Se invita a todos los lectores de esta gua, a practicar e indagar sobre las ventajas que tiene la utilizacin de este software.
DGAME Y OLVIDO, MUSTREME Y RECUERDO. INVOLCREME Y COMPRENDO. Proverbio Chino. REFERENCIAS BIBLIOGRFICAS 1. BAEZ, D (2006). MATLAB con aplicaciones a la ingeniera, fsica y finanzas. Editorial alfaomega grupo editor. Mxico. 2. Moore, H (2007). MATLAB en Ingeniera. Editorial Pearson Educacin. Mxico. 3. NAKAMURA, S (1997). Anlisis Numricos y visualizacin grfica con MATLAB. Editorial Pearson Educacin. Mxico
28

Vous aimerez peut-être aussi