Manual 2
-
Upload
eder-franklin-flores-guillen -
Category
Documents
-
view
78 -
download
0
Transcript of 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
5/10/2018 Manual 2 - slidepdf.com
http://slidepdf.com/reader/full/manual-2-559e03466c642 2/63
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
5/10/2018 Manual 2 - slidepdf.com
http://slidepdf.com/reader/full/manual-2-559e03466c642 4/63
4
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
5/10/2018 Manual 2 - slidepdf.com
http://slidepdf.com/reader/full/manual-2-559e03466c642 24/63
24
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
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
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
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
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
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
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
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
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
5/10/2018 Manual 2 - slidepdf.com
http://slidepdf.com/reader/full/manual-2-559e03466c642 34/63
34
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
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
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
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
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
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
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
5/10/2018 Manual 2 - slidepdf.com
http://slidepdf.com/reader/full/manual-2-559e03466c642 42/63
42
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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