Manual 2

63
 Manual de Introducci´on a F unciones B´ asi cas con MATLAB M.C. Daniel S. Mar t ´ ı ne z Ram´ ı re z Agosto de 2004

Transcript of Manual 2

Page 1: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 1/63

Manual de Introduccion a Funciones Basicas con

MATLAB

M.C. Daniel S. Martınez Ramırez

Agosto de 2004

Page 2: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 2/63

2

Page 3: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 3/63

Capıtulo 1

Introduccion

1.1. Acerca de MATLAB

El nombre de MATLAB proviene de la contracci on de MATrix LABoratory. MATLAB es considerado

como un lenguaje de alto nivel que maneja datos de tipo matricial. Por lo tanto, las matrices y arreglosconstituyen la espina dorsal de MATLAB.

Cabe mencionar, que MATLAB al ser considerado un lenguaje de alto nivel puede pensarse que puedehacer obsoletos a ciertos lenguajes de programacion ampliamente utilizados en la actualidad. Esta aseveraciones err´ onea debido a que esos lenguajes siguen siendo importantes para la computacion de alto rendimientoque requiere abundante memoria o un tiempo de computo largo. En cambio, la velocidad de computo deMATLAB paga un elevado precio debido a sus caracterısticas particulares.

1.2. Caracterısticas importantes de MATLAB

La razon por la cual MATLAB puede considerarse como un lenguaje es debido a que ofrece caracterısticasde programacion similares a otros lenguajes de programacion como FORTRAN o C. A continuacion algunas

de sus caracterısticas mas notables son mencionadas:

La programacion es mucho mas sencilla.

Manipulacion de conjunto de datos en una amplia variedad mas rapidamente.

Biblioteca matematica amplia.

Proporciona herramientas de interfaz grafica de usuario (GUI) que permite a MATLAB ser utilizadocomo una herramienta de desarrollo de aplicacion.

Abundantes herramientas graficas.

Capacidad de vincularse con otros lenguajes de programacion.

Transportabilidad.

La combinacion de estructuras de datos de arreglos, caracterısticas de programacion y herramientasGUI permiten que MATLAB sea una poderosa herramienta para resolver problemas en muchos campos.

3

Page 4: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 4/63

4

Page 5: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 5/63

Capıtulo 2

Caracterısticas basicas

2.1. Operaciones Aritmeticas Basicas

Las operaciones aritmeticas basicas pueden ser llevadas a cabo con MATLAB de manera analoga a las

calculadoras. Estas operaciones aritmeticas basicas son las siguientes:

Operacion Sımbolo Ejemplo

adicion, a + b + 5 + 45

substraccion, a - b - 100 - 55

multiplicacion, a b * 3.14 * 0.90

division, a ÷ b /o\ 3/4 = 4 \ 3

exponenciacion, ab ˆ 216

La evaluacion de estos operadores son llevadas a cabo por las reglas usuales de precedencia de operadores,resumidas aquı.

Las expresiones son evaluadas de izquierda a derecha con la operacion deexponenciacion teniendo la mayor precedencia, seguida por la multiplicaciony division teniendo la misma procedencia, seguida por la suma y substraccionteniendo la misma precedencia.

2.2. Espacio de Trabajo

El entorno de trabajo en donde el usuario trabaja es llamado espacio de trabajo. El espacio de trabajopuede grabar los comandos ingresados por el usuario ası como los valores de cualquier vaiable creada por elmismo. Por esa razon, estos comandos y variables residen en el espacio de trabajo de MATLAB o espacio de

trabajo b´ asico y pueden ser rellamados cada vez que se desee.

Ejemplo:

)) record=3.5878789

record =

3.5879

)) record

record =

5

Page 6: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 6/63

3.5879

))

Para conocer el nombre de una variable en el espacio de trabajo de MATLAB se utiliza el comando who.

Ejemplo:

)) a=445.126+129.75

a =

574.8760

)) b=a-100.25

b =

474.6260

)) c=a*b

c =

2.7285e+005

)) d=c/37.5

d =

7.2760e+003

)) e=37.5\c

e =

7.2760e+003

)) e=c\37.5

e =

1.3744e-004

)) f1=2^5

f1 =

32

)) who

6

Page 7: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 7/63

Your variables are:

a c e

b d f1

))

Para obtener una informacion mas detallada de esa variable utilizamos el comando whos.

Ejemplo:

)) whos

Name Size Bytes Class

a 1x1 8 double array

b 1x1 8 double array

c 1x1 8 double array

d 1x1 8 double array

e 1x1 8 double array

f1 1x1 8 double array

Grand total is 6 elements using 48 bytes

))

En cambio, para borrar variables utilizamos el comando clear .

Ejemplo:

)) clear a b

)) who

Your variables are:

c e

d f1

En este ejemplo borramos las variables a y b. A continuacion, mostramos las opciones del comando clear

a traves del comando help.

)) help clear

CLEAR Clear variables and functions from memory.

CLEAR removes all variables from the workspace.

CLEAR VARIABLES does the same thing.

CLEAR GLOBAL removes all global variables.

CLEAR FUNCTIONS removes all compiled M-functions.

CLEAR MEX removes all links to MEX-files and all M-functions.

CLEAR ALL removes all variables, globals, functions and MEX links.

7

Page 8: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 8/63

CLEAR CLASSES is the same as CLEAR ALL except that class definitions

are also cleared. If any objects exist outside the workspace (say in

userdata or persistent in a locked m-file) a warning will be issued

and the class definition will not be cleared. CLEAR CLASSES must be

used if the number or names of fields in a class are changed.

CLEAR VAR1 VAR2 ... clears the variables specified. The wildcard

character ’*’ can be used to clear variables that match a pattern.

For instance, CLEAR X* clears all the variables in the current

workspace that start with X.

If X is global, CLEAR X removes X from the current workspace,

but leaves it accessible to any functions declaring it global.

CLEAR GLOBAL X completely removes the global variable X.

CLEAR FUN clears the function specified. If FUN has been locked

by MLOCK it will remain in memory. Use a partial path (see

PARTIALPATH) to distiguish between different overloaded versions ofFUN. For instance, ’clear inline/display’ clears only the INLINE

method for DISPLAY, leaving any other implementations in memory.

CLEAR ALL, CLEAR FUN, or CLEAR MEX also has the side effects of

removing debugging breakpoints and reinitializing persistent variables

since the breakpoints for a function and persistent variables are

cleared whenever the m-file changes or is cleared.

Use the functional form of CLEAR, such as CLEAR(’name’),

when the variable name or function name is stored in a string.

See also WHO, WHOS, MLOCK, MUNLOCK, PERSISTENT.

8

Page 9: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 9/63

2.3. Formato de display numerico

Cuando MATLAB despliega los resultados numericos, esto sigue algunas reglas. Por default, si un resul-tado es un entero, MATLAB lo despliega como tal. Por otro lado, si el n umero es real, MATLAB lo despliegacon cuatro dıgitos a la derecha del punto decimal. Si los dıgitos significativos en el resultado estan fuera deese rango, MATLAB despliega el resultado en notacion cientıfica. A continuacion, los comandos de MATLAB

para formato numerico son mostrados.

Comando de MATLAB pi Comentario

format short 3.1416 5 dıgitos

format long 3.14159265358979 16 dıgitos

format short e 3.1416e+000 5 dıgitos mas exponente

format long e 3.141592653589793e+000 16 dıgitos mas exponente

format short g 3.1416 mejora de format short o format short e

format long g 3.14159265358979 mejora de format long o format long e

format hex 400921fb54442d18 punto flotante hexadecimal

format bank 3.14 dıgitos de 2 decimas

format + + positivo, negativo o cero

format rat 355/113 aproximacion racional

2.4. Control de ventanas de control

MATLAB proporciona algunos comandos para administrar la ventana de comando. Estos comandos sonlos siguientes.

Comandos Descripcion

clc Limpia la ventana de comandos moviendo el cursor a la esquina superior izquierda.

home Mueve el cursor a la esquina superior izquierda.

more Paginacion de la ventana de comandos.

2.5. Informacion del sistemaDesde la lınea de comandos podemos obtener informacion acerca de la plataforma de la computadora en

la cual MATLAB esta corriendo ası como informacion de las aplicaciones de MATLAB.El comando computer regresa un caracter describiendo la computadora en la cual MATLAB esta corrien-

do.

)) computer

ans =

PCWIN

En este caso, MATLAB esta corriendo en una computadora bajo Windows. Utilizan el comando help

vemos los diferentes tipos de sistemas que MATLAB puede correr.

)) help computer

COMPUTER Computer type.

COMPUTER returns a string containing the name of the computer

on which MATLAB is executing. Possibilities are:

9

Page 10: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 10/63

PCWIN - MS-Windows

MAC2 - Macintosh

SUN4 - Sun SPARC

SOL2 - Solaris 2

HP700 - HP 9000/700

SGI - Silicon Graphics

SGI64 - Silicon Graphics R8000IBM_RS - IBM RS6000

ALPHA - Dec Alpha

AXP_VMSG - Alpha VMS G_float

AXP_VMSIEEE - Alpha VMS IEEE

LNX86 - Linux Intel

VAX_VMSG - VAX/VMS G_float

VAX_VMSD - VAX/VMS D_float

[C,MAXSIZE] = COMPUTER returns also integer MAXSIZE which

contains the maximum number of elements allowed in a matrix

on this version of MATLAB.

See also ISIEEE, ISPPC, ISUNIX, ISVMS.

El comando isieee retorna 1 si el sistema utiliza aritmetica de la IEEE, 0 en caso contrario.

)) isieee

ans =

1

De acuerdo a este comando, la computadora maneja aritmetica de la IEEE.Para saber la version de MATLAB que actualmente maneja el sistema, empleamos el comando version .

)) version

ans =

5.3.0.10183 (R11)

Para una informacion mas detallada de nuestra version de MATLAB usamos el comando ver :

10

Page 11: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 11/63

)) ver

--------------------------------------------------

MATLAB Version 5.3.0.10183 (R11) on PCWIN

