Guia Basica de Matlab. 2011-I

30
GUÍA DE INSTRUCCIONES PARA USAR EL SOFTWARE MATLAB (Para la realización de esta guía, se tomó información de tutoriales y libros del software MATLAB, para fines didácticos) Elaborador por: Ing. Richard Pisos Carabobo, Febrero 2011 REPÚBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA EDUCACIÓN SUPERIOR CENTRO DE ESTUDIOS EN CIENCIAS DE LA ENERGÍA UNIVERSIDAD BOLIVARIANA DE VENEZUELA PROGRAMA DE FORMACIÓN DE GRADO EN HIDROCARBUROS

Transcript of Guia Basica de Matlab. 2011-I

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 1/30

 

GUÍA DE INSTRUCCIONES

PARA USAR EL SOFTWARE MATLAB(Para la realización de esta guía,

se tomó información de tutoriales y libros del software MATLAB, para fines didácticos)

Elaborador por:

Ing. Richard Pisos

Carabobo, Febrero 2011

REPÚBLICA BOLIVARIANA DE VENEZUELA

MINISTERIO DEL PODER POPULAR PARA LA EDUCACIÓN SUPERIOR

CENTRO DE ESTUDIOS EN CIENCIAS DE LA ENERGÍA

UNIVERSIDAD BOLIVARIANA DE VENEZUELA

PROGRAMA DE FORMACIÓN DE GRADO EN HIDROCARBUROS

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 2/30

 

ÍNDICE

CONTENIDO PágINTRODUCCIÓN 1UNIDAD I. ENTORNO DE MATLAB 2

A. NOCIONES GENERALES

A.1 Matlab DesktopA.2 Command WindowA.3 Command History BrowserA.4 Current Directory BrowserA.5 Workspace Browser y Array EditorA.6 Profiler

2

233455

UNIDAD II. OPERACIONES BÁSICAS EN MATLAB 5A.  VECTORES Y MATRICESB.  REPRESENTACIÓN GRÁFICA DE FUNCIONESC.  OPERACIONES CON POLINOMIOSD.  ECUACIONES DIFERENCIALESE.  INTEGRALES

F.  DERIVADASG.  MANEJO DE EXPRESIONES SIMBÓLICAS

68101011

1111UNIDAD III. PROGRAMACIÓN EN MATLAB 11

A.  BIFURCACIONES Y BUCLESA.1 Sentencia If A.2 Sentencia SwitchA.3 Sentencia ForA.4 Sentencia WhileA.5 Sentencia BreakA.6 Sentencia ContinueA.7 Sentencia Try…Catch…End 

B. LECTURA Y ESCRITURA INTERACTIVA

B.1 Función inputB.2 Función dispB.3 Ficheros *mB.4 Ficheros de comandos(Scripts)

C. DEFINICIÓN DE FUNCIÓNC.1 Funciones Fscanf, Sscanf, Fprintf, Sprintf 

D. ENTRADA Y SALIDA DE DATOSD.1 Importar datos de otras aplicacionesD.2 Exportar datos de otras aplicaciones

E. EJEMPLOS PRÁCTICOS EN MATLABE.1.Suma de dos NúmerosE.2 Lanzamiento de proyectiles

E.3 Control de temperatura en un intercambiador de calorE.4 Representación gráfica en MATLAB

111212131414141415

151515161617181818191923

2526REFERENCIAS BIBLIOGRÁFICAS 28

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 3/30

 

1

INTRODUCCIÓN

La presente guía instructiva para el uso del software Matlab, fue realizada con la finalidad deorientar a los estudiantes y profesores del PFG en Hidrocarburos, sobre las nociones generales del

software y sus principales aplicaciones en el cálculo técnico y científico.

MATLAB es un programa para realizar cálculos numéricos con vectores y matrices.También puede trabajar con números escalares (tanto reales como complejos), cadenas decaracteres y otras estructuras de información más complejas. Una de las capacidades más atractivas esla de realizar una amplia variedad de gráficos  en dos y tres dimensiones y tiene un lenguaje deprogramación propio.

La guía consta de tres (3) unidades. Primeramente, se tiene una explicación breve del entornode MATLAB, para conocer su funcionamiento. Luego, se presentan algunas operaciones básicas quese pueden realizar con MATLAB, como son operaciones con vectores y matrices, resolución de

sistemas de ecuaciones lineales, operaciones con polinomios, resolución de ecuaciones diferenciales,integrales, derivadas y el manejo simbólico de algunas expresiones de interés. Por último se presentannociones generales de programación en MATLAB y ejemplos prácticos de fácil comprensión.

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 4/30

 

