Está en la página 1de 20

MATLAB para principiantes

MATLAB PARA PRINCIPIANTES

MATLAB para principiantes

Universidad Nacional Autnoma de Mxico


Centro de Fsica Aplicada y Tecnologa Avanzada

MATLAB para principiantes

MATLAB
PARA PRINCIPIANTES

Rafael Quintero Torres


Rafael Quintero Bermdez
Centro de Fsica Aplicada y Tecnologa Avanzada
Juriquilla Quertaro
Universidad Nacional Autnoma de Mxico

Universidad Nacional Autnoma de Mxico

MATLAB para principiantes

Matlab para principiantes


D.R. 2012
Universidad Nacional Autnoma de Mxico
Av. Universidad 3000
Ciudad Universitaria, Delegacin Coyoacn,
04510, Mxico ,D. F.
Centro de Fsica Aplicada y Tecnologa Avanzada
Boulevard Juriquilla 3001
76230 Juriquilla, Quertaro

ISBN: 978-607-02-3578-8
Diseo de cubierta:
D.G. Anahit Indra Ortiz Molina
Edicin a cargo de:
Jit Press, S.A. de C.V.
General Santana 253
Col. M. Carrera
07070 Mxico, D.F.,
Tel. (55) 5794 5198

DERECHOS RESERVADOS
Queda prohibida la reproduccin o transmisin total o parcial del texto o las
ilustraciones de la presente obra bajo cualesquiera formas, electrnicas o
mecnicas, incluyendo fotocopiado, almacenamiento en algn sistema de
recuperacin de informacin, dispositivo de memoria digital o grabado sin el
consentimiento previo y por escrito del editor.

Impreso y hecho en Mxico


Printed

in

Mxico

MATLAB para principiantes

Emprendemos la redaccion de este texto como resultado de que el alfabetismo en


MATLAB en las universidades contina siendo muy bajo y de que la necesidad de
emplear las buenas herramientas de cmputo matemtico de manera ms extendida est
presente.
El material aqu contenido est pensado para estudiantes que desconocen MATLAB, pero
que les gustara introducirse en l de manera autodidcta. Tambin puede ser de utilidad
para estudiantes de computacin y mtodos numricos ya que los ejemplos y el inters
principal es el control de las acciones de la mquina por medio de la sintaxis de
MATLAB.
Suponemos que existe un genuino inters o una necesidad en introducirse en esta
temtica, que se tiene un conocimiento bsico de lgebra y que se aceptan los retos con
singular alegra.

MATLAB para principiantes

Prlogo
En las primeras palabras del material se evidencia la intencin: ayudar a que
herramientas como MATLAB sean empleadas por los estudiantes de
licenciatura. Que este libro bosqueje un camino por el cual se pueda migrar
de las calculadoras al cmputo cientfico; no se pretende que este material
acompae a los lectores hasta el final del camino, sino slo que encienda el
fuego de la curiosidad y que pueda guiar los primeros pasos y que permita
que esta exploracin contine mucho ms de lo aqu planteado.
Una buena conclusin preliminar es que las opcines de ayuda incluidas en
MATLAB son una fuente muy valiosa para reproducir lo que ya sabemos
hacer con otras herramientas y aprender otras alternativas de resolver
problemas. Este material slo trata de poner orden en los primeros pasos,
esperamos que muchos ms sean dados a lo largo de los estudios de
licenciatura y deseablemente se conviertan en una herramienta indispensable
para el trabajo profesional. Si bien esperamos que este material pueda ser
cubierto de manera autocontenida, la experiencia de uno de nosotros (RQT)
nos obliga a advertir que la utilidad plena se dar como parte de un curso
formal.
Creemos que una de las virtudes de la formacin universitaria es la
estructura que se desarrolla en los individuos al estar expuestos al orden de
las matemticas, que tambin se puede obtener con las reglas de juegos y
con la programacin. La sinergia de la disponibilidad de computadoras, de
buenas herramientas de programacin y solucin de problemas, podran
conducir a una mejor formacin universitaria.
Esperamos que disfruten su experiencia con MATLAB, y que esta sea el
principio de un camino lleno de satisfacciones y placer para su formacin.
Agradecemos el tiempo, los comentarios y las correcciones de los revisores,
en particular a los acadmicos del CFATA, Dr. Miguel de Icaza Herrera y
Dr. Jos Luis Aragn Vera, al acadmico de la UAM-Azcapotzalco, Dr.
Ernesto Rodrigo Vzquez Cern y a la fsica Rosa Elena Lpez Escalera
Romano. De la misma manera, agradecemos las opiniones de los alumnos de
la Licenciatura en Tecnologa de la UNAM, generaciones 2009 a 2011.
Todos sus comentarios disminuyeron los errores y enriquecieron el texto,
pero los que permanecen son slo nuestra responsabilidad.