MATLAB License Number: 76297

--------------------------------------------------

MATLAB Toolbox Version 5.3 (R11) 15-Jan-1999MATLAB Runtime Server Development Kit Version 5.3 (R11) 05-Oct-1998

Real Time Windows Target Version 1.0 (R11) 10-Jul-1998

Data Acquisition Toolbox Version 1.0 (R11) Beta 2.0 07-Jan-1999

Dials & Gauges Blockset Version 1.0 (R11) Beta 3 09-Jan-1999

Simulink Report Generator Version 1.0 (R11) 05-Dec-1998

MATLAB Report Generator Version 1.0 (R11) 05-Dec-1998

Database Toolbox Version 1.0 (R11) 01-Aug-1998

Power System Blockset Version 1.1 (R11) 10-Aug-1998

MATLAB Compiler (and Compiler 1.2.1) Version 2.0 (R11) 08-Dec-1998

Communications Toolbox Version 1.4 (R11) 10-Jul-1998

Symbolic Math Toolbox Version 2.1 (R11) 11-Sep-1998

NAG Foundation Toolbox - Numerical ... Version 1.0.3 (R11) 06-Jun-1998Mapping Toolbox Version 1.1 (R11) 04-Sep-1998

Wavelet Toolbox Version 1.2 (R11) 10-Jul-1998

Partial Differential Equation Toolbox Version 1.0.3 (R11) 21-Nov-1997

Financial Toolbox Version 2.0.1 (R11) 14-Aug-1998

LMI Control Toolbox Version 1.0.5 (R11) 09-Sep-1998

QFT Control Design Toolbox Version 1.0.3 (R11) 21-Nov-1997

Fixed-Point Blockset Version 2.0 (R11) 10-Jul-1998

DSP Blockset Version 3.0 (R11) 10-Jul-1998

Fuzzy Logic Toolbox Version 2.0.1 (R11) 16-Sep-1998

Model Predictive Control Toolbox Version 1.0.4 (R11) 03-Sep-1998

Frequency Domain Identification Too... Version 2.0.3 (R11) 29-Sep-1998

Higher-Order Spectral Analysis Toolbox Version 2.0.3 (R11) 10-Jul-1998

Statistics Toolbox Version 2.2 (R11) 24-Jul-1998

Nonlinear Control Design Blockset Version 1.1.3 (R11) 10-Aug-1998

Image Processing Toolbox Version 2.2 (R11) 05-Aug-1998

Neural Network Toolbox Version 3.0.1 (R11) 01-Jul-1998

Mu-Analysis and Synthesis Toolbox Version 3.0.4 (R11) 10-Apr-1998

Signal Processing Toolbox Version 4.2 (R11) 10-Jul-1998

Spline Toolbox Version 2.0.1 (R11) 14-Aug-1998

Optimization Toolbox Version 2.0 (R11) 09-Oct-1998

Robust Control Toolbox Version 2.0.6 (R11) 10-Apr-1998

System Identification Toolbox Version 4.0.5 (R11) 10-Apr-1998

Control System Toolbox Version 4.2 (R11) 15-Jul-1998

Real-Time Workshop Version 3.0.0 (R11) 13-Oct-1998

SystemBuild to Simulink Translator Version 2.0 (R11) 10-Aug-1998Stateflow Version 2.0 (R11) 16-Jan-1999

Simulink Version 3.0 (R11) 01-Sep-1998

11

Page 12: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 12/63

2.6. Variables

Como en cualquier lenguaje de programacion, MATLAB tiene reglas para los nombres de variables, acontinuacion dichas reglas son mencionadas.

Reglas de asignacion de nombres Comentarios/Ejemplos

Los nombres de variables son sensibles. Suma, suma, SUMA son variables distintasLos nombres de variables pueden contener hasta 31 caracteres. howaboutthisvariablename123

Los nombres de variables comienzan con letra a1, position1, x1, x2

Los caracteres de puntuacion no son permitidos com.1, position.2, x.2

Los nombres pueden llevar gui´ on bajo com 1, position 2, x 2

Aparte de estas reglas para nombres. MATLAB tiene algunas variables especiales. Y son las siguientes:

Variables Especiales Descripcion

ans Utilizada para resultados.

pi π

eps Epsilon de la maquina

flops Conteo de operaciones de punto flotanteinf ∞NaN (o) nan No numero

i (y) j i = j =√−1

nargin Numero de argumentos de entrada de una funcion

nargout Numero de argumentos de salida de una funcion

realmin Numero entero real mas pequeno utilizable

realmax Numero entero real mas grande utilizable

2.7. Comentarios, puntuacion e interrupcion de ejecucion

En la lınea de comandos podemos escribir al final un punto y coma (;) para no imprimir los resultadoscalculados.

Ejemplo:

)) erasers=6;

)) pads=5;

)) tape=4;

)) items=erasers+pads+tape;

)) cost=erasers*25+pads*52+tape*99;)) average_cost=cost/items

average_cost =

53.7333

De acuerdo a este ejemplo, los resultados intermedios no fueron desplegados debido a que se utilizo elpunto y coma al final de los comandos que fueron definidos.

Aparte del punto y coma, podemos usar otros caracteres de puntuacion tambien. Todo texto que precededel signo % es tomado como un comentario.

Ejemplo:

12

Page 13: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 13/63

)) items=200 % Numero total de objetos (items)

items =

200

En este caso, a la variable items se le asigna el valor de 200 pero MATLAB simplemente ignora el signo %y todo el texto que va despues del mismo.

Tambien, multiples comandos pueden estar en una sola lınea si estan separados por comas (,) o puntosy coma.

Ejemplo:

)) erasers=6, pads=6; tape=2

erasers =

6

tape =

2

Nota! El procesamiento en MATLAB puede ser interrumpido en cualquier momento presionando Ctrl-C.

2.8. Numeros ComplejosUna de las caracterısticas mas poderosas de MATLAB es que no requiere de manipulaciones especiales

para numeros complejos. Los numeros complejos en MATLAB son formados de varias maneras.

Ejemplo:

)) c1=1-2i % 2i significa la parte imaginaria

c1 =

1.0000 - 2.0000i

)) c1=1-2j % 2j significa la parte imaginaria

c1 =

1.0000 - 2.0000i

)) c2=3*(2-sqrt(-1)*3)

c2 =

13

Page 14: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 14/63

6.0000 - 9.0000i

)) c3=sqrt(-2)

c3 =

0 + 1.4142i

)) c4=6+sin(.5)*i

c4 =

6.0000 + 0.4794i

)) c5=6+sin(.5)*j

c5 =

6.0000 + 0.4794i

Cabe mencionar, que las operaciones matematicas con numeros complejos pueden ser escritas de la mismaforma para los numeros reales.

Ejemplo:

)) c6=(c1+c2)/c3

c6 =

-7.7782 - 4.9497i

)) c6r=real(c6)

c6r =

-7.7782

)) c6r=imag(c6)

c6r =

-4.9497

)) check_it_out=i^2 % sqrt(-1) elevado al cuadrado debe ser -1.

check_it_out =

-1

En MATLAB, la conversion entre formas polar y rectangular se lleva a cabo con las funciones real, imag,abs, y angle:

14

Page 15: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 15/63

)) c1

c1 =

1.0000 - 2.0000i

)) mag_c1=abs(c1) %magnitud

mag_c1 =

2.2361

)) angle_c1=angle(c1) %angulo en radianes

angle_c1 =

-1.1071

)) deg_c1=angle_c1*180/pi % angulo en grados

deg_c1 =

-63.4349

)) real_c1=real(c1) %parte real

real_c1 =

1

)) imag_c1=imag(c1) %parte imaginaria

imag_c1 =

-2

15

Page 16: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 16/63

2.9. Funciones matematicas

Las listas de las funciones que MATLAB soporta son mostradas en las siguientes tablas. Muchas de estasfunciones son utilizadas en la misma forma que serıan escritas matematicamente.

Funciones trigonometricas Descripcionacos Coseno inverso.

acosh Coseno hiperbolico inverso.

acot Cotangente inversa.

acoth Cotangente hiperbolico inverso.

acsc Cosecante inversa.

acsch Cosecante hiperbolica inversa.

asec Secante inversa.

asech Secante hiperbolica inversa.

asin Seno inverso.

asinh Seno inverso hiperbolico.

atan Tangente inversa.

atan2 Tangente inversa de cuarto cuadrante.atanh Tangente inversa hiperbolica.

cos Coseno.

cosh Coseno hiperbolico.

cot Cotangente.

coth Cotangente hiperbolica.

csc Cosecante.

csch Cosecante hiperbolica.

sec Secante.

sech Secante hiperbolica.

sin Seno.

sinh Seno hiperbolico.

tan Tagente.tanh Tagente hiperbolica.

Funciones exponenciales Descripcion

exp Exponencial.

log Logaritmo natural.

log10 Logaritmo base 10.

log2 Logaritmo base 2 y diseccion en punto flotante.

pow2 Potencia base 2 y escalamiento en punto flotante.

sqrt Raız cuadrada.

nextpow2 Potencia de 2 superior inmediata.

Funciones complejas Descripcion

abs Valor absoluto o magnitud.

angle Angulo de fase en radianes.

conj Conjugado complejo.

imag Parte imaginaria compleja.

real Parte real compleja.

unwrap Angulo de fase.

isreal Verdaddero para arreglos reales.

cplxpair Vector de ordenacion en pares conjugados complejos.

16

Page 17: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 17/63

Funciones de redondeo y residuo Descripcion

fix Redondeo hacia cero.

floor Redondeo hacia el entero inferior.

ceil Redondeo hacia el entero superior.

round Redondeo hacia el entero mas proximo.

mod Residuo con signo.

rem Residuo despues de la division.

sign Funcion signo.

Transformacion de coordenadas Descripcion

cart2sph Cartesianas a esfericas.

cart2pol Cartesianas a polares o cilındricas.

pol2cart Polar a cartesianas.sph2cart Esfericas a cartesianas.

Teorıa de numeros Descripcion