2

UNIDAD I. ENTORNO DE MATLAB

A.  NOCIONES GENERALES

El entorno de trabajo de MATLAB es muy gráfico e intuitivo, similar al de otras aplicaciones

profesionales de Windows.Las componentes más importantes del entorno de trabajo de MATLAB son las siguientes:

1. El Escritorio de Matlab (Matlab Desktop), que es la ventana o contenedor de máximo nivelen la que se pueden situar (to dock) las demás componentes.

2. Las componentes individuales, orientadas a tareas concretas, entre las que se puede citar:

a. La ventana de comandos (Command Window),b. La ventana histórica de comandos (Command History),c. El espacio de trabajo (Workspace),d. La plataforma de lanzamiento (Launch Pad),

e. El directorio actual (Current Directory)f. La ventana de ayuda (Help)g. El editor de ficheros y depurador de errores (Editor&Debugger),h. El editor de vectores y matrices (Array Editor).i. La ventana que permite estudiar cómo se emplea el tiempo de ejecución (Profiler).

A continuación se describirán las más relevantes:A.1 Matlab Desktop 

Es la ventana más general de la aplicación. El resto de las ventanas o componentes citadaspueden alojarse en la Matlab Desktop o ejecutarse como ventanas independientes. A su vez, loscomponentes alojados en el Matlab Desktop pueden aparecer como sub-ventanas independientes o

como pestañas dentro de una de las sub-ventanas. MATLAB 7.0 ofrece una gran flexibilidad alrespecto y es cada usuario quien decide en qué forma desea utilizar la aplicación.

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 5/30

 

3

A.2 Command Window 

Ésta es la ventana en la que se ejecutan interactivamente las instrucciones de MATLAB y endonde se muestran los resultados correspondientes, si es el caso. En cierta forma es la ventana másimportante y la única que existía en las primeras versiones de la aplicación.

A.3 Command History Browser 

Ofrece acceso a las sentencias que se han ejecutado anteriormente en la Command Window.Estas sentencias están también accesibles por medio de las teclas y como en las versionesanteriores, pero esta ventana facilita mucho el tener una visión más general de lo hechoanteriormente y seleccionar lo que realmente se desea repetir.

Las sentencias ejecutadas anteriormente se pueden volver a ejecutar mediante un doble clico por medio del menú contextual que se abre al clicar sobre ellas con el botón derecho.

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 6/30

 

4

A.4 Current Directory Browser 

Permite explorar los directorios del ordenador en forma análoga a la del Explorador u otrasaplicaciones de Windows. Cuando se llega al directorio deseado se muestran los ficheros y ficheros

allí contenidos. La ventana Current Directory permite ordenarlos por fecha, tamaño, nombre, etc. Eldirectorio actual cambia automáticamente en función del directorio seleccionado con esteexplorador, y también 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 elEditor/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 estándefinidas en la memoria del programa o de la función que se está ejecutando. Para obtenerinformación sobre el Workspace desde la línea de comandos se pueden utilizar los comandos who ywhos.

El Array Editor permite ver los valores de los elementos de cualquier matriz o vector definidoen el programa y modificar estos valores clicando sobre la celda correspon- diente. La ventana delArray Editor incluye una lista desplegable en la que se puede elegir el formato en el que se desea verlos datos. Tambien es muy útil también para entender bien ciertos algoritmos, ejecutando paso apaso un programa y viendo cómo cambian los valores de las distintas variables. Es posible aparcar o

situar las ventanas o pestañas del Array Editor en la misma ventana del Editor/Debugger, que se va avisualizar a continuación.

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 7/30

 

5

A.6 Profiler 

Es un programa de utilidad que permite saber cómo se ha empleado el tiempo de la CPU en la

ejecución de un determinado programa. El profiler es una herramienta muy útil para determinar loscuellos de botella de un programa, es decir las funciones y las líneas de código que más veces sellaman y que se llevan la mayor parte del tiepo de ejecución. Por ejemplo, es obvio que si se trata demejorar la eficiencia de un programa, sería más importante mejorar una función que se llevase el60% del tiempo total que otra que sólo se llevase el 2%. Dentro de la función más llamada ,elprofiler proporciona información sobre el tiempo que se lleva cada sentencia, y da también algunasorientaciones sobre las posibilidades de mejorarla.

UNIDAD II. OPERACIONES BÁSICAS EN MATLAB

A continuación, se presentarán algunos ejemplos y consideraciones para la operación en Matlab de:

A.  VECTORES Y MATRICES, SISTEMAS DE ECUACIONES.B.  REPRESENTACIÓN GRÁFICA DE FUNCIONES.C.  OPERACIONES CON POLINOMIOS.D.  ECUACIONES DIFERENCIALES.E.  INTEGRALES.F.  DERIVADAS.G.  MANEJO DE EXPRESIONES SIMBÓLICAS.

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 8/30

 

6

Es importante señalar las siguientes consideraciones, con respecto a la simbología, variables y cadena dcaracteres del software Matlab:

  Símbolos especiales que usa MATLAB[ ] para definir vectores y matrices( ) para definir precedencia en expresiones y para subíndices, 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 línea

  Variables  No requieren ser declaradas.  Su tipo depende del valor asignado.  Pueden ser redefinidas.  Sensible al tipo de letra. (mayúsculas o minúsculas)  ans es la variable por omisión provista por MATLAB  Matlab realiza la asignación de memoria a variables durante la ejecución.

  Cadenas de caracteres>> x='Matematica'; asignación de una cadena (use comillas simples)

A.  VECTORES Y MATRICES, SISTEMAS DE ECUACIONES

  Vectores y Matrices:>> x=[3, -1, 4, 7, -2] asignación directa de un vector fila>> x=[3 -1 4 7 -2] puede separar con comas o con espacios >> a=[2, -3; 5, 1; 0, 7] una matriz 3x2

  Sistemas de ecuaciones:2x + 3y = 45x – 2y = 6 

>> a=[2, 3; 5, -2]; ingrese la matriz de coeficientes>> b=[4; 6]; ingrese el vector columna de constantes>> x=inv(a)*b; obtenga la solución con la función para invertir>> x muestre el vector solución

  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

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 9/30

 

7

>> t=max(x) el mayor valor del vector x>> v=max(a) el mayor valor por columnas de la matriz a

>> t=sum(x) suma de componentes>> v=sum(a) suma de componentes por columnas

>> t=prod(x) producto escalar>> v=prod(a) producto escalar por columnas

>> t=cumsum(x) suma acumulada>> v=cumsum(a) suma acumulada por columnas

>> t=cumprod(x) producto acumulado>> v=cumprod(a)

>> t=mean(x) media aritmética

>> v=mean(a)

>> t=median(x) mediana>> v=median(a)

>> t=std(x) desviación estándar>> v=std(a)

>> t=sort(x) ordenamiento ascendente>> v=sort(a)

>> t=dsort(x) ordenamiento descendente

>> bar(x) diagrama de barras>> bar(a)

>> hist(x) histograma

>> stairs(x) dibuja x mediante escalones

>> pie(x) gráfico tipo pastel>> pie3(x) pastel en relieve

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 10/30

 

8

B.  REPRESENTACIÓN GRÁFICA DE FUNCIONES

  Gráfico de funciones de una variable: Ejemplo. Grafique la función f(x)=sen(x) ex  en el intervalo 0 x   >> ezplot('sin(x)*exp(x)', 0, pi); escriba la función entre comillas simples>> grid on; muestre cuadrículas en el gráfico

Consideraciones adicionales:>> x=[0: 0.1: 2*pi]; puntos para evaluar alguna función>> y=sin(x); puntos de la función seno>> plot(x,y); función para graficar la función con línea contínua>> plot(x,y,'o') gráfico 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') gráfica con círculos verdes.>> grid on colocar cuadrículas en el dibujo

>> title('seno de x') incluya un título en el gráfico>> gtext('seno de x') posicione el texto en el gráfico con el mouse>> xlabel('X') rotule el eje horizontal>> ylabel('Y') rotule el eje vertical

>> c=[0, 2*pi, -2, 2] defina la región para el gráfico>> axis(c)

>> hold on superponer siguientes gráficos>> hold off  deshabilitar opción anterior>> clf  borrar el gráfico

>> subplot(2,3,1) puede dividir una figura en subgráficos.Ej. en 2 filas y 3 columnas. Activando el gráfico 1

>> clf(1) borra el gráfico 1>> clf  borre todos los gráficos

>> x=[0:0.1:10}; >> y=exp(x);>> semilogx(x,y) graficar en escalas logarítmicas>> semilogy(x,y)>> loglog(x,y) doble logarítmica

>> grid on

>> a=0:0.01:2*pi;>> r=sin(3*a); 'rosa' de 3 pétalos>> polar(a, r); grafique en coordenadas polares

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 11/30

 