MATLAB para principiantes

Tabla de contenido
1

Introduccin..................................................................................................................9
1.1
MATLAB por primera vez .................................................................................9
1.2
Uso elemental de MATLAB ............................................................................ 11
1.3
La ayuda en MATLAB .................................................................................... 13
1.4
Definicin de variables..................................................................................... 14
1.5
Exhibicin de resultados .................................................................................. 15
1.6
Representacin de nmeros en MATLAB...................................................... 15
1.7
Guardar el trabajo ............................................................................................. 19
1.8
Ejercicios........................................................................................................... 20
Arreglos y matrices................................................................................................... 21
2.1
Construccin de arreglos de nmeros ............................................................. 22
2.2
Manipulacin de los nmeros en los arreglos................................................. 28
2.3
Operaciones con matrices ................................................................................ 31
2.4
Operaciones con arreglos ................................................................................. 36
2.5
Ejercicios........................................................................................................... 38
Programas (scripts) y funciones (functions)............................................................ 40
3.1
Programas (Scripts) .......................................................................................... 40
3.2
Funciones (Functions)...................................................................................... 41
3.3
Trabajo y mejora de programas (scripts) ........................................................ 43
3.4
Funciones de funciones .................................................................................... 45
3.5
Ejercicios........................................................................................................... 49
Control de flujo de programa ................................................................................... 50
4.1
Uso fundamental............................................................................................... 50
4.2
Ejemplo: Autmatas unidimensionales........................................................... 52
4.3
Ejemplo: Autmatas bidimensionales ............................................................. 54
4.4
Ejercicios........................................................................................................... 57
Mtodos numricos................................................................................................... 63
5.1
Mnimos cuadrados, modelo lineal.................................................................. 63
5.2
Promedio y desviacin estndar ...................................................................... 68
5.3
Algoritmo simplex............................................................................................ 71
5.4
Mtodo indirecto de solucin de ecuaciones simultneas ............................. 75
5.5
Races de polinomios (Mtodo de Laguerre).................................................. 78
5.6
Runge Kutta ...................................................................................................... 81
5.7
Descomposicin de LU .................................................................................... 86
5.8
Interpolacin suave (splines) ........................................................................... 90
Grficos ..................................................................................................................... 95
6.1
Dos dimensiones............................................................................................... 95
6.2
Tres dimensiones .............................................................................................. 98
6.3
Guardar imgenes ............................................................................................. 99
6.4
Ejercicios........................................................................................................... 99
Prcticas de buena programacin........................................................................... 102
7.1
Elegir vectores en lugar de bucles. ................................................................ 102
7.2
Evitar que los arreglos crezcan mientras se corre el programa. .................. 105
7.3
Escritura de MEX-File cuando los bucles son inevitables........................... 105
7.4
Evitar variables que cambian de tamao en grficas activas ....................... 105

MATLAB para principiantes

7.5
Acceso a archivos ........................................................................................... 106
7.6
Otras consideraciones..................................................................................... 108
7.7
Ejercicios......................................................................................................... 108
8
GUI .......................................................................................................................... 110
8.1
Ejemplo de script para FFT ........................................................................... 110
8.2
Ejemplo de function para FFT ....................................................................... 111
8.3
Ejemplo de GUI para FFT ............................................................................. 112
8.4
Construccin del archivo ejecutable.............................................................. 115
8.5
Ejercicios......................................................................................................... 116
9
Conexin con C....................................................................................................... 119
9.1
MATLAB Coder ............................................................................................ 119
9.2
MATLAB Compiler ....................................................................................... 124
10
Simulink .............................................................................................................. 126
10.1 Simulink y solucin de ecuaciones algebraicas............................................ 126
10.2 Simulink y solucin de ecuaciones diferenciales ......................................... 128
10.3 Simulink y solucin de sistemas de ecuaciones diferenciales ..................... 129
11
SimMechanics ..................................................................................................... 133
Apndice A. control de accesorios de PC...................................................................... 137
A.1 Instrucciones para el control de un micrfono................................................... 137
A.2 Instrucciones para el control de una cmara ...................................................... 139