factor Factores primos.

isprime Determina si un numero es primo.

primes Genera lista de numeros primos.

gcd Maximo comun divisor.lcm Mınimo comun divisor.

rat Aproximacion racional.

rats Salida racional.

perms Todas las posibles combinaciones.

nchoosek Todas las combinaciones de N elementos tomados K a la vez.

Funciones matematicas especializadas Descripcionairy Funciones de Airy.

besselj Funcion de Bessel del primer tipo.

bessely Funcion de Bessel del segundo tipo.

besselh Funcion de Bessel del tercer tipo.

besseli Funcion de Bessel modificada del primer tipo.

besselk Funcion de Bessel modificada del segundo tipo.

beta Funcion Beta.

betainc Funcion Beta incompleta.

betaln Lograitmo de funcion Beta.

17

Page 18: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 18/63

Funciones matematicas especializadas Descripcion

airy Funciones de Airy.

besselj Funcion de Bessel del primer tipo.

bessely Funcion de Bessel del segundo tipo.

besselh Funcion de Bessel del tercer tipo.

besseli Funcion de Bessel modificada del primer tipo.

besselk Funcion de Bessel modificada del segundo tipo.

beta Funcion Beta.

betainc Funcion Beta incompleta.

betaln Logaritmo de funcion Beta.

ellipj Funciones elıpticas de Jacobi.

ellipke Integral elıptica completa.

erf Funcion de error.

erfc Funcion de error complementaria.

erfcx Funcion de error complementaria escalada.

erfinv Funcion de error inversa.

expint Funcion de error exponencial.

gamma Funcion gamma.

gammainc Funcion gamma incompleta.

gammaln Logaritmo de la funcion gamma.

legendre Funcion asociada de Legendre.

cross Producto cruz vectorial.

dot Producto punto.

2.10. Archivos M script

Para problemas sencillos, el ingreso de datos puede ser sencillo y rapido por medio de la lınea de comandos.Sin embargo, conforme aumenta el numero de comandos o cuando se desea cambiar el valor de una o m asvariables y reevaluar un numero de comandos, eso podrıa convertirse en algo tedioso. La solucion a esto esmover los comandos de MATLAB en un archivo de texto simple. Este tipo de archivos son llamados archivos

script o simplemente archivos tipo M.

Ejemplo: Archivo script ejemplo1.m:

% script archivo M ejemplo1.m

erasers=4; % numero de cada item

pads=6;

tape=2;

items=erasers+pads+tape

cost=erasers*25+pads*52+tape*99average_cost=cost/items

Corriendo este archivo en la lınea de comandos produce lo siguiente

)) ejemplo1

items =

12

18

Page 19: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 19/63

cost =

610

average_cost =

50.8333

MATLAB proporciona algunas funciones que son particularmente utiles cuando son utilizadas en archivosM; y son las siguientes:

Funcion Descripcion

disp(variable) Despliega resultados sin identificar los nombres de variable.

echo Controla la venta de comando permitiendo ver los comandos del archivo script.

input Entrada de datos de usuario.

keyboard Proporciona control al teclado temporalmente.pause Pausa hasta que el usuario presiona cualquier tecla.

pause(n ) Pausa por n segundos, entonces continua.

waitforbuttonpress Pausa hasta que el usuario presiona una tecla o un boton de mouse.

A continuacion, se hara una demostracion de cada uno de estos comandos.

Ejemplo: Empleando el comando input .

Archivo script heron.m:

% script archivo-M heron.m

%Este programa determina el area de un triangulo a partir del valor

%de sus lados y su semiperımetro.

a=input(’lado a: ’);

b=input(’lado b: ’);

c=input(’lado c: ’);

%Calculo del semiperımetro

s=(a+b+c)/2

%Calculo del area

A=sqrt(s*(s-a)*(s-b)*(s-c))

Ejecutando este programa, tenemos lo siguiente:

)) heron

lado a: 17

lado b: 35

lado c: 42

19

Page 20: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 20/63

s =

47

A =

290.8608

Ejemplo: Empleando el comando echo.

Archivo script heron.m:

% script archivo-M heron.m

%Este programa determina el area de un triangulo a partir del valor

%de sus lados y su semiperımetro.

echo on

a=input(’lado a: ’);

b=input(’lado b: ’);

c=input(’lado c: ’);

%Calculo del semiperımetro

s=(a+b+c)/2

%Calculo del area

A=sqrt(s*(s-a)*(s-b)*(s-c))

echo off

Ejecutando este programa tenemos lo siguiente:

)) heron

a=input(’lado a: ’);

lado a: 17

b=input(’lado b: ’);

ladob: 35

c=input(’lado c: ’);

lado c: 42

%Calculo del semiperımetro

s=(a+b+c)/2

s =

47

%Calculo del area

A=sqrt(s*(s-a)*(s-b)*(s-c))

20

Page 21: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 21/63

A =

290.8608

echo off

Como se ve en este ejemplo, este comando puede resultar muy tedioso para leer. Una ventaja importantedel comando echo es su utilidad en la depuracion archivos script mas complicados.

2.11. Funciones de usuario

En MATLAB podemos crear funciones que se guardan como archivos M, debemos recordar que equivalena la subrutinas y funciones de otros lenguajes de programacion. La ventaja del manejo de funciones es quepermite una mayor versatilidad en la programacion con solo invocar el nombre de la funcion.

Una funcion basicamente se compone de uno o mas parametros de entrada, y entrega una o mas variablesde salida.

Una funcion en MATLAB basicamente tiene la siguiente sintaxis:

function[var1,var2, . . . , v a rn]=nombre_funcion( par1,par2, . . . , p a rn)

% Comentarios

sentencia1sentencia2...sentencian% Variables de salida

var1var2...var

n

Donde par1,par2, . . . , p a rn son los parametros de entrada de una funcion y var1,var2, . . . , v a rn son lasvariables de salida que la funcion entrega al ser invocada.

Tambien, podemos comentar la funcion con el fin de que proporcione informacion acerca de la misma alescribir el nombre de la funcion precedida del comando help.

Ejemplo: Crear la siguiente funcion.

f (x) =2x3 + 7x2 + 3x − 1

x2 − 3x + 5e−x

Archivo funcionx.m:

function[fx]=funcionx(x)

%Evalua una funcion de la forma

% f(x)=(2*x^3+7*x^2+3*x-1)/(x^2-3*x+5*exp(-x))

fx=(2*x^3+7*x^2+3*x-1)/(x^2-3*x+5*exp(-x));

Podemos por medio del comando help saber acerca de esta funcion ası como su evaluacion.

21

Page 22: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 22/63

)) help funcionx

Evalua una funcion de la forma

f(x)=(2*x^3+7*x^2+3*x-1)/(x^2-3*x+5*exp(-x))

)) y=funcionx(3)

y =

502.1384

De acuerdo a la sintaxis anterior, una funcion puede devolver mas de una variable.

Ejemplo: Crear una funcion que obtenga la media varianza y desviacion estandar de un grupo demuestras de poblacion.

Archivo estadisticos.m:

function[media,varianza,dvstd]=estadisticos(X)%estadisticos entrega la media, varianza y desviacion estandar

%de un vector de muestras X

%Sintaxis:

%estadisticos(X)

%Cuyas variables de salida son almacenadas en las variables:

%media, varianza y dvstd

n=length(X);

media=sum(X)/n;

varianza=sum(X.^2)/n-media.^2;

dvstd=sqrt(varianza);

Evaluando esta funcion, observamos lo siguiente en la ventana de comandos:

)) help estadisticos

estadisticos entrega la media, varianza y desviacion estandar

de un vector de muestras X

Sintaxis:

estadisticos(X)

Cuyas variables de salida son almacenadas en las variables:

media, varianza y dvstd

)) x = [ 1 5 3 4 6 5 8 9 2 4 ] ;

)) [m, v, d]=estadisticos(x)

m =

4.7000

v =

22

Page 23: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 23/63

5.6100

d =

2.3685

Cabe mencionar, que al emplear esta funcion, el miembro de la derecha debe ser un vectoe; en el ladoizquierdo un vector tambien.

Tambien es posible que una funcion utiliza otra funcion, el argumento de una funcion puede ser el nombrede otra funcion.

Ejemplo: Crear una funcion que evalua la media ponderada de una funcion en tres puntos de la forma:

f av =f (a) + 2f (b) + f (c)

4

Evalue con la funcion funcionx.m y con los valores de a = 1, b = 2 y c = 3.

Archivo f_av.m:

function[mp]=f_av(nombre_func, a, b, c)

%Evalua la media ponderada de una funcion f(x)

%dada una funcion y tres puntos

%Sintaxis:

%f_av(nombre_funcion,a , b, c)

mp=(feval(nombre_func,a)+2*feval(nombre_func,b)+feval(nombre_func,c))/4;

Evaluando en la lınea de comandos tenemos lo siguiente.

)) help f_av

Evalua la media ponderada de una funcion f(x)

dada una funcion y tres puntos

Sintaxis:

f_av(nombre_funcion,a , b, c)

)) help funcionx

Evalua una funcion de la forma

f(x)=(2*x^3+7*x^2+3*x-1)/(x^2-3*x+5*exp(-x))

)) f_av(’funcionx’,1,2,3)

ans =

89.8976

De este ejemplo, observamos que nombre_func es el nombre de una funcion f (x). Donde f (x) puede seruna funcion predefinida en MATLAB o creada por el usuario. El comando feval(nombre_func,x) evalua lafuncion llamada nombre_func para el argumento x. Ejemplo, si y=feval(’sin(x)’,x) equivale a y=sin(x).

23

Page 24: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 24/63

24

Page 25: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 25/63

Capıtulo 3

Flujo de Control

MATLAB ofrece cuatro estructuras para control de flujo y toma de decisi on que son: Ciclos For, Ciclos

While, If-Else-End, y Switch-Case. Estas estructuras son descritas y explicadas a continuacion.

3.1. Ciclos FOR

Los ciclos For permiten a un grupo de comandos o sentencias ser repetidos un numero fijo o predetermi-nado de veces. La forma general para los ciclos For es la siguiente.