9

  Gráfico de funciones implícitas y ecuaciones con dos variablesConsideraciones:>> 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 cuadrículas>> hold on; Superponer el siguiente gráfico:>> g=’y-2*(x-3)^2-3’; una parábola y=2(x-3)2-3 en el mismo dominio>> ezplot(g,[-1,5,0,6])

  Gráfico de funciones definidas en forma paramétricaConsideraciones:>> 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 pétalos

  Gráfico de funciones de dos variablesConsideraciones:>> 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 paragraficar funciones de dos variablesGraficar z = x2  – y2, -2x2, -3y3 

>> x=-2:0.1:2; dominio de la función 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 función z = x2  – y2

>> mesh(x, y, z) gráfico de malla>> contour(x, y, z) gráfico de contorno>> surfc(x, y, z) gráfico de superficie y contorno>> surf (x, y, z) gráfico de superficie>> xlabel('X') rotulación de eje x; también con ylabel, zlabel >> title('Silla de montar') título para el gráfico>> colormap(copper); color del gráfico; también: gray, jet, pink >> shading interp; suavizado del gráfico

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 12/30

 

10

C.  OPERACIONES CON POLINOMIOS

  Ejemplo: Resuelva la ecuación cúbica 5x3 + 2x2 - 3x + 1 = 0; >> a=[5, 2, -3, 1]; ingrese los coeficientes de la ecuación>> x=roots(a) obtenga y muestre las raíces de la ecuación

  Consideraciones adicionales:>> a=[2, -3, 0, 5}, define el polinomio 2x3  – 3x2 + 5>> y=polyval(a,4) evaluación del polinomio con un valor>> x=roots(a) obtenga un vector con raíces (reales y complejas)>> t=polyval(a, x(1)) verifique una raíz>> p=poly(x) producto de todas las raíces>> b=[3, 4, -2]; define el polinomio 3x2+ 4x - 2>> c=conv(a,b) producto de polinomios>> [c, r]=deconv(a,b); división de polinomios>> c cociente

>> r residuo>> a=polyfit(x, y, 2); polinomio de mínimos cuadrados de grado 2>> a el vector a contiene los coeficientes

D.  ECUACIONES DIFERENCIALES  Ejemplo: Obtenga la solución de la ecuación diferencial ordinaria: y´-x-y = 0, y(0)=1 

>> y=dsolve('Dy-x-y=0','y(0)=1', 'x'); defina la ecuación, condición y variable>> y muestre la solución analítica obtenida

>> ezplot(y, 0, 2); grafique la solución para 0 x 2 >> grid on muestre cuadrículas

  Solución analítica y gráfico de una EDO de primer orden con una condición 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 gráfico de la solución

>> 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

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 13/30

 

11

E.  INTEGRALESIntegre la función f(x) = x sen(x) >> f=int('x*sin(x)') obtenga el resultado analítico >> s=int('x*sin(x)',0,pi) integre entre 0 y  

F.  DERIVADASDerivadas:diff(función, derivada n-ésima)syms xdiff(x^2+3,2) derivada segunda de f(x)=x2+3.

G.  MANEJO SIMBÓLICO>> syms x; definición de variable tipo simbólico>> 2*x+3*x suma algebraica>> a=[x 5; 3*x 4]; matriz con elementos símbolos>> t=inv(a) su inversa también contiene símbolos>> t=solve(2*x^2+3*x-2) solución de una ecuación>> f=3*x^2+5*x; definición simbólica de una función>> limit(sin(x)/x) obtención de límites de funciones>> syms y;>> f=2*x^3+3*y^2 una función de dos variables>> g=diff (f,x) derivada parcial>> u=int(f,x) integrar en x

UNIDAD III. PROGRAMACIÓN DE MATLAB

MATLAB es una aplicación en la cual se puede programar muy fácilmente. Se comenzará viendolas bifurcaciones y bucles, y la lectura y escritura interactiva de variables, que son los elementosbásicos de cualquier programa de una cierta complejidad.

A. Bifurcaciones y bucles 

MATLAB posee un lenguaje de programación que dispone de sentencias para realizar bifurcacionesy bucles. Las bifurcaciones permiten realizar una u otra opera- ción según se cumpla o no unadeterminada condición. En la siguiente figura se muestran tres posibles formas de bifurcación.

Condición 1Condición 1

Condición 1

Condición 2

SentenciaBloque 1 Bloque 2

Bloque 1

Bloque 2Bloque 3

TrueTrue

True

True

FalseFalse

False

False

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 14/30

 

12