MATLAB para principiantes

1 Introduccin
MATLAB es un software para computacin en ingeniera y ciencias. Nos ofrece un
poderoso lenguaje de programacin, una posibilidad de realizar y manipular grficas con
facilidad, adems de reunir conocimiento acumulado en estas reas de manera
estructurada y til.
MATLAB se centra en el cmputo y no en las matemticas, as que las expresiones y la
manipulacin simblica no son su fuerte, a excepcin de las empleadas con la
herramienta symbolic o con el programa MuPAD. Las soluciones son numricas e
inexactas, asociadas a los artificios del redondeo. Esto puede verse desde dos puntos de
vista, como un problema, al evidenciar el riesgo de errores ocultos en los resultados y
como una ventaja, ya que permite el clculo numrico con un conjunto de nmeros
diferente al de los nmeros reales.
Comparado con otros lenguajes de programacin numricos como C++ o FORTRAN,
MATLAB es mucho ms fcil de usar y est integrado con una biblioteca formada de una
gran cantidad de informacin, mdulos, programas, subrutinas, relacionadas con el
cmputo numrico.
La nica comparacin donde MATLAB queda en desventaja con respecto a C++ o
FORTRAN es en el rubro de velocidad de ejecucin, pero puede ser menos drstica con
buenas prcticas de programacin, como veremos aqu. MATLAB no es la herramienta
de eleccin para cmputo de alto desempeo (aunque probablemente s lo sea en el futuro
cercano) pero es una plataforma inmejorable para proyectos desde elementales hasta
intermedios y en muchos casos para probar lo que en otros lenguajes sera cdigo muy
elaborado o que requiere de demasiado tiempo de elaboracin.
MATLAB permite obtener una respuesta numrica a una expresin algebraica, de manera
similar a una calculadora, tambin permite obtener una aproximacin numrica a algunos
problemas donde la sustitucin no es posible, por ejemplo, el valor de E en la expresin

E02 E E tan E . Lo que consideramos como la solucin enfrenta dos dificultades; 1)


que MATLAB entienda una cosa diferente de lo que estamos pensando, en virtud de la
falta de dominio de la herramienta y 2) que el procedimiento emprendido sea adecuado
para alcanzar la solucin. Espero que este escrito ayude a aminorar el primer problema, el
segundo se logra con el dominio de los mtodos numricos y de la experiencia. No se
espera que MATLAB pueda resolver un problema que no se pueda resolver con papel,
lpiz y tiempo. En general se es ms exitoso, si antes de expresar el problema en
MATLAB, se ha expresado en papel y lpiz.

1.1

MATLAB por primera vez

Al iniciar MATLAB aparece el escritorio, Multipaneled desktop, con diversas reas de


trabajo, que se puede modificar al gusto de cada usuario, accin que no es necesaria en un
principio. La figura 1.1 ilustra las reas de trabajo, Command Window (elipse punteada)

MATLAB para principiantes

10

donde se escriben los comandos, inmediatamente frente al prompt >> (rectngulo


punteado) y donde aparecen las respuestas numricas.

prompt

Start

Figura 1.1 Multipaneled desktop en MATLAB.


MATLAB es un lenguaje de programacin que interpreta las instrucciones lnea por
lnea, a diferencia de otros lenguajes de programacin que compilan el programa total.
Esta es una afirmacin correcta en parte, ya que como veremos existen las funciones que
no se interpretan o incluso programas completos en MATLAB que pueden ser
ejecutables. Esta parte se aclarar al ver MEX files y GUI en los captulos 7 y 8.
Workspace (elipse continua) muestra las variables definidas e informacin al respecto; en
un principio est vaca, pero al definir variables o realizar operaciones se acumulan y se
pueden editar. Al hacer doble clic sobre la variable inicia un editor que permite su
visualizacin y edicin, siempre que sea menor a 65 536 renglones o columnas. En esta
misma rea se puede visualizar la carpeta en la que se est trabajando al seleccionar la
pestaa correspondiente a Current Directory, MATLAB solo ve el contenido de la
carpeta que est seleccionada. Para cambiar el directorio se emplea el acceso rpido
(circulo segmentado, arriba al centro).
Command History (rectngulo continuo) lista las acciones solicitadas en Command
Window, de la ms reciente a la ms antigua y se pueden pasar a la zona de trabajo
navegando por medio de las flecha en el teclado (arriba y abajo) o haciendo doble clic en
la lnea histrica deseada.
Start (rectngulo segmentado) es el puerto de entrada a muchas de las funciones de
MATLAB, herramientas de trabajo, ayudas y ms. Usualmente debe estar preparado para
pasar horas de sano entretenimiento en los ejemplos y guas de uso. Cuando se le ha
pedido a MATLAB que realice una actividad que toma tiempo, desaparece el prompt y a
la derecha de Start aparece la leyenda Busy, que indica la necesidad de tener paciencia. Si