for variable= expresion

sentencia 1

sentencia 2

...

sentencia nend

Cada sentencia entre los enunciados for y end son ejecutados una vez en cada valor que va tomando laexpresion (iteracion).

Ejemplo: Calculo de interes compuesto.

Una persona invierte $1000,00 en una cuenta de ahorros, que reditua un interes del 5 %. Suponiendo quetodo el interes se queda en deposito dentro de la cuenta, calcular y desplegar la cantidad de dinero en lacuenta, al final de cada ano, durante un periodo de 10 anos. Tip: Utilizar la f´ ormula siguiente:

a = p(1 + r)n

Donde

p es la cantidad original invertida.

r tasa anual de interes.

n numero de anos.

a cantidad en deposito al final del ano n.

Archivo script interes.m:

25

Page 26: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 26/63

% script archivo-M interes.m

% Este programa calcula el interes compuesto, donde

% p es la cantidad original invertida (principal).

% r tasa anual de interes (rate).% n numero de a~nos (years).

% a cantidad en deposito al final del a~no n (amount).

principal=input(’p: ’);

rate=input(’r (%): ’);

years=input(’n: ’);

rate=rate*0.01;

disp(sprintf(’\n\n %4s %21s\n’, ’a~no:’, ’deposito:’))

for n=1:years

amount=principal*(1+rate)^n;

disp(sprintf(’%4d %21.2f\n’, n, amount))end

Corriendo este programa, obtenemos los siguientes resultados.

)) interes

p: 1000

r (%): 5

n: 10

a~no: deposito:

1 1050.00

2 1102.50

3 1157.63

4 1215.51

5 1276.28

6 1340.10

7 1407.10

8 1477.46

9 1551.33

10 1628.89

De acuerdo con el ejemplo anterior. En el archivo interes.m, el enunciado for n=1:years significa quela variable de control n ira tomando valores de 1 a 10, en incrementos de 1. Es decir, ejecuta 10 veces las

26

Page 27: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 27/63

sentencias dentro del ciclo; en este caso la formula de interes y el desplegado en pantalla de la informacion.Los ciclos For pueden ser anidados; es decir utilizando ciclos internos y externos.

Ejemplo: Calculo de interes compuesto.

Una persona invierte $15000,00 en una cuenta de ahorros, que reditua un interes del 4 %. Suponiendoque todo el interes se queda en deposito dentro de la cuenta, calcular y desplegar la cantidad de dinero en la

cuenta, al final de cada ano, durante un periodo de 3 anos. Realizar el mismo calculo si utilizamos un interesdel 4% al 6%.

Archivo script interes2.m:

% script archivo-M interes2.m

% Este programa calcula el interes compuesto desde

% una cierta tasa de interes a otra, donde

% p es la cantidad original invertida (principal).

% r tasa anual de interes variable (variable rate).% n numero de a~nos (years).

% a cantidad en deposito al final del a~no n (amount).

clc principal=input(’p: ’);

rate1=input(’r0 (%): ’);

rate2=input(’rn (%): ’);

years=input(’n: ’); rate=0.01.*(rate1:rate2); b=size(rate);

for i=1:b(2)

disp(sprintf(’%6s %21s %15s %4.2f\n’, ’a~no:’, ’deposito:’, ’interes (%):’, 100*rate(i)))

for n=1:years

amount=principal*(1.+rate(i))^n;

disp(sprintf(’%4d %21.2f\n’, n, amount))end

end

Corriendo este script, se obtiene lo siguiente:

p: 15000

r0 (%): 4

rn (%): 6

n: 3

a~no: deposito: interes (%): 4.00

1 15600.00

2 16224.00

3 16872.96

a~no: deposito: interes (%): 5.00

1 15750.00

27

Page 28: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 28/63

2 16537.50

3 17364.38

a~no: deposito: interes (%): 6.00

1 15900.00

2 16854.00

3 17865.24

De acuerdo con el ejemplo anterior. En el archivo interes2.m, el ciclo interno for n=1:years significaque la variable de control n ira tomando valores de 1 a 3, en incrementos de 1. Este ciclo interno es ejecutadodesde 4 a 6 por el ciclo externo for i=1:b(2).

3.2. Ciclos WHILE

Los ciclos While evaluan un grupo de comandos o sentencias un numero indefinido de veces. La formageneral de un ciclo While es:

while expresion

sentencia 1

sentencia 2

...

sentencia n

end

Las sentencias entre while y end son ejecutados mientras expresion es verdadera. En caso de queexpresion sea falsa, el ciclo while termina de ejecutarse.

Ejemplo: Considerar el ejemplo siguiente.

% archivo aprox.m

num=0; EPS=1;

clc while (1+EPS)>1EPS=EPS/2;

num=num+1;

end

num

2*EPS

Ejecutando este archivo script, tenemos lo siguiente:

28

Page 29: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 29/63

num =

53

ans =

2.2204e-016

Este ejemplo realiza el calculo de la variable especial de MATLAB eps, el cual es el numero mas pequenoque puede ser sumado a 1 tal que el resultado es mayor que 1 utilizando precisi on finita.

En el ejemplo, tenemos la variable EPS para que la variable especial eps no sea sobreescrita. EPS esinicializada a 1. Conforme (1+EPS)>1 es verdadero (no zero), las sentencias dentro del ciclo While sonevaluados. Donde EPS es continuamente dividida en dos, EPS eventualmente va haciendose tan pequeno quesumandole EPS a 1 no llega a ser mayor que 1. En este punto, (1+EPS)>1 es falso (cero) y el ciclo While

termina. Finalmente, EPS es multiplicado por 2 debido a que la ultima division por 2 lo hizo muy pequenopor un factor de 2. La variable num es un contador de cuantas iteraciones se tuvieron que realizar.

3.3. Estructuras IF-ELSE-END

En muchas ocasiones, las secuencias de comados deben estar condicionalmente evaluadas basadas en untest relacional. Esta logica es proporcionada por la estructura If-Else-End. Las construccion If-Else-End

mas simple tiene la siguiente forma:

if expresion

(sentencias)

end

Las sentencias entre los enunciados if y end son evaluados si todos los elementos de expresion sonverdadero (no cero). En aquellos casos en que expresion involucra algunas subexpresiones logicas, solo elmınimo numero requerido para determinar el estado logico final son evaluados.

Por ejemplo, si expresion es expresion1 expresion2—, entonces expresion2 es solo evaluada siexpresion2 es falsa. Similarmente, si expresion es (expresion1 & expresion2), entonces expresion2

no es evaluada si expresion1 es falsa.

Ejemplo: En una tienda con ventas al mayoreo, se venden ciertos artıculos. La tienda realiza un descuento

del 25 % a partir de la compra de 20 artıculos, en caso contrario, se aplicarıa el costo por el numero deartıculos. Hacer un programa que lea el numero de artıculos a comprar y el costo por unidad y realize estasconsideraciones.

Archivo script interes.m:

29

Page 30: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 30/63

%archivo script descuento.m

%Venta al mayoreo

articles=input(’numero de articulos: ’);

cost1=input(’costo unitario: ’);cost=articles*cost1;

disp(sprintf(’Costo original: %21.2f’, cost))

if articles>20 %a partir de 20 articulos.

cost=(1-25/100)*cost; %aplicar el 25% de descuento

end

disp(sprintf(’Costo mayoreo: %21.2f’, cost))

Ejecutando este codigo, para un numero de artıculos de 100 a un costo unitario de 25$. Tenemos lo

siguiente:

)) mayoreo

numero de articulos: 100

costo unitario: 25

Costo original: 2500.00

Costo mayoreo: 1875.00

En casos donde existan dos alternativas, la estructura If-Else-End toma esta forma:

if expresion

(sentencias evaluadas si expresion es verdadera)

else(sentencias evaluadas si expresion es falsa)

end

En casos cuando existan tres o mas alternativas, la estructura If-Else-End es la siguiente:

if expresion1

(sentencias evaluadas si expresion1 es verdadera)

elseif expresion2

(sentencias evaluadas si expresion2 es verdadera)

elseif expresion3

(sentencias evaluadas si expresion3 es verdadera)elseif expresion4

(sentencias evaluadas si expresion4 es verdadera)

elseif ...

...

else

(sentencias evaluadas si ninguna expresion es verdadera)

end

30

Page 31: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 31/63

En esta ultima forma solo los comandos asociados con la primera expresion verdadera encontrada son eval-uados; asegurando que las expresiones relacionales no sean probadas y el resto de la estructura If-Else-End

es pasada por alto. El comando else puede o no aparecer.Manejando estructuras condicionales podemos realizar formas de salto o interrupci on de ciclos For y

ciclos While:

Ejemplo: Aproximacion.

Archivo script interes.m:

% archivo aprox2.m

clc

EPS=1;

for num=1:1000

EPS=EPS/2;

if(1+EPS)<=1

EPS=EPS*2;

break

end

end

num

EPS

Corriendo est programa, tenemos lo siguiente:

num =

53

EPS =

2.2204e-016

Este ejemplo es una manera de obtener eps. El ciclo For esta estructurado para correr un numero mayorde veces. La estructura If-Else-End checa para ver si EPS ha llegado a ser lo suficientemente pequena. Sieso se tiene, EPS es multiplicada por 2 y el comando break forza al ciclo For a terminar prematuramente.La variable num indica el numero de veces que se realizo el calculo de EPS.

En este ejemplo, cuando el enunciado break es ejecutado, MATLAB salta al siguiente enunciado fueradel ciclo en donde este aparece. En este caso, serıa desplegar las variables num y EPS.

En el caso de ciclos anidados cuando un comando break aparece, MATLAB salta fuera del ciclo en elcual aparece. Pero no fuera la estructura completa anidada.

31

Page 32: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 32/63

3.4. Estructuras SWITCH-CASE

Cuando las secuencias de comandos deben ser evaluados en base al uso repetido de prueba de igualdad.Esto es llevado a cabo de manera mucho mas facil empleando las estructuras Switch-Case y son de lasiguiente forma:

switch expresion

case test_expresion1

(sentencias1)

case test_expresion2,test_expresion3,test_expresion4

(sentencias2)

othewise

(sentencias3)

end

Aquı expresion debe ser un escalar o una cadena de caracter. Si expresion es un escalar, expresion==test_expresio

es probada por cada enunciado case. Si expresion es una cadena de caracter, expresion es comparado contest_expresion1 en el primer enunciado. Si son iguales, sentencias1 son evaluadas y el resto de los enunci-ados antes del end son pasados por alto. Si la primera comparacion es falsa, la segunda opcion es considerada(segundo case). Si todas las comparaciones son falsas, (sentencias3) son ejecutadas despues del enunciadootherwise.

Nota! La implementacion de Switch-Case permite al menos que uno del grupo de sentencias sea ejecutada.

Ejemplo: Crear un programa que convierta una medida lineal a una unidad por default (en este caso,

centımetros). Ingresar la magnitud y la unidad.

Archivo script interes.m:

32

Page 33: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 33/63

%archivo script medidas.m

%Este archivo realiza la conversion de un numero

%en medidas lineales a centımetros.

x=input(’cantidad: ’);

units=input(’unidades: ’);

switch units %convierte x a centımetros

case ’inch’, ’in’

y=x*2.54;

case ’feet’, ’ft’

y=x*2.54*12;

case ’meter’, ’m’

y=x/100;

case ’millimeter’, ’mm’

y=x/10;

case ’centimeter’, ’cm’y=x;

otherwise

disp([’Unidades desconocidas: ’ units])

y=nan;

end

disp(sprintf(’%21.5f %3s’, y, ’cm’))

Ejecutando este programa con varios ejemplos, tenemos los siguientes resultados en pantalla.

)) cantidad: 2.7 unidades: ’m’

0.02700 cm

)) cantidad: 1 unidades: ’in’

2.54000 cm

)) cantidad: 5 unidades: ’ft’

152.40000 cm

)) cantidad: 3 unidades: ’mm’

0.30000 cm

33

Page 34: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 34/63

34

Page 35: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 35/63

Capıtulo 4

Arreglos y operaciones con arreglos

4.1. Direccionamiento de arreglos

En MATLAB, los datos necesarios para operaciones son almacenados y procesados en forma de arreglos.

Los elementos de un arreglo son accesados a traves de subındices (este subındice representa una direccion endonde se localiza un elemento en particular).

Ejemplo: Utilizando arreglos evaluar la siguiente funcion utilizando pasos de 0,1π y realizar la graficacorrespondiente.

f (x) = sin(x) para 0 ≤ x ≤ 2π

Escribiendo el archivo correspondiente llamado seno.m :

% script archivo-M seno.m

%Este programa evalua la funcion seno desde 0 hasta 2*pi

%y obtiene su grafica

x=0:0.1*pi:2*pi %vector desde 0 hasta 2*pi en pasos de 0.1*pi

y=sin(x) %vector que contiene el valor del seno de x

plot(x,y) %obtiene la grafica de la funcion seno

grid

Corriendo este archivo script (ya sea desde la lınea de comandos o desde el editor de MATLAB), vemosen la ventana de comandos los valores correspondientes de x y el valor de la funcion seno (arreglo y ) .

)) seno

x =

Columns 1 through 7

0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850

35

Page 36: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 36/63

Columns 8 through 14

2.1991 2.5133 2.8274 3.1416 3.4558 3.7699 4.0841

Columns 15 through 21

4.3982 4.7124 5.0265 5.3407 5.6549 5.9690 6.2832

y =

Columns 1 through 7

0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511

Columns 8 through 14

0.8090 0.5878 0.3090 0.0000 -0.3090 -0.5878 -0.8090

Columns 15 through 21

-0.9511 -1.0000 -0.9511 -0.8090 -0.5878 -0.3090 -0.0000

0 1 2 3 4 5 6−1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

Figura 4.1: Grafica de la funcion seno.

Como vemos en la Figura 6.10, la grafica de la funcion seno esta formada por los arreglos x (la variableindependiente) y el arreglo y (la variable dependiente).

Nota! Los arreglos involucrados para la graficacion deben de ser del mismo tamano o dimension.

36

Page 37: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 37/63

4.2. Construccion de arreglos

MATLAB maneja basicamente dos tipos de arreglo que son:

Unidimensionales: Existen dos tipos y podemos verlos como vectores:

• Tipo fila: Tamano (dimension) 1 × n, donde n es el numero de columnas.• Tipo columna: Tamano (dimension) n × 1, donde n es el numero de filas.

Bidimensionales: Son aquellos que tienen cierta cantidad de filas y columnas (podemos considerarloscomo matrices). En MATLAB se pueden definir con solo especificar sus dimensiones.

• Matriz de tamano n × n (matriz cuadrada), donde n es el numero de filas y columnas.

• Matriz de tamano n × m (matriz rectangular), donde n es el numero de filas y m el numero decolumnas.

En MATLAB, para crear un vector fila; los elementos deben estar separados por espacioso comas especificando diferentes columnas. De manera analoga, para un vector columna,cada elemento esta separado por punto y coma especificando diferentes filas.

Para construir matrices, especificamos las columnas separando cada elemento por medio deespacios o coma y con punto y coma las filas.

Las tecnicas y comandos empleados para la construccion de arreglos unidimensionales se muestran acontinuacion:

Tecnicas de construccion Descripcion

x=[ 2 2*pi sqrt(2) 2-3j] †con elementos especıficos.

y=[ 2;2*pi;sqrt(2);2-3j] §con elementos especıficos.

x=first:last †first hasta last.

x=first:step:last †first hasta last con incrementos (step).

x=linspace(first,last,n) †first hasta last, teniendo n elementos (puntos).

x=logspace(first,last,n) †logarıtmicamente espaciado desde 10first hasta 10last teniendo n elementos (puntos).

†Crean un vector fila x.§Crea un vector columna y.

Podemos pasar de vector fila a columna o viceversa, esto es llevado a cabo realizando una transpuesta

al vector fila o columna y se denota con el operador (’).

Ejemplo:

)) a=1:.5:5

a =

Columns 1 through 7

1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000

Columns 8 through 9

4.5000 5.0000

)) b=a’

37

Page 38: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 38/63

b =

1.0000

1.5000

2.0000

2.5000

3.00003.5000

4.0000

4.5000

5.0000

Cuando se manejan vectores o matrices con elementos complejos, si empleamos el operador (’) obtenemosla transpuesta pero con sus elementos conjugados. MATLAB ofrece el operador punto transpuesta (.’); ladiferencia del primero con el segundo con respecto al segundo radica en que el operador (.’) entrega latranspuesta con sus elementos sin alterar.

Ejemplo:

)) c=a+i*a

c =

Columns 1 through 4

1.0000 + 1.0000i 1.5000 + 1.5000i 2.0000 + 2.0000i 2.5000 + 2.5000i

Columns 5 through 8

3.0000 + 3.0000i 3.5000 + 3.5000i 4.0000 + 4.0000i 4.5000 + 4.5000i

Column 9

5.0000 + 5.0000i

)) c.’

ans =

1.0000 + 1.0000i

1.5000 + 1.5000i

2.0000 + 2.0000i

2.5000 + 2.5000i

3.0000 + 3.0000i3.5000 + 3.5000i

4.0000 + 4.0000i

4.5000 + 4.5000i

5.0000 + 5.0000i

)) c’

ans =

1.0000 - 1.0000i

38

Page 39: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 39/63

1.5000 - 1.5000i

2.0000 - 2.0000i

2.5000 - 2.5000i

3.0000 - 3.0000i

3.5000 - 3.5000i

4.0000 - 4.0000i

4.5000 - 4.5000i5.0000 - 5.0000i

Tambien podemos construir matrices y realizar operaciones matematicas; las matrices en MATLABconsisten en arreglos con multiples filas y columnas. A continuacion, tenemos algunos ejemplos de contruccionde matrices.

Ejemplo: Construccion de matrices

)) g=[1 2 3 4;5 6 7 8]

g =

1 2 3 4

5 6 7 8

)) h=[1 2 3 4; 5 6 7 8; 9 10 11 12]

h =

1 2 3 4

5 6 7 8

9 10 11 12

)) A=[-1 0 7 5;2 -4 10 8;6 4 -12 0;4 -2 5 7]

A =

-1 0 7 5

2 -4 10 8

6 4 -12 0

4 -2 5 7

)) B=[1 -3 10 -5;8 -10 11 3;8 16 -12 1;18 -1 9 3]

B =

1 -3 10 -5

8 -10 11 3

8 16 -12 1

18 -1 9 3

4.3. Operaciones matematicas con arreglos

Operaciones matematicas matriciales y vectoriales pueden ser llevadas a cabo en MATLAB.

A continuacion, en la siguiente tabla resumimos las operaciones realizadas con matrices y vectores enMATLAB.

39

Page 40: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 40/63

Operaciones matriciales Descripcion

Donde A, B son matrices y c un escalar

Suma escalar Utilizada para resultados.

pi π

eps Epsilon de la maquina

flops Conteo de operaciones de punto flotante

inf ∞NaN (o) nan No numero

i (y) j i = j =√−1

nargin Numero de argumentos de entrada de una funcion

nargout Numero de argumentos de salida de una funcion

realmin Numero entero real mas pequeno utilizable

realmax Numero entero real mas grande utilizable

Ejemplo: Operaciones matematicas con matrices en MATLAB.

)) A

A =

-1 0 7 5

2 -4 10 8

6 4 -12 0

4 -2 5 7

)) B

B =

1 -3 10 -5

8 -10 11 38 16 -12 1

18 -1 9 3

)) A+B %suma de las matrices A+B

ans =

0 -3 17 0

10 -14 21 11

14 20 -24 1

22 -3 14 10

)) 2*A %multiplicacion del escalar 2 por la matriz A

ans =

-2 0 14 10

4 -8 20 16

12 8 -24 0