Los bucles permiten repetir las mismas o análogas operaciones sobre datos distintos. EnMATLAB se utiliza la palabra end con análoga finalidad. Existen también algunas otrasdiferencias de sintaxis. Las bifurcaciones y bucles no sólo son útiles en la preparación deprogramas o de ficheros *.m. También se aplican con frecuencia en el uso interactivo deMATLAB.

A.1 Sentencia  If  

En su forma más simple, la sentencia if se escribe en la forma siguiente:  

if condicionsentenciasend 

Existe también la bifurcación múltiple, en la que pueden concatenarse tantas condiciones como sedesee, y que tiene la forma:

if condicion1bloque1

elseif condicion2 

bloque2elseif condicion3 

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

bloque4 end

donde la opción por defecto else puede ser omitida. Si no está presente no se hace nada en caso deque no se cumpla ninguna de las condiciones que se han chequeado.

Una observación muy importante: la condición del if puede ser una condición matricial, del tipoA==B, donde A y B son matrices del mismo tamaño. Para que se considere que la condición secumple, es necesario que sean iguales dos a dos todos los elementos de las matrices A y B (a ij=bij,

1im, 1 jn). Basta que haya dos elementos aij y bij diferentes para que las matrices ya no sean iguales, y por tanto las sentencias del if no se ejecuten. Análogamente, una condición en la formaA=B exige que todos los elementos sean diferentes dos a dos (aij≠bij, 1im, 1 jn). Bastaría quehubiera dos elementos aij y bij iguales para que la condición no se cumpliese. En resumen:

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

A.2 Sentencia Switch 

Realiza una función análoga a un conjunto de if...elseif concatenados. Su forma general es lasiguiente:

switch switch_expresion case case_expr1, bloque1case {case_expr2, case_expr3, case_expr4,...} 

bloque2 end...

otherwise, % opción por defectoBloque3

end

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 15/30

 

13

Al principio se evalúa la switch_expresion, cuyo resultado debe ser un número escalar o unacadena de caracteres. Este resultado se compara con las case_expr, y se ejecuta el bloque desentencias que corresponda con ese resultado. Si ninguno es igual a switch_expresion se ejecutanlas sentencias correspondientes a otherwise. Según puede verse en el ejemplo anterior, es posibleagrupar 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 cellarray para que se ejecute ese bloque de sentencias. La “igualdad” debe entenderse en el sentidodel operador de igualdad (==) para escalares y la función strcmp() para cadenas de caracteres).

A.3 Sentencia  For 

La sentencia for repite un conjunto de sentencias un número predeterminado de veces.. Lasiguiente construcción ejecuta sentencias con valores de i de 1 a n, variando de uno en uno.

for i=1:nsentenciasend 

o bien,for i=vectorValoressentenciasend 

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

En el siguiente ejemplo se presenta el caso más general para la variable del bucle (valor_inicial:incremento: valor_final); el bucle se ejecuta por primera vez con i=n, y luego i se va reduciendo de0.2 en 0.2 hasta que llega a ser menor que 1, en cuyo caso el bucle se termina:

for i=n:-0.2:1sentencias 

end

En el siguiente ejemplo se presenta una estructura correspondiente a dos bucles anidados. Lavariable j es la que varía más rápidamente (por cada valor de i, j toma todos sus posibles valores):

for i=1:mfor j=1:nsentencias

end 

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

for i=Asentencias 

end 

en la que la variable i es un vector que va tomando en cada iteración el valor de una de las columnasde A. Cuando se introducen interactivamente en la línea de comandos, los bucles for se ejecutan sólodespués de introducir la sentencia end que los completa.

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 16/30

 

14

A.4 Sentencia While 

La estructura del bucle while es la siguiente:

while condicionsentenciasend 

donde condicion puede ser una expresión vectorial o matricial. Las sentencias se siguen ejecutandomientras haya elementos distintos de cero en condicion, es decir, mientras haya algún o algunoselementos 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 ejecución del bucle for y/o while más interno de los quecomprenden a dicha sentencia.

A.6 Sentencia Continue 

La sentencia continue hace que se pase inmediatamente a la siguiente iteración del bucle for owhile, saltando todas las sentencias que hay entre el continue y el fin del bucle en la iteración actual.

A.7 Sentencias Try...Catch... End  

La construcción try...catch...end permite gestionar los errores que se pueden producir entiempo de ejecución. Su forma es la siguiente:

try sentencias1

catch sentencias2 

end