MATLAB para principiantes

11

se desea cancelar el proceso se puede hacer presionando al mismo tiempo las teclas ctrl-c
restableciendo el prompt y aparece la leyenda Ready a la derecha de Start.
En clculo numrico elemental, un camino trivialmente simplista es usar una calculadora
cuando la tarea es muy simple, despus utilizar Excel si se requiere de grficas ms
elaboradas y finalmente C++ cuando se tienen en mente acciones no desarrollas por un
programa particular. El salto de una herramienta a la otra puede ser intimidante e incluso
limitante. Si quisiramos que MATLAB estuviera presente en esta evolucin, igualmente
puede ser una alternativa a cualquiera de las herramientas anteriores. Una de las
limitaciones para iniciar a usar MATLAB como calculadora (inicialmente y despus el
cielo es el lmite) es que no se parece a una. Superando esta diferencia, se puede
fcilmente superar las ventajas de Excel como hoja de clculo y de ah pasar a usar
MATLAB con ms provecho.

1.2

Uso elemental de MATLAB

Si se escribe una expresin vlida en el rea de Command Window, la respuesta aparece


de manera inmediata.
>> 5*3 (presionar la tecla de cambio de lnea, enter, )
ans =
15
>>

La multiplicacin de dos nmeros se realiza y el resultado se guarda en la variable ans.


El prompt indica que est listo para nuevas instrucciones.
>> 3^3
ans =
27
>>

La potencia es igualmente evidente, el resultado se escribe en la variable ans,


sustituyendo cualquier valor o contenido que tuviera anteriormente.
>> 1/0
Warning: Divide by zero.
ans =
Inf
>>

Aqu Inf es la manera de representar , que indica un nmero ms grande que


cualquiera que puede ser escrito y que en este caso resulto de intentar dividir el nmero
uno entre cero.
>> cos(pi/4)

MATLAB para principiantes

12

ans =
0.7071
>>

Aqu la funcin trigonomtrica est en radianes, pi representa el smbolo , medida del


permetro del crculo en funcin del dimetro. La misma funcin trigonomtrica en
grados donde el crculo tiene 360 grados se escribe cosd.
>> exp(i*pi/4)
ans =
0.7071 + 0.7071i
>>

Aqu i (tambin puede ser 1i, uno-i, que evita confusiones con la variable i)
representa a la raz cuadrada de menos uno 1 , unidad de los nmeros imaginarios. i
puede ser tambin una variable, as que no est de ms tener precauciones para no
cometer errores. En cuanto a la notacin exp(x) es la representacin de e x , donde e es
el nmero de Euler cuyo valor aproximadamente es 2.718281828.
>> 0/0
Warning: Divide by zero.
ans =
NaN
>>

Aqu NaN representa a un resultado indefinido, se form de Not a Number, no es un


nmero y aqu surge de intentar dividir cero entre cero.
>> (3-exp(log(3)))/3
ans =
1.4803e-016
>>

Aqu la respuesta algebraica esperada es cero, pero en virtud de que la aritmtica de


punto flotante realiza por aproximaciones los clculos, en su lugar aparece un nmero
muy pequeo, 1.4803 10-16 (1.4803e-016=1.4803E-016); los clculos en la
computadora producen errores, estos con la ventaja del punto flotante (notacin
exponencial) son muy pequeos. eps representa el valor del error mximo aritmtico
para el nmero uno en una mquina tpica que describe los nmeros en punto flotante con
64 bits y que es 2.2204 10-16; cualquier nmero mas pequeo que eps es indistinguible
del uno. Dicho de otra manera el siguiente nmero mayor que uno y distinguible de uno
en la mquina es 1+eps.
>> eps