8 -4 10 14

)) ans-B %restar B de la respuesta previa (2*A-B)

40

Page 41: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 41/63

ans =

-3 3 4 15

-4 2 9 13

4 -8 -12 -1

-10 -3 1 11

Podemos hacer la multiplicacion de dos matrices; elemento por elemento o matricial. En el siguienteejemplo veremos las dos diferencias.

Ejemplo: Multiplicamos las matrices A y B elemento por elemento.

)) A

A =

-1 0 7 5

2 -4 10 8

6 4 -12 04 -2 5 7

)) B

B =

1 -3 10 -5

8 -10 11 3

8 16 -12 1

18 -1 9 3

)) A.*B

ans =

-1 0 70 -25

16 40 110 24

48 64 144 0

72 2 45 21

El punto antes del sımbolo de multiplicacion le dice a MATLAB desarrollarla multiplicacion elemento por elemento. En cambio, si no utilizamos el puntosignifica que es la multiplicacion matricial.

41

Page 42: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 42/63

42

Page 43: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 43/63

Capıtulo 5

Calculos de tiempo

MATLAB ofrece funciones para manipular tiempo. Podemos realizar aritmeticas con fechas, horas, im-primir calendarios, y localizar dıas especıficos. MATLAB realiza esto almacenando la fecha y la hora comonumeros de doble precision representando el numero de dıas donde comienza el ano cero. MATLAB tiene

funciones para convertir numeros de fechas y cadenas de caracteres y para manipular fechas y horas.

5.1. Fecha y hora actual

La funcion clock regresa la fecha y hora actuales en un arreglo. Ejemplo:

)) T=clock

T =

1.0e+003 *

2.0030 0.0090 0.0030 0.0180 0.0390 0.0098

Estos datos fueron almacenados en el arreglo T con el siguiente formato:

T=[a~no mes dıa hora minutos segundos]

La funcion now regresa la fecha y hora actual como numeros de doble precision o simplemente un numerode fecha.

)) format long )) t=now

t =

7.318277810951389e+005

Cabe mencionar que T y t contienen la misma informacion.La funcion date regresa la fecha actual como una cadena con el formato dd-mmm-yyyy:

)) date

ans =

03-Sep-2003

43

Page 44: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 44/63

5.2. Conversiones para formatos de fechas

Generalmente, las matematicas en las que involucran tiempo involucra horas o fechas en forma de datosnumericos, desarrollando las operaciones matematicas estandares en las horas, y entonces convirtiendo el re-sultado a un formato comprensible al usuario. Como resultado, la conversi on entre la conversion de diferentesformatos de tiempo es muy importante.

MATLAB soporta tres formatos para fechas:

1. Numeros de fecha con doble precision.

2. Cadenas de caracteres de fechas en una variedad de estilos.

3. Vector numerico de fechas.

Podemos convertir el numero de fecha a una cadena utilizando la funcion dateform. La sintaxis empleadapara la funcion datestr es la siguiente:

datestr(fecha,forma del dato)

A continuacion, vemos las caracterısticas del comando datestr.

)) help datestr

DATESTR String representation of date.

DATESTR(D,DATEFORM) converts a serial data number D (as returned by

DATENUM) into a date string. The string is formatted according to the

format number or string DATEFORM (see table below). By default,

DATEFORM is 1, 16, or 0 depending on whether D contains dates, times

or both. Date strings with 2 character years are interpreted to be

within the 100 years centered around the current year.

DATESTR(D,DATEFORM,PIVOTYEAR) uses the specified pivot year as the

starting year of the 100-year range in which a two-character yearresides. The default pivot year is the current year minus 50 years.

DATEFORM = -1 uses the default format.

DATEFORM number DATEFORM string Example

0 ’dd-mmm-yyyy HH:MM:SS’ 01-Mar-1995 15:45:17

1 ’dd-mmm-yyyy’ 01-Mar-1995

2 ’mm/dd/yy’ 03/01/95

3 ’mmm’ Mar

4 ’m’ M

5 ’mm’ 3

6 ’mm/dd’ 03/01

7 ’dd’ 18 ’ddd’ Wed

9 ’d’ W

10 ’yyyy’ 1995

11 ’yy’ 95

12 ’mmmyy’ Mar95

13 ’HH:MM:SS’ 15:45:17

14 ’HH:MM:SS PM’ 3:45:17 PM

15 ’HH:MM’ 15:45

16 ’HH:MM PM’ 3:45 PM

17 ’QQ-YY’ Q1-96

44

Page 45: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 45/63

18 ’QQ’ Q1

See also DATE, DATENUM, DATEVEC.

Ejemplos del comando datestr:

)) t=now; )) datestr(t)

ans =

03-Sep-2003 18:57:22

)) datestr(t,14)

ans =

6:57:22 PM

La funcion inversa a datestr es datenum. La funcion datenum convierte una fecha en formato de ca-

dena de caracteres a una fecha en formato numerico utilizando datenum(str). Alternativamente, convierteespecificaciones de fechas individuales utilizando la forma:

datenum(a~no,mes,dıa)

datenum(a~no,mes,dıa,hora,minutos,segundos)

Por ejemplo:

)) t=now

t =

7.318277941717593e+005

)) datestr(t)

ans =

03-Sep-2003 19:03:36

)) datenum(ans)

ans =

7.318277941666667e+005

)) datenum(2003,9,3)

ans =

731827

)) datenum(2003,5,3,19,04,34)

ans =

7.317047948379630e+005

45

Page 46: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 46/63

La funcion datevec convierte una cadena de fechas usando datesr(format 0,1,2,6,13,14,15, o 16) aun vector numerico conteniendo los componetes de la fecha. De manera alterna, convierte una fecha numericaa un vector numerico de componentes de fechas. Por ejemplo:

)) c=datevec(’11/28/2001’)

c =

2001 11 28 0 0 0

)) [yr,mo,day,hr,min,sec]=datevec(’28-Nov-2001 19:00’)

yr =

2001

mo =

11

day =

28

hr =

19

min =

0

sec =

0

5.3. Funciones para fechas

El dıa de la semana de manera numerica puede ser encontrado a partir de una cadena de caracteres ouna fecha numerica utilizando la funcion weekday. Ejemplo:

)) [d,w]=weekday(731827)

d =

4

46

Page 47: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 47/63

w =

Wed

)) [d,w]=weekday(’28-Nov-2003’)

d =

6

w =

Fri

El ultimo dıa de cualquier mes puede ser encontrado utilizando la funcion eomday. Debido a que existenlos anos bisiestos, el ano y la fecha son requeridos.

)) eomday(1996,2) % 2000 fue a~no bisiesto

ans =

29

MATLAB puede generar un calendario para cualquier mes que el usuario solicite y lo despliega en laventana de comandos en forma de una matriz de 6 × 7 utilizando la funcion calendar:

)) calendar(’9/21/01’) %despliega calendario

Sep 2001

S M Tu W Th F S

0 0 0 0 0 0 12 3 4 5 6 7 8

9 10 11 12 13 14 15

16 17 18 19 20 21 22

23 24 25 26 27 28 29

30 0 0 0 0 0 0

)) S=calendar(2000,9) %retorna calendario como arreglo numerico

S =

0 0 0 0 0 1 2

3 4 5 6 7 8 910 11 12 13 14 15 16

17 18 19 20 21 22 23

24 25 26 27 28 29 30

0 0 0 0 0 0 0

)) size(S)

ans =

6 7

47

Page 48: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 48/63

5.4. Funciones de temporizacion

Las funciones tic y toc son utilizadas para temporizar una secuencia de operaciones de MATLAB.El comando tic inicializa un cronometro; por su parte, toc para el cronometro y despliega el tiempotranscurrido.

)) tic;plot(rand(5));toc

elapsed_time =

7.80000000000000

)) tic;plot(rand(5));toc

elapsed_time =

0.55000000000000

Cabe notar, que la diferencia de tiempos transcurridos para comandos plot identicos. En el segundo plot

fue significativamente mas rapido debido a que MATLAB ya habıa creado la ventana de Figura y compilo lasfunciones que necesito en memoria.

La funcion cputime entrega el tiempo de CPU en segundos que MATLAB ha empleado desde que lasesion actual inicio. La funcion etime calcula el tiempo transcurrido entre dos vectores de tiempo en unvector fila de 6 elementos tal como regresan las funciones clock y datevec. Las funciones cputime y etime

pueden ser utilizadas para calcular el tiempo que toma una operacion en ser completada.

)) t0=cputime;oido;cputime-t0

ans =

0.21999999999935

)) t1=clock;oido;etime(clock,t1)

ans =

0.22000000000000

48

Page 49: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 49/63

Capıtulo 6

Graficas con MATLAB

MATLAB comprendera una gran gama de funciones para construir diferentes tipos de gr aficas. Es decir,podemos generar graficas polares, de barras, implıcitas, retıculas triangular y contornos, 2-D y 3-D. MATLABpermite la colocacion de tıtulos, etiquetas a los ejes, cuadriculado a las graficas ası como algunas instrucciones

para controlar las ventanas graficas.

Funciones basicas de graficacion Descripcion

axis Establece los ejes de las graficas.

bar Realiza graficas de barras.

cla Borra curvas graficadas y redibuja los ejes.

clf Borra lo que haya en la ventana de graficos.

close Cierra la ventana de graficacion.

fplot Funcion de graficacion.

ginput Obtiene los puntos de la grafica con un click de raton.

grid Cuadrıcula.

gtext Coloca texto donde se haga un click de raton.

hold Mantiene las graficas.loglog Establece una escala logarıtmica en los ejes x y y de la grafica.

pause Realiza una pausa entre graficas.

plot Graficacion 2-D de manera lineal.

polar Graficacion polar.

semilogx Establece una escala logarıtmica en el eje x.

semilogy Establece una escala logarıtmica en el eje y.

stairs Grafica de escaleras.

text Coloca texto en la ventana grafica.

title Coloca tıtulo en la grafica.

xlabel Coloca etiqueta en el eje x.

ylabel Coloca etiqueta en el eje y.