En el caso de que durante la ejecución del bloque sentencias1 se produzca un error, el controlde la ejecución se transfiere al bloque sentencias2. Si la ejecución transcurriera normalmente,sentencias2 no se ejecutaría nunca. MATLAB dispone de una función lasterr que devuelve unacadena de caracteres con el mensaje correspondiente al último error que se ha producido. En laforma lasterr('') pone a cero este contador de errores, y hace que la función lasterr devuelva lamatriz vacía [ ] hasta que se produzca un nuevo error.

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 17/30

 

15

B. Lectura y escritura interactiva de variables

B.1 Función  Input 

Permite imprimir un mensaje en la línea de comandos de MATLAB y recuperar como

valor de retorno un valor numérico o el resultado de una expresión tecleada por el usuario.Después de imprimir el mensaje, el programa espera que el usuario teclee el valornumérico o la expresión. Cualquier expresión válida de MATLAB es aceptada por estecomando. El usuario puede teclear simplemente un vector o una matriz. En cualquier caso, laexpresión introducida es evaluada con los valores actuales de las variables de MATLAB y elresultado se devuelve como valor de retorno. Véase un ejemplo de uso de esta función:

>> n = input('Teclee el número de ecuaciones') 

Otra posible forma de esta función es la siguiente (obsérvese el parámetro 's'):>> nombre = input('¿Cómo te llamas?','s') 

En este caso el texto tecleado como respuesta se lee y se devuelve sin evaluar, con loque se almacena en la cadena nombre. Así pues, en este caso, si se teclea una fórmula, sealmacena como texto sin evaluarse.

B.2 Función  Disp 

Permite imprimir en pantalla un mensaje de texto o el valor de una matriz, pero sinimprimir su nombre. En realidad, disp siempre imprime vectores y/o matrices: las cadenas decaracteres son un caso particular de vectores. Considérense los siguientes ejemplos de cómo seutiliza:

>> 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 laprogramación en MATLAB. Ya se han utilizado en varias ocasiones. Estos ficheros se creany modifican con un editor de textos cualquiera. En el caso de MATLAB ejecutado en un PCbajo Windows, lo mejor es utilizar su propio editor de textos, que es también Debugger.

Existen dos tipos de ficheros *.m, los ficheros de comandos (llamados scripts en inglés)y las funciones. Los primeros contienen simplemente un conjunto de comandos que seejecutan sucesiva- mente cuando se teclea el nombre del fichero en la línea de comandos de

MATLAB o se incluye dicho nombre en otro fichero *.m. Un fichero de comandos puedellamar a otros ficheros de co- mandos. Si un fichero de comandos se llama desde de la líneade comandos de MATLAB, las variables que crea pertenecen al espacio de trabajo base deMATLAB y permanecen en él cuando se termina la ejecución de dicho fichero.

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 18/30

 

16

B.4 Ficheros De Comandos (S cripts)

Dichos comandos se ejecutan sucesivamente cuando se teclea el nombre del ficheroque los contiene (sin la extensión). Cuando se ejecuta desde la línea de comandos, lasvariables creadas por el fichero pertenecen al espacio de trabajo base de MATLAB. Por elcontrario, si se ejecuta desde una función, las variables que crea pertenecen al espacio detrabajo de la función.

En los ficheros de comandos conviene poner los puntos y coma (;) al final de cadasentencia, para evitar una salida de resultados demasiado cuantiosa. Un fichero *.m puedellamar a otros ficheros*.m, e incluso se puede llamar a sí mismo de modo recursivo. Sinembargo, no se puede hacer profile de un fichero de comandos: sólo se puede hacer de lasfunciones.

Las variables definidas por los ficheros de comandos son variables del espacio detrabajo desde el que se ejecuta el fichero, esto es variables con el mismo carácter que lasque se crean interactivamente en MATLAB si el fichero se ha ejecutado desde la línea decomandos. Al terminar la ejecución del script, dichas variables permanecen en memoria.

C. Definición de Funciones 

La primera línea de un fichero llamado name.m que define una función tiene la forma:

function [lista de valores de retorno] = name(lista de argumentos)

donde name es el nombre de la función. Entre corchetes y separados por comas van losvalores de retorno (siempre que haya más de uno), y entre paréntesis también separados porcomas los argumentos. Puede haber funciones sin valor de retorno y también sin argumentos.Si no hay valores de retorno se omiten los corchetes y el signo igual (=); si sólo hay un valor

de retorno no hace falta poner corchetes. Tampoco hace falta poner paréntesis si no hayargumentos.