MATLAB para principiantes

13

ans =
2.2204e-016
>>

Algunas
reservadas
log(x) palabras
es logaritmo
natural deenxMATLAB
log(x)
es
el
logaritmo
natural
log10(x) es el logaritmo
base de
10xde x
log10(x)
logaritmo
base 10cuya
de x tangente es x
atan(x) eseselelngulo
en radianes
atan(x)
en radianes
sinh(x) es el ngulo
seno hiperblico
decuya
x tangente es x
sinh(x)
es
el
seno
hiperblico
de
x
sqrt(x) raz cuadrada de x
sqrt(x) es la raz cuadrada de x

1.3

La ayuda en MATLAB

MATLAB contiene un enorme material que es imposible dominarlo todo y menos an


recordarlo todo, por lo que es importante aprenda a aprender y recordar de manera
eficiente. No es por accidente que al iniciar el programa, la primera lnea invite a explorar
el material de ayuda que contiene:
To get started, select MATLAB Help or Demos from the Help menu.
>>

El texto subrayado es una liga directa a la ayuda en MATLAB, que abre una ventana
como la mostrada en la figura 1.2.
En la figura 1.2 se ve la ventana de ayuda; en el panel izquierdo est el navegador, en el
que se puede explorar por contenido, por ndice, hacer bsquedas o explorar las
demostraciones. Aqu se muestra el navegador por contenido (elipse continua), el libro de
MATLAB (elipse segmentada), las funciones por categora (elipse punteada) y las
funciones matemticas elementales. En el panel derecho se ve la lista de funciones
exponenciales, haga doble clic en cualquier nombre en azul para ver la ayuda preparada
en cuanto a su definicin y uso.

MATLAB para principiantes

14

Figura 1.2 Ventana de ayuda de MATLAB.


Muchas veces no se recuerda o conoce el nombre de la funcin que hace lo que
buscamos, para esas ocasiones la bsqueda alfabtica de funciones puede ser til. Si
recordamos el nombre de la funcin pero no su uso, podemos emplear Command Window
y teclear help y el comando del que requiere ayuda, por ejemplo help log y aparece
en el Command Window la ayuda al respecto, usualmente simplificada.

1.4

Definicin de variables

Se pueden almacenar las variables usadas en el clculo de las expresiones


>> a=exp(1)
a =
2.7183
>>

Aqu a tiene el valor de la constante de Euler.


>> c=a*b
??? Undefined function or variable 'b'.
>>

Aqu intentamos guardar en la variable c el resultado de multiplicar el nmero de Euler


(a) por el contenido de b. Como no habamos definido previamente el valor de b se nos
indica. El prompt regresa en espera de una instruccin vlida. La multiplicacin a*b
tiene la notacin correcta, (a)(b) no es aceptable como multiplicacin, como tampoco

MATLAB para principiantes

15

lo es ab ni a.b; estos dos ltimos casos corresponden a otras variables, la variable ab y