6.1. Graficacion 2-D

Si tenemos un conjunto de puntos de datos, (xi, yi), i = 1, 2, 3, . . . , n. Es necesario manejar x y y enforma de arreglos fila o columna del mismo tamano o dimension. Estos datos pueden ser graficados con elcomando plot.

Ejemplo: Graficar la funcion seno amortiguada siguiente.

f (x) = sin(x)e−0,4x para 0 ≤ x ≤ 20

49

Page 50: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 50/63

Escribiendo el archivo correspondiente llamado amortiguada.m:

%archivo amortiguada.m

%vector fila 0<=x<=20 con 1000 puntos de resolucion

x=linspace(0,20,1000);

%funcion o vector fila y

y=sin(x).*exp(-0.4.*x);

%orden de graficacion de datos (xi,yi)

plot(x,y)

%desplegado de ejes x e y

xlabel(’x’)

ylabel(’y’)

%cuadrıcula (opcional)

grid

Ejecutando este codigo, obtenemos la siguiente grafica.

0 2 4 6 8 10 12 14 16 18 20−0.2

−0.1

0

0.1

0.2

0.3

0.4

0.5

0.6

x

y

Figura 6.1: Grafica de la funcion seno amortiguada.

De este ejemplo, definimos primero el vector fila x debido a que definira a la funcion y que tambien esun vector fila del mismo tamano. El comando plot(x,y) recibe como parametros los vectores x y y en eseorden. Los nombres de los ejes se despliegan mediante los comandos xlabel y y.

Debido a que en MATLAB podemos graficar en 2-D, podemos graficar tambien un plano complejo. Acontinuacion, tenemos el siguiente ejemplo.

Ejemplo: Graficar la identidad de Euler en el plano complejo dada por.

z = cos( p) + i sin( p) donde z = ei p

50

Page 51: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 51/63

Archivo euler.m:

%archivo euler.m

%vector fila 0<=p<=8pi con 1000 puntos de resolucion

p=linspace(0,8*pi,500);

%funcion o vector fila y

z=cos(p)+i*sin(p);

%orden de graficacion de datos (xi,yi)

plot(real(z),imag(z))

%ajuste de ejes

axis([-1.2 1.2 -1.2 1.2])

%desplegado de ejes x e y

xlabel(’Re(z)’)

ylabel(’Im(z)’)

%cuadrıcula (opcional)

grid

Escribiendo y corriendo este codigo, tenemos lo siguiente:

−1.5 −1 −0.5 0 0.5 1 1.5−1.5

−1

−0.5

0

0.5

1

1.5

Re(z)

I m ( z )

Figura 6.2: Grafica de la identidad de Euler.

Graficacion con marcas: Cuando utilizamos el comando plot, este genera por default una graficaconectando los puntos por medio de lıneas. MATLAB dispone de cinco tipo de marcas o letras para indicaruna grafica.

51

Page 52: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 52/63

Tipo de marca Sımbolo

Punto .

Mas +

Asterisco *

Cırculo o

Marca x x

Ejemplo: Graficar la funcion seno amortiguada anterior con *.

Escribiendo el archivo correspondiente llamado amortiguada2.m:

%archivo amortiguada.m

%vector fila 0<=x<=20 con 80 puntos de resolucion

x=linspace(0,20,80);

%funcion o vector fila y

y=sin(x).*exp(-0.4.*x);

%orden de graficacion de datos (xi,yi)

plot(x,y,’*’)

%desplegado de ejes x e y

xlabel(’x’)

ylabel(’y’)

%cuadrıcula (opcional)

grid

Ejecutando este codigo, obtenemos la siguiente grafica. Hay que notar que se utilizo para esta graficacion80 puntos.Tipo de colores y lıneas: Se dispone de cuatro tipos de lıneas.

Tipo de lınea Sımbolo

Continua -

Guiones --

Punteada :

Guiones y puntos -.

El tipo de lınea por default es continuo. Si deseamos graficar un tipo de grafica en particular, simplementeespecificamos la marca de lınea como tercer parametro en el comando plot; por ejemplo:

plot(x,y,’--’)

Tambien, disponemos de los siguientes colores:

Color de lınea Sımbolo

Rojo r

Amarillo y

Magenta m

Turquesa c

Verde g

Azul b

Blanco w

Negro k

52

Page 53: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 53/63

0 2 4 6 8 10 12 14 16 18 20−0.2

−0.1

0

0.1

0.2

0.3

0.4

0.5

0.6

x

y

Figura 6.3: Grafica de la funcion seno amortiguada.

El sımbolo del color se especifica tambien como tercer parametro en el comando plot; por ejemplo:plot(x,y,’g’)

Ademas, es posible combinar marcas y colores:plot(x,y,’+g’)

Conversion de numeros a cadenas: En ocasiones, deseamos incluir en las graficas valores numericosen el texto. Para ello, podemos utilizar los comandos num2str y int2str, que significan n´ umero a cadena y

entero a cadena , respectivamente; por ejemplo,

cad=num2str(pi)

En esta lınea, definimos una variable de cadena de caracteres que contiene el valor de pi. Por su parte,int2str, un valor real se convierte en una cadena que contiene solo la parte entera del numero; por ejemplo,con

cad=int2str(pi)

Definimos una variable de cadena de caracteres contiene solo la parte entera de pi. Una vez que el numerose ha convertido en cadena, se puede incluir en los argumentos de las funciones title, xlabel e ylabel, oen text; por ejemplo,

title([’ Caja: ’, cad, ’cm’])

Texto en la grafica: Podemos escribir texto en una grafica con los comandos text o getext. La primeraorden requiere tres parametros en su argumento, a saber:

text(x, y, ’cadena’)

Los dos primeros argumentos son x y y son los valores de las coordenadas absolutas del punto en el quecomienza la cadena; el tercero es la cadena que se imprimir a, misma que puede ser una variable de cadenapredefinida o un texto encerrado en apostrofos. Por ejemplo:

text(2, 4, ’+++ material’)

53

Page 54: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 54/63

Esta orden significa que a partir del punto (2,4) exhibe en pantalla la cadena +++ material.Si es necesario determinar manualmente la ubicacion del texto, gtext(’cadena’) resulta de utilidad.

Cuando se ejecuta este comando, el programa espera hasta que se hace click con el rat on o se pulsa una teclacon el apuntador del raton dentro de la ventana grafica, y el texto se escribira en el lugar senalado por elraton o por el cursor.

Cabe aclarar, el comando text funciona tambien en ejes tridimensaionales, pero gtext solo lo hace en

ejes bidimensionales.Color y tipo de letra: Podemos modificar el color y el tipo de la letra o fuente del texto en una grafica.

Por ejemplo:

text(0.3, 0.2, ’cadena’, ’Fontsize’, [18], ’Color’, ’r’)

Esta orden imprimira cadena en rojo con una fuente de 18 puntos. Si deseamos cambiar el color poromision, escribirıamos:

set(gcf, ’DefaultTextColor’, ’yellow’)

Ejecutando esta orden, los textos en exhibiran en amarillo. El color del texto puede elegirse entre red(rojo), yellow (amarillo), green (verde), cyan (turquesa), blue (azul) y magenta, los cuales se abrevian como’r’, ’y’, ’g’, ’c’, ’b’ y ’m’, respectivamente. Podemos modificar el color de otros textos de forma similar cuantas

veces sea necesario. La disponibilidad de tamanos de fuentes varıa dependiendo de la edicion de MATLAB.Tambien, podemos modificar el tipo de letra; por ejemplo, el manejo de sımbolos griegos que podemosintroducir tambien con text; ejemplo:

text(2, 0, ’abcdefg..’, ’FontName’, ’symbol’)

Exhibira αβχδφγ .. . Los especificadores ’FontName’ y ’symbol’ de los argumentos convierten las letrasalafbeticas a letras griegas. A continuacion mostramos la tabla de conversion de letras alfabeticas a letrasgriegas y sımbolos.

a α q θ

b β r ρ

c χ s σ

d δ t τ

e u υf φ v

g γ w ω

h η x ψ

i ι z ζ

j ϕ D ∆k κ G Γ

l λ S Σm µ W Ωn ν X Ψ

o o $ ∃p π ? ∀

El tamano de la fuente de los valores correspondientes a las marcas de escala de los ejes se puede modificarcon set; por ejemplo,

set(gca, ’FontSize’, [18])

Cambia la fuente del eje a 18 puntos. Si colocamos texto en un lugar incorrecto, no hay forma de borrarlo;la solucion a ese problema es redibujar toda la figura despues de corregir el guion.

Figura: Podemos abrir multiples ventana de graficos con el comando figure. Si solo se utiliza unaventana, no hay necesidad de utilizar este comando, pero si se requieren mas ventanas de graficos se puedenabrir con ella. Si se necesita reactivar una ventana grafica previamente abierta, entonces utilizamos figure(n)

que reactivara la n-esima ventana, donde n es el numero secuencial de figura que aparece en la parte superiorde la ventana de graficos. Tambien es posible modificar las propiedades de las figuras.

54

Page 55: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 55/63

6.2. Graficos multiples

6.2.1. Graficacion multiple con plot

En MATLAB podemos generar dos o mas graficas con una sola orden plot, eso lo podemos realizarescribiendo todos los conjuntos de coordenadas repetidamente en la orden plot.

Ejemplo: Comparar dos voltajes de corriente alterna representados en forma sinusoidal en funcion deltiempo y estan dados por la forma general:

V (t) = A sin(2πf t + θ)

En donde:

A es la amplitud o voltaje pico (volts).

f frecuencia dada en (Hz).

t tiempo.

θ angulo de fase (radianes).

Graficar los siguintes voltajes y compararlos:

V 1(t) = 120 s in(2πf t) (6.1)

V 2(t) = 120 c os(2πf t) (6.2)

Donde f = 60 Hz.

Archivo voltajes.m:

%archivo voltajes.m

%vector tiempo

t=linspace(0,0.018,500);

%voltajes sinusoidales

v1=120*sin(2*pi*60*t);