Las variables definidas dentro de una función son variables locales, en el sentido deque son inaccesibles desde otras partes del programa y en el de que no interfieren con variablesdel mismo nombre definidas en otras funciones o partes del programa. Se puede decir quepertenecen al propio espacio de trabajo de la función y no son vistas desde otros espacios detrabajo. Para que la función tenga acceso a variables que no han sido pasadas comoargumentos es necesario declarar dichas variables como variables globales, tanto en elprograma principal como en las distintas funciones que deben acceder a su valor. Esfrecuenteutilizar usar nombres largos (más de 5 letras) y con mayúsculas para las variables

globales.Las variables persistentes son variables locales de las funciones (pertenecen al espacio

de trabajo de la función y sólo son visibles en dicho espacio de trabajo), que conservan su valorentre distintas llamadas a la función. Por defecto, las variables locales de una función secrean y destruyen cada vez que se ejecuta la función. Las variables persistentes se puedendefinir en funciones, pero no en ficheros de comandos. Es habitual utilizar para ellas letrasmayúsculas. Las variables se declaran como persistentes utilizando la palabra  persistent

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 19/30

 

17

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

>> persistent VELOCIDAD TIEMPO

Las variables persistent se inicializan a la matriz vacía [] y permanecen en memoriahasta que se hace clear de la función o cuando se modifica el fichero-M. Para evitar que unfichero-M se modifique se puede utilizar el comando mlock file.m, que impide lamodificación del fichero. El comando munlock desbloquea el fichero mientras que la función

mislocked permite saber si está bloqueado o no.

Las variables globales son visibles en todas las funciones (y en el espacio de trabajobase o general) que las declaran como tales. Dichas variables de declaran precedidas por lapalabra global y separadas por blancos, en la forma:

global VARIABLE1 VARIABLE2

Como ya se ha apuntado, estas variables sólo son visibles en los espacios de trabajo delas funciones que las declaran como tales (y en el propio espacio de trabajo base, si tambiénahí han sido declaradas como globales). Ya se ha dicho también que se suele recurrir alcriterio de utilizar nombres largos y con mayúsculas, para distinguirlas fácilmente de lasdemás variables.

C.1 Funciones  Fscanf , Sscanf , Fprintf  y Sprintf  

Estas funciones permiten leer y escribir en ficheros ASCII, es decir, en ficherosformateados. La forma general de la función fscanf es la siguiente:

[var1,var2,...] = fscanf(fi,'cadena de control',size)

donde fi es el identificador del fichero (devuelto por la función fopen), y size es unargumento op- cional que puede indicar el tamaño del vector o matriz a leer. Obsérvese otra

diferencia con C: las variables leídas se devuelven como valor de retorno y no comoargumentos pasados por referencia (precedidos por el carácter &). La cadena de control vaencerrada entre apóstrofos simples, y contiene los especificadores de formato para lasvariables:

%s para cadenas de caracteres%d para variables enteras%f para variables de punto flotante%lf para variables de doble precisión

La función sscanf es similar a fscanf pero la entrada de caracteres no proviene de unfichero sino de una cadena de caracteres.

Finalmente, la función fprintf dirige su salida formateada hacia el fichero indicado porel identificador. Su forma general es:

fprintf(fi,'cadena de control',var1,var2,...)

Ésta es la función más parecida a su homóloga de C. La cadena de control contiene losformatos de escritura, que son similares a los de C, como muestran los ejemplos siguientes:

fprintf(fi,'El número de ecuaciones es: %d\n',n)fprintf(fi,'El determinante es: %lf10.4\n',n)

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 20/30

 

18

De forma análoga, la función sprintf convierte su resultado en una cadena de caracteresque devuelve como valor de retorno, en vez de enviarlo a un fichero. Véase un ejemplo:

resultado = sprintf('El cuadrado de %f es %12.4f\n',n,n*n)

donde resultado es una cadena de caracteres. Esta función constituye el método más general

de convertir números en cadenas de caracteres, por ejemplo para ponerlos como títulos defiguras.

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 –  aMATLAB. Se pueden enumerar las siguientes:

  Se puede utilizar el icono Copy y Paste para copiar datos de la aplicación original y

depositarlos entre los corchetes de una matriz o vector, en una línea de comandos deMATLAB. 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 existenproblemas de edición.

  Es posible leer un flat file escrito con caracteres ASCII. Un flat file es un ficherocon filas de longitud constante separadas con Intro, y varios datos por filaseparados por blancos. Estos ficheros pueden ser leídos desde MATLAB con elcomando 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 líneas:

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 queestén con- venientemente separados.

  Se pueden leer datos de un fichero con las funciones fopen y fread.  Existen también otros métodos posibles: escribir funciones en C para traducir a

formato *.mat (y cargar después con load), crear un fichero ejecutable *.mex que lealos datos, entre otros.

