Sei sulla pagina 1di 17

INTRODUCCION A

MATLAB
Fernando Tadeo Rico
Dpto de Ingeniera de Sistemas y
Automtica
Facultad de Ciencias
Universidad de Valladolid
fernando@autom.uva.es
Introduccin
Una de las razones por las que Matlab se ha convertido en una herramienta tan popular dentro
de las Ciencias e Ingenieras son
Su capacidad de realizar operaciones con matrices de forma sencilla. As podrn realizarse
operaciones con matrices sumas! restas! multiplicaciones! inversiones! etc." sin necesidad
de preocuparse por programar bucles que recorran los elementos de las matrices.
#i siquiera es necesario definir las dimensiones de las matrices utilizadas. Adems estas
dimensiones pueden alterarse si es necesario.
$resenta una gran facilidad de crear grficos sencillos! e interfaces de usuario
%&isten un gran n'mero de bibliotecas adicionales de funciones toolbo&es"
Comandos bsicos de Matlab
(a forma de definir una matriz no puede ser ms sencilla) basta definir sus elementos entre
corchetes. $or e*emplo! la matriz de dos filas + tres columnas)

=
6 5 4
3 2 1
A
puede definirse en Matlab con las siguientes tres lneas de c,digo)
A=[1 2 3
4 5 6]
Alternativamente la definici,n de la matriz se puede realizar de una forma ms compacta!
separando cada fila por un punto + coma! como en el siguiente e*emplo)
A=[1 2 3; 4 5 6]
Una vez definida la matriz podemos operar con ella. As podemos evaluar su traspuesta)
Operacin Resultado
C=A C=[1 4
2 5
3 6]
$odemos multiplicarla por un escalar)
Operacin Resultado
C=3*A C=[3 12
6 15
9 18]
Muchas veces se traba*ar con matrices de un solo elemento escalares"! que pueden definirse
prescindiendo de los corchetes)
a=1
-ebe notarse que por defecto Matlab distingue entre ma+'sculas + min'sculas! con lo que la
matriz A es distinta de la matriz a.
.
%n cuanto a los valores num/ricos en que se pueden definir los elementos de la matriz! se
pueden definir utilizando notaci,n decimal convencional punto fi*o"! + con coma flotante
factor de escala en potencia de 01"! si se desea. $or e*emplo! es una definici,n vlida)
Operacin Resultado
C=[-1.345 4.23E-1
2E-2 -Inf]
C =
-1.3450 0.4230
0.200 Inf
Aunque se muestren en pantalla con menor n'mero de cifras! los elementos de las matrices se
almacenan en aritm/tica de punto flotante de doble precisi,n! inclu+endo adems valores para
infinito Inf"! infinito negativo -Inf" + valores inciertos NaN". (as operaciones se realizan
tambi/n en doble precisi,n. Si se desea visualizar ma+or n'mero de cifras significativas
puede utilizarse la instrucci,n format on!! que hace que a partir del momento en que se
e*ecuta los n'meros aparezcan con 02 cifras significativas! en vez de las 2 por defecto)
Operacin Resultado
format on!
C=[-1.345"8 4.23E4
2E-3 -Inf]
C =
1.0#$004 *
-0.0001345"800000 4.23000000000000
0.00000020000000 -Inf
Adems de asignar valores concretos a los distintos elementos de las matrices! pueden
generarse de forma automtica valores para crear matrices de gran tama3o. Aparte de generar
los elementos mediante lazos! frecuentemente se utilizan los comandos %#ro&! on#& +
o!&'a(#! + el operador de bucle implcito )")
- %l comando %#ro&*m+n, genera una matriz de m filas + n columnas con todos los
elementos iguales a 1. 4esulta mu+ 'til para inicializar matrices que luego se van a
rellenar de valores.
Operacin Resultado
C=%#ro&*2+3, C =
0 0 0
0 0 0
- %l comando on#&*m+n, genera una matriz de m filas + n columnas con todos los
elementos iguales a 0. 5bservar que si se desea inicializar a otro valor! basta
multiplicar por un escalar que sea el propio valor)
Operacin Resultado
C=on#&*2+3, C =
1 1 1
1 1 1
C=5*on#&*2+3, C =
5 5 5
5 5 5
- %l operador de bucle implcito ) permite generar vectores de valores sucesivos con un
incremento constante. (a utilizaci,n es -n-(-o)-n(r#m#nto)f-na. $or defecto
-n(r#m#nto vale 1! con lo que el comando se utilizara como -n-(-o)f-na
6
Operacin Resultado
C=1)2)9 C =
1 3 5 " 9
- %l comando o!&'a(# en cambio genera vectores espaciados logartmicamente! mu+
'tiles para generar barridos de frecuencia logartmicos. (a utilizaci,n es
o!&'a(#*-n-(-o+ f-na+ n.m#ro/'.nto&,. $or defecto n.m#ro/'.nto& es 50.
Operacin Resultado
C=o!&'a(#*1+3+3, C =
10 100 1000
7asta ahora hemos visto directamente en pantalla el resultado de todas las operaciones. Sin
embargo esto puede no ser deseable cuando las matrices tienen muchos elementos. Si lo 'nico
que se desea es asignar el resultado de una operaci,n a una variable! para luego seguir
operando con ella! puede a3adirse un punto + coma ;" final de la instrucci,n + el resultado no
se mostrar en pantalla)
Operacin Resultado
C=o!&'a(#*1+3+200,; C=
0na1a #n 'antaa+ '#ro &# a&-!nan o&
2aor#& a C 3
$ara concluir esta parte mencionaremos otra gran venta*a de Matlab) (os elementos de las
matrices pueden ser valores comple*os! pudiendo operarse con estas matrices comple*as de la
misma forma que con las puramente reales. $or e*emplo! puede definirse la matriz comple*a
*
8
8
2
6
A

=
como)
Operacin Resultado
C=[3$4- ; 5$44] C =
3.0000 $ 4.0000-
5.0000 $ 4.0000-
(as matrices formadas por las partes reales e imaginarias pueden e&traerse fcilmente con los
comandos r#a e -ma!. %l valor absoluto puede recuperarse con a5& + el ngulo en radianes
con an!#.
Operacin Resultado
C=[3$4- ; 5$44];
Cr=r#a*C,
C-=-ma!*C,
Cmo1=a5&*C,
Can!#=an!#*C,
Cr =
3
5
C- =
4
4
Cmo1 =
5.0000
6.4031
Can!# =
0.92"3
0.6"4"
8
Sistema de ayuda en Matlab
Como se ha podido comprobar Matlab dispone de muchos funciones + operadores. Adems!
como se ver ms adelante! el a3adir funciones nuevas es mu+ sencillo. $ara facilitar el
traba*o + no tener que recordar de memoria el nombre de todas las funciones disponibles
Matlab dispone de un sistema de a+uda en lnea de comandos bastante potente aparte de la
a+uda disponible en las 'ltimas versiones en formato 79M( o $-: en la ventana 7elp de la
aplicaci,n".
Si se desea conocer las operaciones que realiza una funci,n determinada! cules son los
argumentos de entrada + salida! + otras funciones parecidas basta pedir a+uda anteponiendo al
nombre de la funci,n la palabra 6#')
Operacin Resultado
6#' o!&'a(# 789:;ACE 7o!ar-t6m-(a< &'a(#1 2#(tor.
789:;ACE*11+ 12, !#n#rat#& a ro= 2#(tor of 50 o!ar-t6m-(a<
#>.a< &'a(#1 'o-nt& 5#t=##n 1#(a1#& 10?11 an1 10?12. If 12
-& '-+ t6#n t6# 'o-nt& ar# 5#t=##n 10?11 an1 '-.

789:;ACE*11+ 12+ N, !#n#rat#& N 'o-nt&.

:## a&o 7IN:;ACE+ ).
Si el problema es que no estamos seguros de qu/ funci,n es la que ha+ que utilizar puede
utilizarse el comando oo@for 'aa5ra/(a2#! que muestra en pantalla aquellas funciones que
contienen 'aa5ra/(a2# en la primera lnea de su descripci,n)
Operacin Resultado
oo@for o!ar-t6m 789:;ACE 7o!ar-t6m-(a< &'a(#1 2#(tor.
789 Nat.ra o!ar-t6m.
78910 Common *5a&# 10, o!ar-t6m.
7892 Aa&# 2 o!ar-t6m an1 1-&&#(t foat-n! 'o-nt n.m5#r.
AEBA7N 7o!ar-t6m of 5#ta f.n(t-on.
9ACCA7N 7o!ar-t6m of !amma f.n(t-on.
789C Catr-D o!ar-t6m.
$or 'ltimo si lo que se desea es comprobar qu/ funciones ha+ disponibles en alguna categora
puede e*ecutarse el comando 6#' sin argumentos)
Operacin Resultado
6#'
EE7; to'-(&)
mata5F!#n#ra - 9#n#ra '.r'o&# (omman1&.
mata5Fo'& - 8'#rator& an1 &'#(-a (6ara(t#r&.
mata5Fan! - ;ro!ramm-n! an!.a!# (on&tr.(t&.
mata5F#mat - E#m#ntar< matr-(#& an1 matr-D man-'.at-on.
mata5F#f.n - E#m#ntar< mat6 f.n(t-on&.
mata5F&'#(f.n - :'#(-a-%#1 mat6 f.n(t-on&.
mata5Fmatf.n - Catr-D f.n(t-on& - n.m#r-(a -n#ar a!#5ra.
....
2
(a a+uda de cualquiera de esas categoras puede obtenerse de forma similar a c,mo se
realizaba para una funci,n cualquiera de Matlab. $or e*emplo! la lista de funciones en la
categora matlab;ops puede obtenerse con 6#' o'&)
Operacin Resultado
6#' o'& 8'#rator& an1 &'#(-a (6ara(t#r&.

Ar-t6m#t-( o'#rator&.
'.& - ;.& $
.'.& - Gnar< '.& $
m-n.& - C-n.& -
.m-n.& - Gnar< m-n.& -
mt-m#& - Catr-D m.t-'< *
t-m#& - Arra< m.t-'< .*
m'o=#r - Catr-D 'o=#r ?
....
Operaciones bsicas con matrices en Matlab
Matlab dispone de un buen n'mero de operadores capaces de traba*ar con matrices.
$resentamos a continuaci,n los ms usuales. Una lista ms detallada aparece en el ap/ndice.
(os operadores suma $" resta -" + multiplicaci,n *" de matrices tienen la interpretaci,n
usual en t/rminos de operaciones matriciales
Operacin Resultado
H= [1 2 3]$[2 4 6] H =
3 6 9
Operacin Resultado
H= [1 2 3]*[2; 4; 6] H =
28
Un caso particular se presenta cuando uno de los operandos es una matriz + el otro es un
escalar. %n tal caso la operaci,n se realiza sobre cada uno de los elementos de la matriz!
aplicando el operador escalar elemento a elemento)
Operacin Resultado
-<=0 . 6>?. -<
?0 1 0
Operacin Resultado
H=3*[1 2 3]-2 H=
1 4 "
Si lo que se desea es multiplicar una matriz por ella misma un n'mero de veces se dispone del
operador e&ponenciaci,n ?")
Operacin Resultado
H=[1 2; 3 4]?3 H =
3" 54
81 118
@
Se dispone tambi/n de dos operadores para Adivisi,nB de matrices! entendiendo por tal la
soluci,n de un sistema de ecuaciones. (os operadores son)
- -ivisi,n por la derecha I") Si se calcula J=AIA! J ser el vector soluci,n del sistema
de ecuaciones) A A * J = .
Operacin Resultado
H=[1; 2] I[1 2; 3 4] H =
1 0
- -ivisi,n por la izquierda ;") Si se calcula J=AFA! J ser el vector soluci,n del sistema
de ecuaciones) A J * A = . 5bservar que! con escalares! esta divisi,n no es la usual) se
divide el operando de la derecha entre el de la izquierda.
Operacin Resultado
H=[1 2; 3 4]F[1; 2] H =
0
0.5000
%n muchos casos lo que se desea es realizar una operaci,n determinada sobre cada elemento
de una matriz. %n tal caso es 'nicamente necesario anteponer al correspondiente operador el
smbolo de punto ." para que Matlab realice la correspondiente operaci,n elemento a
elemento.
Operacin Resultado
H=[1 2 3].*[1 2 3] H=
1 4 9
Operacin Resultado
H=[1 2 3].?[1 2 3] H=
1 4 2"
Adems de estos operadores bsicos se dispone de un gran n'mero de funciones en Matlab
para realizar operaciones ms comple*as. Adems! como se ver posteriormente! es
relativamente sencillo! a3adir funciones nuevas a las disponibles. $or e*emplo pueden
evaluarse funciones trigonom/tricas con las funciones &-n! (o&! tan! atan tangente inversa"!
&-n6 seno hiperb,lico"! (o&6! tan6! etc.! de la siguiente forma)
Operacin Resultado
H=&-n*'-I2, H=
1
5bservar que el argumento de las funciones trigonom/tricas se entiende que est en radianes
+ el n'mero est definido en la variable pi. %ntonces si se desea realizar operaciones con
grados bastar multiplicar los grados por '-I180)
Operacin Resultado
H=&-n*45*'-I180, H=
0."0"1
C
%s importante tener en cuenta que estos operadores pueden traba*ar tambi/n con vectores!
evalundose la funci,n en cada uno de los valores. %sto es mu+ 'til para generar se3ales. $or
e*emplo 011 puntos de una se3al sinusoidal de frecuencia 01 ciclosDseg se puede generar
como)
Operacin Resultado
t=1)100;
H=&-n*10*'-I180*t,;
$or supuesto e&isten muchos mas operadores implementados en Matlab! que pueden verse
pidiendo a+uda con 6#' #f.n funciones matemticas elementales"! &'#(f.n funciones
matemticas avanzadas"! matf.n funciones matemticas especiales para operar sobre
matrices"! datafun anlisis estadstico + espectral de se3ales"! 'o<f.n funciones para operar
con polinomios! que describiremos en el siguiente apartado"! etc.
-estacaremos aqu 'nicamente la evaluaci,n de logaritmos naturales o!"! logaritmos
decimales o!10"! + la e&ponenciaci,n #D'")
Operacin Resultado
H= o!10*100,
E= o!*100,
K= #D'*1,
H =
2
E =
4.6052
K =
2."183
$ara concluir esta secci,n debemos mencionar que las operaciones sobre matrices se pueden
aplicar tambi/n a matrices comple*as! con la misma interpretaci,n.
Operaciones bsicas con polinomios en Matlab
$ara traba*ar con un polinomio en Matlab basta con crear un vector que contenga sus
coeficientes en potencias decrecientes de la variable independiente. As el polinomio
5 . 0 D 2 D , D * !
2
+ = se creara de la siguiente forma)
Operacin Resultado
!=[1 2 0.5] !=
1.0000 2.0000 -0.5000
Una vez creado el polinomio e&isten comandos para realizar distintas operaciones)
puede calcularse el valor del polinomio en un punto 'o<2a"! evaluar sus races de forma
num/rica root&" o calcular su derivada respecto a la variable independiente 'o<1#r")
Operacin Resultado
2aor='o<2a*!+1,
r=root&*!,
2aor =
2.5000
r =
E
6='o<1#r*!, -2.224"
0.224"
6 =
2 2
Adems pueden realizarse operaciones bsicas entre polinomios) multiplicaci,n de
polinomios (on2" + divisi,n de polinomios 1#(on2"
Operacin Resultado
6=[1 2]
@=(on2*!+6,
6=
1.0000 2.0000
@ =
2 6 3 -1
Un caso importante se presenta cuando tenemos un cociente de polinomios en una
variable representaci,n que se utiliza! por e*emplo! en teora de sistemas! en procesado de
se3ales! en automtica! etc.". %n tal caso numerador + denominador se mantienen como
estructuras independientes cu+o cociente forma un sistema pudiendo realizarse por e*emplo
una descomposici,n en fracciones parciales utilizando el comando r#&-1.#. %ste comando
devuelve como resultado vectores columna con los residuos los numeradores"! los polos las
races del denominador" + el t/rmino directo de la descomposici,n. $or e*emplo)
1
1 D
4
2 D
9
2 D 3 D
1 D 2 D
2
2
+
+
+
+

=
+ +
+
Operacin Resultado
[r#&-1.o&+'oo&+1-r#(to]=r#&-1.#*[1 -2 1]+[1 3 2], r#&-1.o& =
-9
4
'oo& =
-2
-1
1-r#(to =
1
Cuando aparecen races del denominador repetidas se generan los residuos para
potencias crecientes del monomio correspondiente al polo. $or e*emplo)
( )
1
1 D
1
1 D
1
1 D 2 D
1 D 3 D
2 2
2
+
+

+
+
=
+ +
+ +
Operacin Resultado
[r#&-1.o&+'oo&+1-r#(to]=r#&-1.#*[13 1]+[1 2 1], r#&-1.o& =
1
-1
'oo& =
-1
-1
1-r#(to =
1
F
Representaciones grficas en Matlab
7asta ahora hemos visto c,mo se pueden realizar operaciones con Matlab. Ahora vamos a ver
c,mo pueden utilizarse las capacidades grficas que proporciona Matlab para visualizar los
resultados + poder analizarlos de una forma sencilla.
%l comando bsico para representaciones grficas en Matlab es 'ot. (a forma de utilizarlo no
puede ser ms sencilla) Si lo que se desea es dibu*ar un vector basta incluir como argumento
entre par/ntesis el vector a representar. Se abre entonces una ventana que dibu*a el vector) en
abscisas se indica el ndice correspondiente del elemento de la matriz + en ordenadas su valor.
Operacin Resultado
t=0)0.1)10;
H=(o&*t,;
'ot*H,
0 20 40 60 80 100 120
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
%n el caso en que se desee representar varios vectores almacenados en una misma matriz es
necesario tener en cuenta que se representa cada columna de la matriz en un color. $or lo
tanto ha+ que asegurarse que las variables a representar aparezcan como columnas. $ara ello
puede ser necesario trasponer la correspondiente matriz)
Operacin Resultado
t=0)0.1)10;
H=[(o&*t,; &-n*t,];
'ot*H,
0 20 40 60 80 100 120
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Generalmente se desea que el e*e de abscisas aparezca en una determinada escala. $ara ello
puede a3adirse como primer argumento un vector que contenga los valores que corresponden
a cada ndice de la matriz)
Operacin Resultado
01
t=0)0.1)10;
H=[(o&*t,; &-n*t,];
'ot*t+H,
0 2 4 6 8 10
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Una vez realizada la correspondiente grfica pueden a3adirse ttulos t-t#" + etiquetas en los
e*es H Da5#" e I <a5#")
Operacin Resultado
t=0)0.1)10;
H=[(o&*t,; &-n*t,];
'ot*t+H,
t-t#*L9rMf-(a 1# #4#m'oL,
Da5#*LB-#m'oL,
<a5#*LCa!n-t.1L,
0 2 4 6 8 10
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Tiempo
M
a
g
n
i
t
u
d
Grfica de ejemplo
A veces las representaciones grficas se visualizan me*or en escala logartmica generalmente
cuando ha+ valores de magnitudes de ,rdenes mu+ diferentes". $ara ello en Matlab se dispone
de las funciones &#m-o!D escala logartmica en H + lineal en I"! &#m-o!< escala lineal en
H + logartmica en I" + o!o! escala doblemente logartmica".
5tro comando 'til para representaciones grfica en Matlab es &.5'ot. Con este comando en
una misma ventana pueden representarse varias grficas con escalas diferentes. (a forma de
operar es la siguiente) con &.5'ot*m+n+-, la ventana quedara dividida en m particiones
horizontales + n verticalesJ la siguiente grfica se realizara en la partici,n n'mero -!
contndose consecutivamente desde la primera fila)
Operacin Resultado
00
t=0)0.1)10;
H=(o&*t,;
E=&-n*t,;
&.5'ot*2+2+2,;
'ot*t+H,
t-t#*N2#(tor H,
&.5'ot*2+2+3,;
'ot*t+E,
t-t#*N2#(tor E,
0 5 10
-1
-0.5
0
0.5
1
vector D
0 5 10
-0.1
-0.05
0
0.05
0.1
vector E
5tro comando 'til a la hora de realizar representaciones grficas es 6o1. $or defecto
cuando se realiza una grfica se destru+e la anterior que hubiera en la ventana. Una vez
activado el comando con 6o1 on se superpondrn las grficas en la ventana actual!
modificando la escala de los e*es si fuera necesario. $ara desactivar la superposici,n puede
utilizarse 6o1 off. Si se ha seleccionado una partici,n de la ventana con &.5'ot el
funcionamiento es similar! manteniendo lo que estuviera en la partici,n correspondiente!
debiendo e*ecutarse el comando 6o1 on por cada partici,n a mantener.
Una vez visto c,mo pueden generarse representaciones grficas en Matlab vamos a ver
c,mo podemos tener diferentes ventanas grficas. $ara ello se utiliza el comando f-!.r#.
Como tal! el comando f-!.r# sin argumentos crea una ventana nueva! que pasa a ser la activa
aquella donde se aplicarn los siguientes comandos grficos". A cada ventana que se crea se
le asigna un n'mero de forma sucesiva! comenzando en 0"! de manera que puede
seleccionarse como ventana activa cualquier otra ventana previamente creada a3adiendo el
n'mero de ventana como argumento) f-!.r#*N.m#ro/1#/2#ntana,; si no e&istiera una
ventana con ese n'mero! se creara.
0.
Programacin en Matlab
7asta ahora se ha mostrado c,mo puede utilizarse Matlab de forma interactiva desde la lnea
de comandos. Sin embargo! la potencia de Matlab se consigue con la facilidad que presenta
para escribir + depurar programas que realicen determinadas tareas.
(a forma ms sencilla de escribir un programa en Matlab es generando un fichero de
comandos. $ara ello basta escribir un fichero de te&to con las instrucciones que escribiramos
en la lnea de comandos + grabarlo con e&tensi,n .m. en un directorio que sea accesible a
Matlab. $ara e*ecutarlo basta escribir su nombre en la lnea de comandos! e*ecutndose las
lneas como si se escribieran en la lnea de comandos. (a 'nica diferencia es que los
comandos que se e*ecutan no aparecen en pantalla! salvo que se previamente se e*ecute #(6o
on.
7emos dicho que los ficheros a e*ecutar deben estar en directorios accesibles a Matlab) pero
Kcules son esos directoriosL Aparte del directorio de traba*o actual que puede visualizarse
con (1 + cambiarse con (1 n.#2o/1-r#(tor-o"! Matlab guarda en memoria las tra+ectorias de
aquellos directorios que le indiquemos! donde ha+a ficheros de Matlab. #ormalmente estas
tra+ectorias se definen en el fichero mata5r(.m! pero se pueden cambiar durante la
e*ecuci,n. $ara ello puede utilizarse la opci,n de men' File->Set Path o utilizar el
comando 'at6 en la lnea de comandos)
Al e*ecutar cualquier comando Matlab consulta primero si forma parte de las funciones
predefinidas en Matlab! luego si est en el directorio actual + finalmente si e&iste en alguno de
los directorios de la tra+ectoria en 'at6. Muchos errores ocurren por e&istir ficheros con el
mismo nombre en varios directorios. $ara aclarar cul es el comando que se e*ecuta puede
consultarse con =6-(6)
Estructuras de seleccin
Muchas veces se desea e*ecutar un fragmento de c,digo 'nicamente si se cumple una
determinada condici,n. $ara ello puede utilizarse la instrucci,n -f...#&#...! con la siguiente
estructura)
if condicion
instrucciones1
else
instrucciones2
end
Si (on1-(-on es cierto se e*ecuta el bloque de instrucciones -n&tr.((-on#&1J si no se e*ecuta
el bloque de instrucciones -n&tr.((-on#&2! tal + como se vio en el captulo de Algortmica.
(a forma ms sencilla de escribir una condici,n en Matlab ser comparando una variable con
otra variable o una constante. $ara ello pueden utilizarse los siguientes operadores de
comparaci,n)
Igual que ==
-istinto que O=
06
Menor que 0
Ma+or que 3
Menor o igual que 0=
Ma+or o igual que 3=
Se debe observar que la comparaci,n de dos cantidades se escribe con dos smbolos de
igualdad consecutivos. $ara generar la tilde en la comparaci,n de desigualdad en aquellos
teclados en los que no se dispone del carcter tilde! puede generarse manteniendo pulsada la
tecla Alt + escribiendo 0.@ en el teclado num/rico de la derecha.
$or supuesto la condici,n a comprobar puede ser tan complicada como se desee) varias
comparaciones pueden combinarse utilizando los operadores l,gicos A#- P"! 54 Q" + #59
O".
Molviendo a la instrucci,n -f! debe tenerse en cuenta que tanto -n&tr.((-on#&1 como
-n&tr.((-on#&2 pueden contener otras instrucciones -f! pero para evitar que la estructura se
complique + facilitar la depuraci,n de los programas se puede utilizar la estructura
-f...#&#-f...#&#...! con la siguiente estructura)
if condicion
instrucciones1
elseif condicion2
instrucciones2
elseif condicion3
instrucciones3
else
instrucciones4
end
%l funcionamiento es el siguiente) se comprueba primero (on1-(-on. Si es cierta se e*ecuta
-n&tr.((-on#&1J si no! se comprueba (on1-(-on2. Si (on1-(-on2 es cierta se e*ecuta
-n&tr.((-on#&2J si no! se comprueba (on1-(-on3! que si es cierta se e*ecuta -n&tr.((-on#&3.
:inalmente si ninguna de las condiciones es cierta se e*ecuta -n&tr.((-on#&4. 5bservar que
en el momento en que se cumple una de las condiciones +a no se verifican el resto de las
condiciones.
$ara estructuras de selecci,n comple*as puede utilizar la instrucci,n &=-t(6! que resulta
especialmente 'til para e*ecutar instrucciones diferentes seg'n el valor de alguna variable. (a
estructura es)
switch variable
case valor_a
instrucciones1
case valor_b
instrucciones2
case valor_c
instrucciones3
otherwise
instrucciones4
end
08
(a instrucci,n funciona de esta forma) se comprueba primero si la variable tiene el valor
2aor/a. Si es as se e*ecuta el con*unto de instrucciones -n&tr.((-on#&1J si no! se comprueba
si tiene el valor 2aor/5. Si tiene este valor se e*ecuta -n&tr.((-on#&2! + as sucesivamente.
Si no toma ninguno de los valores especificados se e*ecuta -n&tr.((-on#&4. 5bservar que en
el momento en que se verifica que la variable toma alguno de los valores! +a no se
comprueban el resto de los valores.
Estructuras de repeticin
A la hora de programar algoritmos suele ser necesario realizar lazos! tal + como se vio en el
captulo de Algortmica. $ara ello Matlab dispone de las funciones for + =6-#. (a estructura
del bucle determinista for es)
for variable=inicio:incremento:fin,
instrucciones_a_ejecutar;
end
%n el caso en que se desee e*ecutar el bucle mientras una condici,n de parada sea cierta puede
utilizarse el bucle condicional =6-#)
while condicion,
instrucciones_a_ejecutar;
end
5bservar que no e&iste un comando para comprobar la condici,n s,lo en el final del bucle no
e&iste un comando equivalente al repetir...hasta que se vio en algortmica". Si se desea
comprobar al final del bucle! puede realizarse moviendo la condici,n al comienzo del bucle)
variable_condicion=1;
while variable_condicion=1,
instrucciones_a_ejecutar;
variable_condicion=condicion;
end
Si el fichero de comandos de Matlab realiza unas acciones concretas sobre unas variables de
entrada para generar unas variables de salida es me*or convertirlo en una funci,n de Matlab.
-e esta forma el resto de las variables que se utilicen en la funci,n sern variables locales!
con lo que no alterarn el contenido de las variables definidas en el entorno de comandos de
Matlab. $or supuesto! las funciones pueden llamarse tambi/n desde otros ficheros de
comandos o funciones de Matlab. $ara que un fichero de comandos pueda considerarse una
funci,n de Matlab! basta crear un fichero con nombre nom5r#/f.n(-on.m + cu+a primera
lnea del fichero e&clu+endo comentarios" tenga esta estructura)
[variable1_salida,variable2_salida]=nombre_funcionvariable1_entrada,variab
le2_entrada!
$or supuesto al definir la funci,n pueden tenerse tantas variables de entrada + de salida como
se quiera. $ero adems para que las funciones sean lo ms verstiles posibles! a la hora de
utilizar la funci,n se pueden recoger s,lo aquellas variables de entrada que necesitemos! +
pasarle menos argumentos de los que est/n declarados en la funci,n. %sto 'ltimo es mu+ 'til
02
para utilizar parmetros a los que se les pueda asignar valores por defecto dentro de la funci,n
si no se pasa la variable correspondiente. As si escribimos un fichero 'ot#n(-a&.m! en alg'n
directorio accesible por Matlab! con el siguiente contenido)
" #$%&'()*+ calcula ,otencias enteras
"
" #$%&'()*+-! .enera las ,otencias se.unda, tercera / cuarta de -
"
" #or defecto -=2
"
function [-2,-3,-4]=,otencias-!
if nar.in==0!
-2=2;
-3=4;
-4=1;
else
-2=-2-;
-3=-22-;
-4=-32-;
end
Si se pasa un argumento num/rico se calculan algunas de sus potencias. Si no se pasa ninguno
se asignan las potencias de .)
Operacin Resultado
[(.a1ra1o+(.5o]='r.#5a*3, (.a1ra1o =
9
(.5o =
2"
[(.a1ra1o+(.5o+(.arta]='r.#5a (.a1ra1o =
2
(.5o =
4
(.arta =
8
%ste mismo e*emplo nos sirve para comentar la creaci,n de a+udas en las funciones) Matlab
entiende como descripci,n de la funci,n todas las lneas de comentario que aparecen en la
cabecera antes de la primera lnea interpretable en el caso de una funci,n la que contiene la
palabra f.n(t-on + la descripci,n de los argumentos". Al pedir a+uda del comando mostrar
todas esas lneas de a+uda. Si la b'squeda se realiza con oo@for se mostrar s,lo la primera
lnea.
Operacin Resultado
6#' 'ot#n(-a&
;8BENCIA: (a(.a 'ot#n(-a& #nt#ra&

;8BENCIA:*D, !#n#ra a& 'ot#n(-a& 2+ 3 < 4 1# D

;or 1#f#(to D=2
oo@for 'ot#n(-a& ;8BENCIA: (a(.a 'ot#n(-a& #nt#ra&
0@
Bibliografa
Aparte de los manuales de Matlab e&iste un gran n'mero de libros publicados sobre la
utilizaci,n de Matlab para la resoluci,n de problemas en distintas reas. %n particular
mencionaremos los siguientes libros)
- Niran! A.! Nreiner! M.! Matlab for Engineers! Addison?Oesle+! 0FFC
- -ez?4uano! P.(.! $rieto?Mahon! 4.! Procesamiento de Seales. Prcticas con Matlab
y Simulink! Univ. $ol. Malencia! 0FFE
- %tter! -. M.! Solucin de problemas de ingeniera con Matlab! $rentice?7all! 0FFC
- #aQamura! S.! nlisis !um"rico y #isualizacin $rfica con Matlab! $rentice?7all!
0FFC
- 5gata! R.! Sol%ing &ontrol Engineering Problems using Matlab! $rentice?7all! 0FF8
- $/rez (,pez! C.! Matemtica 'nformatizada con Matlab! 4a?Ma! 0FF@
- Suintela %st/vez! $.! 'ntroduccin a Matlab y sus aplicaciones! Univ. Santiago de
Compostela! 0FFC
%s tambi/n 'til comprobar las pginas de los creadores de Matlab TTT.mathTorQs.com"
para mantenerse al da de nuevas versiones de Matlab o toolbo&es! as como de los
comentarios t/cnicos.
:inalmente mencionar que e&isten una serie de documentos de introducci,n a las diferentes
versiones de Matlab que pueden descargarse desde la siguiente direcci,n)
fcapra.ceit.esDA+udaInf.
0C

Potrebbero piacerti anche