v2=120*cos(2*pi*60*t);

plot(t,v1,t,v2)

xlabel(’t’)

ylabel(’V(t)’)

title(’Voltajes de corriente alterna’)

grid

55

Page 56: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 56/63

0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018−150

−100

−50

0

50

100

150

t

V ( t )

Voltajes de corriente alterna

Figura 6.4: Grafica de dos voltajes de corriente alterna.

6.2.2. Graficacion multiple con fplot

Otra forma de graficar funciones individuales es con fplot(

nombref , [xmin, xmax]), donde nombre_f esel nombre de la funcion o del archivo M de funcion que se desea graficar y xmin y xmax son los lımites de lagrafica. El maximo y el mınimo del eje y estas determinado por el mınimo y maximo reales de la funcion;sin embargo podemos ajustar los l ımites de la grafica con axis, que se explicara en breve.

Ejemplo: Graficar la funcion seno, coseno y tangente.Escribimos lo siguiente:

)) fplot(’[tan(x),sin(x),cos(x)]’,2*pi*[-1 1 -1 1])

)) grid

))

Teniendo en pantalla lo siguiente:

6.2.3. Graficacion multiple con retencion

En ocasiones, es necesario agregar nuevos graficos a uno ya existente, esto es levado a cabo por el comandohold on. Cuando utilizamos hold on, MATLAB no remueve los ejes existentes cuando nuevas funciones plot

son utilizadas. En lugar de esto, son agregados nuevos graficos a los ejes actuales, sin embargo, si nuevosdatos no se pueden ajustar dentro de los lımites de ejes actuales, los ejes son reescalados.

Una vez ejecutado el comando hold on, la grafica permanece en la pantalla incluso si se ejecuta otroguion; por tanto, lo prudente es colocar la orden hold off despues de realizar el ultimo grafico.

Ejemplo: Utilizar la orden hold para los voltajes de corriente alterna anteriormente descritos:

56

Page 57: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 57/63

−6 −4 −2 0 2 4 6

−6

−4

−2

0

2

4

6

Figura 6.5: Grafica de la funcion seno, coseno y tangente.

Archivo voltajes.m:

%archivo voltajes2.m

%Utilizacion del comando hold

%vector tiempot=linspace(0,0.018,500);

%voltajes sinusoidales

v1=120*sin(2*pi*60*t);

plot(t,v1);

hold on

v2=120*cos(2*pi*60*t);

plot(t,v2,’--r’);

hold off

xlabel(’t’)

ylabel(’V_1(t) (-), V_2(t) (--)’)

title(’Voltajes de corriente alterna’)grid

6.3. Subgraficas

En MATLAB es posible sobre una misma ventana de figura graficar mas de un solo conjunto de ejes,es decir un grupo de m × n graficas. Esta accion es realizada por el comando subplot, cuya sintaxis es lasiguiente:

57

Page 58: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 58/63

0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016 0.018−150

−100

−50

0

50

100

150

t

V 1

( t ) ( − ) ,

V 2

( t ) ( − −

)

Voltajes de corriente alterna

Figura 6.6: Grafica de dos voltajes de corriente alterna.

subplot(m,n,j)

Donde m, n y j son enteros. Aquı el par m y n se refiere a un arreglo m × n graficas, y j es el numerosecuencial de la grafica. Por ejemplo, si utilizamos subplot(3,2,1), trazaremos la primera grafica del grupo3 por 2 graficas.

Ejemplo: Dada una senal sinuisoidal de la forma:

V (t) = A sin(2πf t + θ)

Generar un conjunto de graficas en donde variamos los parametros importantes de la senal que son; laamplitud A, la frecuencia f y la fase θ. Proponer valores con el fin de comparar dicho grupo de gr aficas.

Archivo sinusoidales.m:

58

Page 59: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 59/63

clc

clear all

close all

T=1; t=linspace(0,T+.5,8000);

subplot(2,2,1)

plot(t,1*sin(2*pi*1*t+0),’b’)

title(’A = 1, f = 1’,’FontSize’, [9])

xlabel(’t’, ’FontSize’, [9])

ylabel(’g(t)’, ’FontSize’, [9])

text(0.55,.45,’q=0’,’FontSize’, [9],’FontName’,’symbol’)

grid

subplot(2,2,2) plot(t,0.5*sin(2*pi*1*t+0),’r’)

title(’A = 0.5, f = 1’, ’FontSize’, [9])xlabel(’t’, ’FontSize’, [9])

ylabel(’g(t)’, ’FontSize’, [9])

text(0.55,.45,’q=0’, ’FontSize’, [9],’FontName’,’symbol’)

grid

subplot(2,2,3)

plot(t,1*sin(2*pi*2*t+0),’g’)

title(’A = 1, f = 2’, ’FontSize’, [9])

xlabel(’t’, ’FontSize’, [9])

ylabel(’g(t)’, ’FontSize’, [9])

text(0.55,.45,’q=0’, ’FontSize’, [9],’FontName’,’symbol’)grid

subplot(2,2,4)

plot(t,1*sin(2*pi*1*t+pi/4),’m’)

title(’A = 1, f = 1’,’FontSize’, [9])

xlabel(’t’, ’FontSize’, [9])

ylabel(’g(t)’, ’FontSize’, [9])

text(0.55,.45,’q=p/4’, ’FontSize’, [9],’FontName’,’symbol’)

grid

6.4. Graficas logarıtmicas y polares

Las graficas logarıtmicas y semilogarıtmicas pueden ser generadas utilizando los comandos loglog,semilogx y semilogy.

loglog(x, y) Genera la grafica de log10

(x) contra log10

(y)

semilogx(x, y) Genera la grafica de log10

(x) contra los ejes lineales de y.

semilogy(x, y) Genera la grafica de log10

(y) contra los ejes lineales de x.

Los logaritmos de numeros negativos y del cero no existen, entonces los datos de los vectores a graficarno los deben de contener.

59

Page 60: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 60/63

0 0.5 1 1.5−1

−0.5

0

0.5

1

A = 1, f = 1

t

g ( t )

θ=0

0 0.5 1 1.5−0.5

0

0.5

A = 0.5, f = 1

t

g ( t )

θ=0

0 0.5 1 1.5−1

−0.5

0

0.5

1

A = 1, f = 2

t

g ( t )

θ=0

0 0.5 1 1.5−1

−0.5

0

0.5

1

A = 1, f = 1

t

g ( t )

θ=π/4

Figura 6.7: Grafica de dos voltajes de corriente alterna.

Ejemplo: En pruebas de laboratorio, se realizan estudios de respuesta del oıdo humano con el fin de

determinar el umbral de auditividad (por ejemplo, el nivel de sonido perceptible mas bajo) del oıdo humanovarıa con la frecuencia. Se recolectaron los siguientes datos, que a continuacion se muestran:

60

Page 61: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 61/63

−10 −5 0 5 10 15−0.5

−0.4

−0.3

−0.2

−0.1

0

0.1

0.2

0.3

0.4

0.5

Figura 6.8: Esto es una prueba.

Frecuencia (Hz) Intensidad (dB)

20 76

30 6640 59

50 54

60 49

70 46

80 43

90 40

100 38

200 22

300 14

400 9

500 6

600 3.5700 2.5

800 1.4

900 0.7

1000 0

1500 -1

2000 -3

3000 -8

4000 -7

5000 -2

6000 2

7000 7

8000 99000 11

10000 12

61

Page 62: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 62/63

Escribiendo el archivo correspondiente llamado oido.m:

%archivo oido.m

%Frecuencias en Hz

Hz=[20,30,40,50,60,70,80,90,100,200

,300,400,500,600,700,800,900,1000,1500,

2000,3000,4000,5000,6000,7000,8000,9000,10000];

%Nivel de presion de sonido en el oıdo humano (dB)

nps=[76,66,59,54,49,46,43,40,38,22,

14,9,6,3.5,2.5,1.4,0.7,0,-1,-3,-8,-7,

-2,2,7,9,11,12];

%Graficacion semilogarıtmica de respuesta vs frecuencia especificando

%cırculos en los puntos en color rojo

semilogx(Hz,nps,’-or’)

xlabel(’Frecuencia (Hz)’)ylabel(’Nivel de

presion de sonido relativo (dB)’)

title(’Umbral del oıdo humano’)

grid

101

102

103

104

−10

0

10

20

30

40

50

60

70

80

Frecuencia (Hz)

N i v e l d e

p r e s i ó n

d e

s o n i d o

r e l a t i v o

( d B )

Umbral del oído humano

Figura 6.9: Grafica de respuesta del oıdo humano.

Ejecutando este codigo; se observa en la grafica que el oıdo humano es mas sensible a tonos alrededor delos 3 Khz.

Tambien podemos construir graficas de funciones en coordenadas polares por el comando polar. Con lasiguiente sintaxis:

polar(θ, ρ) Donde θ y ρ son vectores; θ esta dado en radianes y ρ es la magnitud

62

Page 63: Manual 2

5/10/2018 Manual 2 - slidepdf.com

http://slidepdf.com/reader/full/manual-2-559e03466c642 63/63

Ejemplo: Un numero complejo puede ser representado en forma polar en la forma z = reiθ. La nth

potencia de un numero complejo estas dada por zn = rneinθ. Si r = 1,2 y θ = 10. Graficar la funcion |zn|contra nθ para 0 ≤ n ≤ 36.

Archivo polar1.m:

%archivo polar1.m

r=1.2; %valor de magnitud

theta=10*pi/180; %conversion a radianes

%n*theta donde n=0 a 36, en incrementos de 10pi/180 radianes

angle=0:theta:36*theta;

magnitude=r.^(angle/theta);

%orden de graficacion de datos (theta,rho)

polar(angle,magnitude)

title(’Grafica polar de un numero complejoz=r^ne^jn\theta’)

%cuadrıcula (opcional)

grid

200

400

600

800

30

210

60

240

90

270

120

300

150

330

180 0

Gráfica polar de un número complejo z=rne jnθ

Figura 6.10: Grafica en forma polar de z = 1,2nej10n.

63