D.2 Exportar datos a otras aplicaciones 

De forma análoga, también los resultados de MATLAB se pueden exportar a otrasaplicaciones como Word o Excel.

  Utilizar el comando diary para datos de pequeño tamaño.  Utilizar el comando save con la opción -ascii.  Utilizar las funciones de bajo nivel fopen, fwrite y otras.  Otros métodos que no se verán aquí: escribir subrutinas en C para traducir de formato

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 21/30

 

19

*.mat (guardando previamente con save), crear un fichero ejecutable *.mex queescriba los datos, etc.

Hay que señalar que los ficheros binarios *.mat son trasportables entre versiones deMATLAB en distintos tipos de computadores, porque contienen información sobre el tipo demáquina en el header del fichero, y el programa realiza la transformación de modoautomático. Los ficheros *.m sonde tipo ASCII, y por tanto pueden ser leídos por distintos

computadores sin problemas de ningún tipo.

E. EJEMPLOS PRÁCTICOS DE PROGRAMACIÓN EN MATLABE.1 Suma de dos númerosE.1.1 Desarrolle un programa en el software Matlab que realice la suma de dos números,ingresando los números por pantalla.

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 22/30

 

20

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 opción FUNCTION

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 23/30

 

21

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.

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 24/30

 

22

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)

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 25/30

 

23

E.2. Lanzamiento de Proyectiles (Ejercicio tomado con fines didácticos del libro Matlabpara ingenieros, Autor: Holly Moore y adaptado por quien elaboró la guía) El Rango de un objeto que se lanza en un angulo ɵ con respecto al eje x y una velocidad inicial v 0 está dado por:

Demueste que el rango máximo se btiene a , graficando en las condiciones especificadascon 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];

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 26/30

 

24

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

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 27/30

 

25

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 desalida del fluido que se inyecta por el tubo. Si se conoce que la temperatura optima de salida delfluido es 45 ºC. Desarrolle un programa donde los valores de temperatura de salida del fluido seingresen en un vector por teclado, la temperatura óptima del fluido y la cantidad de datos detemperatura se ingresen por teclado y a su vez, calcule:  La temperatura máxima 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 omenores que la temperatura optima y a su vez, calcular los promedios correspondientes.

Solución:

%Temperatura de un intercambiador de calor% 

a=input('Ingrese los valores del vector: '); m=input('Ingrese el número 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 %Obtención de la temperatura máxima del sistema% 

tmax=a(i); else end 

end Table=[tmax;c1;c2]; disp('Los valores de la temperatura máxima, cantidad de temperaturas mayores ymenores a la optima son:'); disp('tmax c1 c2'); 

fprintf('%0.0f %5.0f %5.0f\n', Table) 

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 28/30

 

26

%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 también se pueden simplificar las sentencias utilizadas.

E.4 Representaciones gráficas en MATLAB

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

Solución:

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

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 29/30

 

27

E.4.2 Grafique la función z=exp (-x2-y2) sobre el rectángulo [-2,2]x[-2,2]

Solución:

%Este conjunto de instrucciones genera la gráfica de la función z sobre el

rectángulo [-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 seconoce que la ecuación vectorial de la recta es: (x,y,z)=(1,0,3)+t(-1,1,2)

Solución:%gráfica 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 opción linewidth permite aumentar el grosor dela linea recta% grid on 

8/2/2019 Guia Basica de Matlab. 2011-I

http://slidepdf.com/reader/full/guia-basica-de-matlab-2011-i 30/30

 

E.4.4 Grafique las siguientes rectas, utilizando el software Matlab:  y1=2*x  y2=-3*x+4

Solución:

%graficación de varias funciones% x=[0 3]; y1= 2*x; plot(x,y1,'g', 'linewidth',3) %'g' especifica que el color de la recta esverde% 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 explicación inicial del software Matlab. Se invita a todos loslectores de esta guía, a practicar e indagar sobre las ventajas que tiene la utilización de estesoftware.

“DÍGAME Y OLVIDO, MUÉSTREME Y RECUERDO. INVOLÚCREME Y COMPRENDO”.

Proverbio Chino.

REFERENCIAS BIBLIOGRÁFICAS

1.  BAEZ, D (2006). “MATLAB con aplicaciones a la ingeniería, física y finanzas”. Editorial

alfaomega grupo editor. México.2.  Moore, H (2007). “MATLAB en Ingeniería”. Editorial Pearson Educación. México.3.   NAKAMURA, S (1997). “Análisis Numéricos y visualización gráfica con MATLAB”. Editorial

Pearson Educación. México