la componente b del objeto a (a.b).
A continuacin aparecen algunas convenciones tiles que hay que tener en cuenta: los
comentarios que ignora el intrprete de MATLAB, la asignacin de caracteres
alfanumricos a las variables y la continuacin de comandos en varias lneas. Los
caracteres que hay despus del smbolo de porcentaje (%) son comentarios y aparecen
en color verde en el editor de MATLAB adems de que no son interpretados. En el libro
los comentarios aprarecen en tono gris.
>> % este es un comentario, no hay ejecucin
>> x=a^2; % ; al final de la instruccin evita
resultado en Command Window
>>
y='letreros';%
los
apostrofes
(')
definen
alfanumricos
>> z=1+2+3+...
4+5+6 % ... es una continuacin de lnea

que
los

aparezca

el

caracteres

z =
21
>>

1.5

Exhibicin de resultados

Los resultados numricos aparecen con cuatro decimales, pero se pueden exhibir con 15
decimales (format long), en forma fraccional aproximada (format rat) o en
formato hexadecimal (format hex). La palabra format sin argumento regresa a la
forma predeterminada.
>> P= pi
P =
3.1416
>> format long
>> P
P =
3.141592653589793
>> format rat
>> P
P =
355/113
>> format
>>

1.6

Representacin de nmeros en MATLAB

La representacin de nmeros en base decimal se basa en escribirlos como una suma de


potencias de 10. Por ejemplo, para el nmero 273.375

MATLAB para principiantes

16

273.375 2x10 2 7 x101 3x10 0 3x10 1 7 x10 2 5x10 3


Esta representacin es tan comn e intuitiva que no abundaremos en ella, pero la
representacin de este mismo nmero en base binaria y hexadecimal es interesante de
recordar.

273.375 D 100010001.011B 1x 28 1x 2 4 1x 2 0 0 x 2 1 1x 2 2 1x 2 3
o
273.375 D 111.6 H 1x16 2 1x161 1x16 0 6 x16 1
Donde los subndices D, B y H se refieren a decimal, binario y hexadecimal,
respectivamente. Binario y hexadecimal son intercambiados fcilmente si agrupamos los
binarios en 4 nmeros, partiendo del punto. En este ejemplo: 0001 0001 0001.0110B, que
son 1 1 1.6H
Decimal
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15

Binario
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

Hexadecimal
0
1
2
3
4
5
6
7
8
9
a
b
c
d
e
f

MATLAB tiene una representacin de los nmeros en notacin binaria de 64 bits que
cumple la norma IEEE 754 y que es:

(1)s 2( 1022 ) ( f ) , si e = 0
(1) s 2 ( e1023 ) (1 f ) , si e = [1, 2046]
Representacin especial, si e = 2047
donde s representa al signo del nmero y se representa con un bit 0 o 1.
e representa al exponente del nmero y se define con 11 bits que cubre del entero decimal
1 al 2046, en cuyo caso se llaman nmeros normales. En caso de que e sea cero su

MATLAB para principiantes

17

representacin se denomina nmero subnormal y en tal caso el trmino (1+f) se sustituye


slo por f. En caso de que e sea 2047 se reserva para representaciones especiales tales
como NaN o inf.
f representa a la mantisa del nmero y est formada por 52 bits, lo que produce nmeros
52

desde el nmero decimal 2 52 al nmero

; tambin puede ser cero y en tal caso el

n 1

nmero es una potencia de 2.


La siguiente tabla ilustra los nmeros en MATLAB de acuerdo con la norma IEEE 754,
en particular los valores para s, e y f.
Nombre

Decimal aproximado

Hexadecimal

-inf
-realmax=
(-)(2^1023)(1+
2^-1+2^-2+)
(-)(2^1023)(1)
-1=(-)(2^0)(1)
-realmin=(-)(2^1022)(1)
0
eps(0)=(+)
(2^-1022)(2^-52)
realmin=2^-1022
realmin+
eps(realmin)
1=(+)(2^0)(1)
3=(+)(2^1)(1+.5)

--------------------1.797693134862316e+308

fff 0000000000000
ffe fffffffffffff

1
1

2047
2046

pi
(+)(2^1023)(1)
realmax=
(+)(2^1023)(1+
2^-1+2^-2+)
Inf=realmax+
eps(realmax)
NaN

3.141592653589793
8.988465674311580e+307
1.797693134862316e+308

52

n 1

-8.988465674311580e+307
-1
-2.225073858507201e-308

ffe 0000000000000
bff 0000000000000
801 0000000000000

1
1
1

2046
1023
1

0
0
0

000 0000000000000
000 0000000000001

0
0

0
0

4.940656458412465e-324
2.225073858507201e-308
2.225073858507202e-308

001 0000000000000
001 0000000000001

0
0

1
1

1
3

3ff 0000000000000
400 8000000000000

0
0

1023
1024

1024
2046
2046

0.57079
0

400 921fb54442d18
7fe 0000000000000
7fe fffffffffffff

0
0
0

2 52
2 52
2 1
52

2
n 1

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

7ff 0000000000000

2047

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

fff 8000000000000

2047

.5

Los nmeros reales son necesarios para las operaciones aritmticas; y acceder a ellos
permite disponer de un continuo de nmeros, que se pueden visualizar como cualquier
punto de la recta numrica, no as el conjunto de nmeros que se puede representar en
MATLAB, que es diferente en dos aspectos fundamentales:
1. Existen vacos entre los nmeros; qu tan grande es este vaco depende del nmero en
cuestin.
2. No es posible representar de manera exacta a todos los nmeros reales.
Por ejemplo los nmeros reales entre 72057594037927932 y 72057594037927944 se
representan por el mismo nmero en MATLAB (4370000000000000H) =

MATLAB para principiantes


(+)2^(416^2+316+7-1023)(1+0),
72057594037927936.

18
que

slo

es

correcto

para

el

nmero

En el siguiente ejemplo, al que se puede regresar despus de cubrir el captulo 3, permite


obtener la representacin binaria de cualquier nmero real en notacin extendida, y se
basa en la divisin sucesiva de potencias de 2. Enseguida crea un vector para almacenar
las potencias y exhibe el nmero. La lnea con la instruccin
(KKKL(a(a>=0)+1)=1;) indica que el vector KKKL en su posicin x tomar el valor
1, donde x es el valor que tiene el vector a sumndole 1, slo cuando a es mayor igual a
0. En las posiciones donde a<0 se deja el valor que KKKL ya tena, en este caso cero.
% Representacin binaria de un nmero
%
% Formato: [bina]=detobi(nmero, resolucin)
%
% Ejemplo: A=detobi(73.02,20)
%
% Se busca el binario de 73.02 con una representacin de 20
% bits
function [bina]=detobi(numero,representacion)
m=1;
while numero>2^-representacion;
a(m)=floor(log(numero)/log(2));
numero=numero-2^a(m);
m=m+1;
end
if max(a)>0
ndi1=max(a)+1;
else
ndi1=0;
end
if min(a)<0
ndi2=min(a);
else
ndi2=0;
end
KKKL=zeros(1,ndi1);KKKR=zeros(1,abs(ndi2));
KKKL(a(a>=0)+1)=1;KKKR(abs(a(a<0)))=1;
resss=[num2str(KKKL),'.',num2str(KKKR)]
format long
bina=sum(10.^a);
Un ejemplo vvido de la importancia del orden de las operaciones y de la representacin
numrica en MATLAB se puede ver en siguiente ejemplo. Hallar los valores de n tales
que

MATLAB para principiantes

19

n 1
f (n ) 1 n
1 0
1.1
n

El problema es que si desarrollamos el parntesis, resulta que f(n) es cero para cualquier
valor de n. MATLAB, sin embargo, realiza las operaciones en el orden de su prioridad,
primero potencia, despus multiplicacin y divisin y finalmente suma y resta, (los
parntesis tienen preferencia sobre el orden de prioridad). En este caso se sumar n+1
antes de dividir entre n, despus se resta el uno, y todo se multiplica por n, y lo que
resulte se resta al uno. Como resultado, entonces, de este orden de operaciones y de la
representacin numrica, f(n) no vale cero para toda n.
En MATLAB el cdigo para ilustrar la funcin anterior es el siguiente, donde eps se
emplea para aumentar y normalizar la diferencia con el cero.
n=1:500;
f=(1-n.*((n+1)./n-1))./eps(n);
plot(n,f,'*')

Figura 1.3 Diferencia artificialmente introducida por MATLAB por el orden de las
operaciones, solo las n que son potencias de 2 dan cero para la funcin f(n).

1.7

Guardar el trabajo

Si se desea guardar las variables se procede por File-Save workspace as y se guarda con
el nombre deseado. Para guardar la historia de comandos se procede a seleccionarlos en
el panel de Command History y con el botn derecho del ratn se selecciona Create MFile y aparece otra ventana con la historia de los comandos y ah se puede guardar su
contenido en un archivo. Ms adelante se ver cmo generar las figuras, las cuales se
pueden guardar en formatos muy diversos. *.fig es el formato nativo de MATLAB, es
modificable y es el ms conveniente ya que guarda los valores que lo generaron. *.eps
es postscript y se pueden anexar a documentos Word y la calidad no cambia al cambiar el
tamao. *.jpg es el ms comn pero la calidad es muy limitada y disminuye
rpidamente al cambiar de tamao. Este comentario se basa en que las imgenes bitmap
(como las jpg) fundamentan su calidad en el tamao del pixel. Las imgenes vectoriales
basan su calidad en frmulas que describen los objetos as que se pueden ampliar o
reducir sin alterar la calidad.

MATLAB para principiantes

1.8

Ejercicios

1. Evale las siguientes expresiones en MATLAB.


e
a) A e

1
b) B cos 1
3

c) C log e

7
d) determine qu nmero del conjunto es primo {0,1,2,3,4,5,6,7,8,9,10,97,99}
Respuestas:
a) A=3.8143e+006
b) B=1.9106 [rad]
c) C=0.1718
d) [2, 3, 5, 7, 97]

20

También podría gustarte