Sei sulla pagina 1di 123

MATLAB

Curso introductorio

Instructor:
Dr. Ral Manzanilla
20 Abril 2004
MATLAB: Curso Introductorio

Introduccin
Nociones Bsicas
Clculo Numrico y Simblico
Algunas Funciones Matemticas
Vectores y Matrices
Otros tipos de Datos:
Caracteres, hipermatrices, estructuras y vectores de celdas
Programacin
Manipulacin de datos
Interaccin Teclado, archivos de datos
Archivos de funciones
Gestin de archivos
Grficos
Autor: Ral Manzanilla D. 2
MATLAB: Curso Introductorio
Introduccin
Matlab es un entorno de computacin tcnica que
posibilita la ejecucin de clculo numrico y simblico de
forma rpida y precisa.
El entorno bsico de Matlab se complementa con una
amplia coleccin de toolboxes que contienen funciones
especficas para determinadas aplicaciones en
diferentes ramas de las ciencias y la ingeniera.
La arquitectura de Matlab es abierta y extensible,
permitiendo su relacin con el Excel, C, Fortran y otras
aplicaciones externas muy usadas.

Autor: Ral Manzanilla D. 3


MATLAB: Curso Introductorio
Nociones Bsicas
El prompt significa que el programa Matlab est
listo para recibir las rdenes de ejecucin del usuario.

Ordenes de demostracin: DEMO

Ordenes de ayuda: help


lookfor
Ayuda conducida por mens seleccionando en la barra
de men Help.

Autor: Ral Manzanilla D. 4


MATLAB: Curso Introductorio
Nociones Bsicas
Orden de inclusin en el path de busqueda :
path('c:\inf1\matlab', path) , actualiza el path de
busqueda que utiliza matlab para la ubicacin de una
funcin o un archivo
Orden de eliminar directorio en el path de busqueda :
rmpath('c:\inf1\matlab')
Orden cambio de directorio : cd c:\...... , la cual
cambia el directorio corriente de trabajo
Orden para verificar directorio corriente: pwd

Autor: Ral Manzanilla D. 5


MATLAB: Curso Introductorio
Nociones Bsicas (continuacin ....)

OPERACIONES ARITMTICAS BSICAS:

a+b Suma
a-b Resta
a*b Multiplicacin
a/b=b\a Divisin
a^b Potencia

Autor: Ral Manzanilla D. 6


MATLAB: Curso Introductorio
Nociones Bsicas (continuacin ....)
VARIABLES
Las variables son creadas al momento de la
asignacin de un valor.

Las variables son sensibles a las letras


maysculas.

Pueden contener hasta 31 caracteres.

Deben comenzar con una letra, seguida por


cualquier nmero de letras, dgitos o guiones de
subrayado. No se permiten espacios en blanco.
Autor: Ral Manzanilla D. 7
MATLAB: Curso Introductorio
Nociones Bsicas (continuacin ....)
VARIABLES (continuacin)

la variable ans: Por defecto, Matlab almacena


resultados en la variable ans

Contenido de una variable: Escribiendo su


nombre en la lnea de comandos y dando
retorno del carro, podr observar el contenido.

Autor: Ral Manzanilla D. 8


MATLAB: Curso Introductorio
Nociones Bsicas (continuacin ....)
LAS VARIABLES (continuacin) :

who: Lista las variables en uso

whos : Lista las variables en uso, con mas


informacin tales como; tamao, nmero de bytes,
tipo
Global : Permite definir variables globales. Por
defecto toda variable es definida localmente

Autor: Ral Manzanilla D. 9


MATLAB: Curso Introductorio
Nociones Bsicas (continuacin ....)
EL ESPACIO DE TRABAJO

Workspace: Es el espacio de trabajo es donde se


almacenan y registran las variables utilizadas por
Matlab.

La instruccin pack: ayuda a liberar espacio de


trabajo y funciona como un recolector de basura.

la instruccin clear: En el espacio de trabajo, se


pueden borrar las variables utilizando clear
seguida del nombre de las variables que se desea
borrar.
Autor: Ral Manzanilla D. 10
MATLAB: Curso Introductorio
Nociones Bsicas (continuacin ....)
OTRAS CARACTERSTICAS:
El signo ; (punto y coma) al final de una
instruccin hace que el programa ejecute dicha
instruccin sin mostrar el resultado.
El signo % (porcentaje) inicia los comentarios.
El signo , (coma) Se utiliza para separar varias
entradas en la misma lnea.
El signo ... (Tres puntos suspensivos) si la
instruccin no cabe en una lnea, se ponen al final
de la lnea ... para continuar la instruccin en la
linea siguiente.
Autor: Ral Manzanilla D. 11
MATLAB: Curso Introductorio
Nociones Bsicas (continuacin ....)
UTILIZANDO LAS TECLAS DE EDICIN.
Las teclas con flechas permiten modificar los datos
introducidos:

Recupera la lnea previa.

Recupera la lnea siguiente.

Mueve el cursor hacia la izquierda un carcter.

Mueve el cursor hacia la derecha un carcter.


Autor: Ral Manzanilla D. 12
MATLAB: Curso Introductorio
Nociones Bsicas (continuacin ....)
OTRAS INSTRUCCIONES

La orden save nombredesesin, guarda el


espacio de trabajo de la sesin de trabajo en el
disco, en un formato binario especial de matlab,
con la extensin .mat.

La orden load nombredesesin carga una sesin


guardada en la forma sealada anteriormente.

La orden clc limpia la ventana de comandos.

La orden exit o quit finaliza la sesin de matlab.


Autor: Ral Manzanilla D. 13
MATLAB: Curso Introductorio
Clculo Numrico y Simblico
FORMATOS NUMRICOS.

INSTRUCCION SIGNIFICADO
format short Resultados con 4 decimales. Defecto
format long Resultados con 14 decimales.
format rat Resultados en forma de nmero racional.
format hex Resultados con cifras hexadecimales.
format bank Resultados con dos cifras decimales.
format short e Resultados notacin cientfica con 4 decimales.
format short g Resultados en notacin cientfica o decimal,
dependiendo del valor.
Autor: Ral Manzanilla D. 14
MATLAB: Curso Introductorio
Clculo Numrico y Simblico
FORMATOS NUMRICOS.

INSTRUCCION SIGNIFICADO
format long e Resultados notacin cientfica con 15
decimales.
format long g Resultados en notacin cientfica o
decimal, dependiendo del valor
format loose Introduce algunas lneas en blanco en
la salida (defecto)
format compact Elimina las lneas en blanco citadas
(recomendada)
Autor: Ral Manzanilla D. 15
MATLAB: Curso Introductorio
Clculo Numrico y Simblico
OBJETOS SIMBLICOS (SYMBOLIC MATH)

INSTRUCCION SIGNIFICADO
syms a,b,c Se declara a, b, c como objetos simblicos.
La a puede ser una constante, una
variable o una expresin en la que
intervengan constantes, variables,
operadores aritmticos y funciones
predefinidas.
M = sym(m) Convierte un objeto numrico m en un
objeto simblico M.
Autor: Ral Manzanilla D. 16
MATLAB: Curso Introductorio
Clculo Numrico y Simblico
OBJETOS SIMBLICOS ( continuacin .... )

INSTRUCCION SIGNIFICADO
syms x Se declara x como
expand((1+x)*(3-x)) Desarrolla la expresin en
ans= suma de monomios.
3+2*x-x^2 Resultado.

Autor: Ral Manzanilla D. 17


MATLAB: Curso Introductorio
Clculo Numrico y Simblico
OBJETOS SIMBLICOS ( continuacin .... )

INSTRUCCION SIGNIFICADO
pretty(expand((1+x)*(3-x))) Se expresar el resultado
ans= anterior con la notacin
3+2x-x2 habitual
solve('-x^2-2*x+3=0','x') Resuelve la ecuacin.
ans= Respuesta
[-3]
[1]
Autor: Ral Manzanilla D. 18
MATLAB: Curso Introductorio
Clculo Numrico y Simblico
OBJETOS SIMBLICOS ( continuacin .... )

INSTRUCCION SIGNIFICADO
simplify(f) Simplifica la expresin simblica f.
simple(f) Busca la forma ms simple de la
expresin simblica f.
[r,a] = simple(f) Guarda en r la expresin
simplificada y en a describe el
mtodo de simplificacin utilizado.

Autor: Ral Manzanilla D. 19


MATLAB: Curso Introductorio
Clculo Numrico y Simblico
OBJETOS SIMBLICOS ( continuacin .... )

INSTRUCCION SIGNIFICADO
subs(f,a) Aplica f en a.
subs(f,x,s) Substituye en f la variable x por la s.
factor(f) Factoriza la expresin simblica f.
Si f es un nmero entero lo
descompone en factores primos.

Autor: Ral Manzanilla D. 20


MATLAB: Curso Introductorio
Algunas Funciones Matemticas
NOMBRE SIGNIFICADO COMENTARIO (Help Elfun)
sin(x) seno
cos(x) coseno
tan(x) tangente
asin(x) arco seno
acos(x) arco coseno
atan(x) arco tangente (devuelve un ngulo entre -/2 y + /2)
atan2(x) arco tangente (devuelve un ngulo entre - y + ); se le
pasan 2 argumentos, proporcionales al seno y
al coseno
sinh(x) seno hiperblico
cosh(x) coseno
hiperblico
Autor: Ral Manzanilla D. 21
MATLAB: Curso Introductorio
Algunas Funciones Matemticas
NOMBRE SIGNIFICADO COMENTARIO (Help Elfun)
tanh(x) tangente hiperblica
asinh(x) arco seno hiperblico
acosh(x) arco coseno hiperblico
atanh(x) arco tangente hiperblica
log(x) logaritmo natural
log10(x) logaritmo decimal
exp(x) funcin exponencial
sqrt(x) raz cuadrada
sign(x) devuelve -1 si <0, 0 si =0 y 1 si >0. Aplicada a un nmero complejo,
devuelve un vector unitario en la misma direccin
rem(x,y) resto de la divisin (2 argumentos que no tienen que ser enteros)
Autor: Ral Manzanilla D. 22
MATLAB: Curso Introductorio
Algunas Funciones Matemticas
NOMBRE SIGNIFICADO (Help Elfun) COMENTARIO
mod(x,y) similar a rem (Ver diferencias con el Help)
round(x) redondeo hacia el entero ms prximo
fix(x) redondea hacia el entero ms prximo a 0
floor(x) valor entero ms prximo hacia -
ceil(x) valor entero ms prximo hacia +
gcd(x) mximo comn divisor
lcm(x) mnimo comn mltiplo
real(x) partes reales
imag(x) partes imaginarias
abs(x) valores absolutos
angle(x) ngulos de fase
Autor: Ral Manzanilla D. 23
MATLAB: Curso Introductorio
Vectores y Matrices (Help Elmat y Matfun)

Los elementos de una matriz numrica se introducen por


filas, separando cada fila de la siguiente por medio de
punto y coma o un retorno de linea. Los elementos van
entre corchetes y los distintos elementos de una misma
fila se separan por espacios blancos o comas.
A=[1 2 3; 4,5,6; 7 8 9 ]
A=
1 2 3
4 5 6
7 8 9
Autor: Ral Manzanilla D. 24
MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)

Las matrices simblicas se introducen de dos formas:

1. Igual que las numricas, declarando previamente las


variables como simblicas:
syms a b c d
H=[a b;c d]

2. En una nica entrada, mediante el uso de la comilla


simple de la siguiente manera:
H=sym([a b;c d])

Autor: Ral Manzanilla D. 25


MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
ORDENES MATRICIALES
INSTRUCCION SIGNIFICADO RESPUESTA
A(i,j) Devuelve el elemento que
ocupa la fila i y la columna j.
A(3,3)=0 Sustituimos el elemento A =
A(3,3) por 0. 1 2 3
4 5 6
7 8 0
B=A(:,1) Obtenemos la submatriz de B =
la matriz A con todas las filas 1
y la primera columna 4
7

Autor: Ral Manzanilla D. 26


MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
ORDENES MATRICIALES
INSTRUCCION SIGNIFICADO RESPUESTA
B=A(1,:) Obtenemos la submatriz de B =
la matriz A con la primera 123
fila y todas las columnas
B=A(1:2,1) Obtenemos la submatriz de B =
la matriz A con las dos 1
primeras filas y la primera 4
columna
B=A(1:3,2:3) Obtenemos la submatriz de B =
la matriz A con la 1ra, 2da 2 3
y 3ra filas y la 2da y la 3ra 5 6
columna
8 0
Autor: Ral Manzanilla D. 27
MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
ORDENES MATRICIALES
INSTRUCCION SIGNIFICADO RESPUESTA
B =A(:) Obtenemos el vector formado B =A(:)
con las componentes de la B =
matriz ordenadas por 1
columnas.
Las matrices se almacenan 4
por columnas, aunque se 7
introduzcan por filas. 2
A(1,2) es igual a escribir A(4) 5
8
3
6
0
Autor: Ral Manzanilla D. 28
MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
ORDENES MATRICIALES
INSTRUCCION SIGNIFICADO RESPUESTA
B=m:h:n Define un vector fila cuyo primer B=10:10:25
elemento es m y los dems elementos B=
aumentan en h sin superar n. 10 20
Si h esta ausente se toma como B=10:14
incremento h=1. B=
10 11 12 13 14
A=B(v) Define un vector A a partir de B A=B([2 3 5])
utilizando los indices especificados en A =
v 11 12 14

A(i) Devuelve el elemento que ocupa la A(4)


posicin i. ans =
2
Autor: Ral Manzanilla D. 29
MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
ORDENES MATRICIALES
INSTRUCCION SIGNIFICADO RESPUESTA
A(i:j) Devuelve los elementos A(3:5)
situados entre las ans =
posiciones i y j. 7 2 5
S=size(A) Da la dimensin de A. size(A)
ans =
3 3
size(B)
ans =
1 5

Autor: Ral Manzanilla D. 30


MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
ORDENES MATRICIALES

INSTRUCCION SIGNIFICADO RESPUESTA


b=linspace(m,n,h) Define un vector fila de h b=linspace(1,10,5)
componentes, cuyo primer b =
elemento es m y cuyo 1.00 3.25 5.50 7.75 10.00
ltimo elemento es n.

ones(n,m) Define una matriz nXm con ones(3,2)


todos los elementos ans =
iguales a 1. Si m es omitido 1.00 1.00
se obtiene matriz nXn 1.00 1.00
construida en forma 1.00 1.00
anloga

Autor: Ral Manzanilla D. 31


MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
MATRICES PREDEFINIDAS
INSTRUCCION SIGNIFICADO RESPUESTA
zeros(n,m) Define una matriz nXm con zeros(3,2)
todos los elementos iguales a ans =
0. Si m es omitido se obtiene 0 0
matriz nXn construida en
forma anloga. 0 0
0 0
eye(n,m) Define una matriz nXm con eye(3,2)
todos los elementos de la ans =
diagonal iguales a 1. Si m es 1.00 0
omitido se obtiene matriz
identidad nXn construida en 0 1.00
forma anloga 0 0

Autor: Ral Manzanilla D. 32


MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
MATRICES PREDEFINIDAS
INSTRUCCION SIGNIFICADO RESPUESTA
rand(n,m) Define una matriz nXm de rand(3)
nmeros aleatorios entre 0 y 1, ans =
con distribucin uniforme. Si m 0.44 0.92 0.41
es omitido define una matriz nXn
construida en forma anloga. 0.62 0.74 0.94
0.79 0.18 0.92
randn(n,m) Define una matriz nXm de randn(2,3)
nmeros aleatorios con ans =
distribucin normal, de valor -0.43 0.13 -1.15
medio 0 y varianza 1. Si m es
omitido define una matriz nXn -1.67 0.29 1.19
construida en forma anloga.
Autor: Ral Manzanilla D. 33
MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
MATRICES PREDEFINIDAS
INSTRUCCION SIGNIFICADO RESPUESTA
magic(4) Define una matriz nXn con los nmeros magic(3)
1, 2, ... n*n, con la propiedad de que ans =
todas las filas, columnas y diagonal 8.00 1.00 6.00
suman lo mismo.
3.00 5.00 7.00
4.00 9.00 2.00
hilb(n) Define una matriz de Hilbert nXn, cuyos hilb(2)
elementos (i,j) responden a la ans =
expresin (1/(i+j-1)). Esta es una matriz 1.00 0.50
especialmente difcil de manejar por los
grandes errores numricos a los que 0.50 0.33
conduce.

Autor: Ral Manzanilla D. 34


MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
MATRICES PREDEFINIDAS
INSTRUCCION SIGNIFICADO RESPUESTA
invhilb(n) Define directamente la inversa de la invhilb(2)
matriz de Hilbert nXn. ans =
4.00 -6.00
-6.00 12.00
compan(pol) Define una matriz cuyo polinomio pol=[1 1 1]
caracterstico tiene como coeficientes pol =
los elementos del vector pol 1.00 1.00 1.00
ordenados de mayor grado a menor)
compan(pol)
ans =
-1.00 -1.00
1.00 0
Autor: Ral Manzanilla D. 35
MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
MATRICES PREDEFINIDAS
INSTRUCCION SIGNIFICADO RESPUESTA
kron(x,y) Define una x, y Column 6
matriz con todos x= 15.00
los productos de 1.00 2.00 3.00 kron(x',y)
los elementos
del vector x por y= ans =
los elementos 4.00 5.00 4.00 5.00
del vector y. kron(x,y) 8.00 10.00
Equivalente a ans = 12.00 15.00
x'*y, donde x e y
Columns 1 through 5
son vectores fila
4.00 5.00 8.00 10.00
12.00
(continua )
Autor: Ral Manzanilla D. 36
MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
MATRICES PREDEFINIDAS
INSTRUCCION SIGNIFICADO RESPUESTA
vander(v) Define la matriz nXn de Vandermonde x = [1.00 2.00 3.00]
a partir del vector v de dimensin n. vander(x)
A(i,j) de la matriz de Vandermonde ans =
es v(i)^(n-j)
1.00 1.00 1.00
4.00 2.00 1.00
9.00 3.00 1.00

Autor: Ral Manzanilla D. 37


MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
MATRICES PREDEFINIDAS

INSTRUCCION SIGNIFICADO RESPUESTA


load matriz.txt Carga una matriz predefinida load matriz.txt
en el archivo de texto del matriz
directorio corriente, en una matriz =
variable de nombre el nombre
del archivo sin la extensin. 1 2 3
4 5 6
7 8 9

Autor: Ral Manzanilla D. 38


MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
OPERACIONES CON ARREGLOS
Los arreglos son matrices fila y como tales se
introducen en Matlab.

INSTRUCCION SIGNIFICADO RESPUESTA


a+c Suma escalar a=[1 2 3]; c=10; a+c
ans =
11 12 13
a*c Multiplicacin escalar a=[1 2 3]; c=10; a*c
ans =
10 20 30

Autor: Ral Manzanilla D. 39


MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
OPERACIONES CON ARREGLOS

INSTRUCCION SIGNIFICADO RESPUESTA


a+b Suma de Arreglos a=[1 2 3]; b=[10 20 30]; a+b
ans =
11 22 33
a.*b Multiplicacin de a=[1 2 3]; b=[10 20 30]; a.*b
arreglos ans =
10 40 90
a./b Divisin a la derecha a=[1 2 3]; b=[10 20 30]; a./b
de arreglos ans =
0.1000 0.1000 0.1000

Autor: Ral Manzanilla D. 40


MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
OPERACIONES CON ARREGLOS
INSTRUCCION SIGNIFICADO RESPUESTA
a.\b Divisin a izquierda a=[1 2 3]; b=[10 20 30]; a.\b
de arreglos ans =
10 10 10
a.^c Arreglo elevado a un a=[1 2 3]; c=2; a.^c
escalar ans =
1 4 9
c.^a Escalar elevado a un a=[1 2 3]; c=2; c.^a
arreglo ans =
2 4 8

Autor: Ral Manzanilla D. 41


MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
OPERACIONES CON ARREGLOS
INSTRUCCION SIGNIFICADO RESPUESTA
a.^b Arreglo elevado a a=[1 2 3]; b=[1 2 3]; a.^b
un arreglo ans =
1 4 27

La operacin aritmtica precedida del . Es el


indicativo de que se esta realizando la operacin
componente a componente.

Autor: Ral Manzanilla D. 42


MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
Funciones que actan sobre vectores
NOMBRE SIGNIFICADO (Help Elfun) COMENTARIO
mod(x,y) similar a rem (Ver diferencias con el Help)
round(x) redondeo hacia el entero ms prximo
fix(x) redondea hacia el entero ms prximo a 0
floor(x) valor entero ms prximo hacia -
ceil(x) valor entero ms prximo hacia +
gcd(x) mximo comn divisor
lcm(x) mnimo comn mltiplo
real(x) partes reales
imag(x) partes imaginarias
abs(x) valores absolutos
angle(x) ngulos de fase
Autor: Ral Manzanilla D. 43
MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
Funciones que actan sobre vectores
NOMBRE SIGNIFICADO (Help Elfun)
[xm,im]=max(x) Devuelve el valor mximo xm y la posicin que ocupa im
[xm,im]=min(x) Devuelve el valor mnimo xm y la posicin que ocupa im
sum(x) Suma de los elementos de un vector
cumsum(x) Devuelve el vector suma acumulativa de los elementos de un vector
mean(x) Valor medio de los elementos de un vector
std(x) Desviacin tpica
prod(x) Producto de los elementos de un vector
cumprod(x) Devuelve el vector producto acumulativo de los elementos de un
vector
[y,i]=sort(x) Ordena de menor a mayor de los elementos de un vector x.
Devuelve el vector ordenado y, y un vector i con las posiciones
iniciales en x de los elementos en el vector ordenado y
Autor: Ral Manzanilla D. 44
MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
Funciones que actan sobre matrices

NOMBRE SIGNIFICADO (Help Matfun)


B = A' Calcula la traspuesta (conjugada) de la matriz A
B = A.' Calcula la traspuesta (sin conjugar) de la matriz A
v = poly(A) Devuelve un vector v con los coeficientes del polinomio
caracterstico de la matriz cuadrada A
t = trace(A) Devuelve la traza t (suma de los elementos de la diagonal)
de una matriz cuadrada A
[m,n] = size(A) Devuelve el nmero de filas m y de columnas n de una
matriz rectangular A
n = size(A) Devuelve el tamao de una matriz cuadrada A

Autor: Ral Manzanilla D. 45


MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
Funciones que actan sobre matrices

NOMBRE SIGNIFICADO (Help Matfun)


[L,U] = lu(A) La descomposicin de Crout (A = LU) de una matriz. L es una
matriz triangular inferior , U es una matriz triangular superior. L
considera las permutaciones.
[L,U,P] = lu(A) La descomposicin de Crout (PA = LU) de una matriz. La matriz
P es la matriz de permutaciones, L es una matriz triangular
inferior y U es una matriz triangular superior.
B = inv(A)) Calcula la inversa de A. Equivale a B=inv(U)*inv(L)
d = det(A) Devuelve el determinante de la matriz cuadrada A. Equivale a
d=det(L)*det(U)
[E,jb ]= rref(A) Reduccin a forma de escaln (mediante la eliminacin de
Gauss con pivote por columnas) de una matriz rectangular A

Autor: Ral Manzanilla D. 46


MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
Funciones que actan sobre matrices

NOMBRE SIGNIFICADO (Help Matfun)


U=chol(A) Descomposicin de Cholesky de matriz simtrica y positivo-
definida. Slo se utiliza la diagonal y la parte triangular superior
de A. El resultado es una matriz triangular superior tal que A =
U'*U
c = rcond(A) Devuelve una estimacin del recproco de la condicin
numrica de la matriz A basada en la norma 1. Si el resultado
es prximo a 1 la matriz A est bien condicionada; si es
prximo a 0 no lo est

Autor: Ral Manzanilla D. 47


MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
Funciones que actan sobre matrices

NOMBRE SIGNIFICADO (Help Matfun)


[X,D] = eig(A) El resultado es una matriz X cuyas columnas son los vectores
propios de A, y D matriz diagonal con los valores propios de
A. A*X= X*D. Con frecuencia el resultado es complejo (si A
no es simtrica)
[X,D] = eig(A,B) Valores propios (diagonal de D) y vectores propios (columnas
de X) de dos matrices cuadradas A y B (AX = BX).
[Q,R] = qr(A) Descomposicin QR de una matriz rectangular. Se utiliza para
sistemas con ms ecuaciones que incgnitas.
B = null(A) Devuelve una base ortonormal del subespacio nulo (kernel, o
conjunto de vectores x tales que Ax = 0) de la matriz
rectangular A.

Autor: Ral Manzanilla D. 48


MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
Funciones que actan sobre matrices

NOMBRE SIGNIFICADO (Help Matfun)


Q = orth(A) Las columnas de Q son una base ortonormal del espacio de
columnas de A. El nmero de columnas de Q es el rango de A
[U,D,V] = Descomposicin de valor singular de una matriz rectangular (
svd(A) A=U*D*V ). U y V son matrices ortonormales. D es diagonal y
contiene los valores propios

B = pinv(A) Calcula la pseudo-inversa de una matriz rectangular A


r = rank(A) Calcula el rango r de una matriz rectangular A

Autor: Ral Manzanilla D. 49


MATLAB: Curso Introductorio
Vectores y Matrices (Continua ....)
Funciones que actan sobre matrices
NOMBRE SIGNIFICADO (Help Matfun)
nor = norm(A,i) NORM(A) es la norma 2 de A, el mayor valor propio de A,
max(svd(X)).
NORM(A,2) es lo mismo que NORM(A).
NORM(A,1) es la norma 1 de A, mximo de la suma de los
elementos de las columnas de A, max(sum(abs((A)))).
NORM(X,inf) es la norma infinito de A, mximo de la suma de
los elementos de las filas de A, max(sum(abs((X')))).
NORM(X,'fro') es la norma de Frobenius,sqrt(sum(diag(X'*X))).
c = cond(A) Condicin numrica en norma 2 de la matriz A. Es el cociente
entre el mximo y el mnimo valor propio. La condicin numrica
da una idea de los errores que se obtienen al resolver un
sistema de ecuaciones lineales con dicha matriz: su logaritmo
indica el nmero de cifras significativas que se pierden.
Autor: Ral Manzanilla D. 50
MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Cadenas de caracteres : van entre apstrofos o
comillas simples

Ejemplo :
c='lola'; c
c=
lola

Autor: Ral Manzanilla D. 51


MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Funciones de caracteres

NOMBRE SIGNIFICADO (Help Strfun) COMENTARIO


double(c) Convierte en nmeros ASCII cada v='lola';double(v)
carcter ans =
108 111 108 97
char(v) Convierte un vector de nmeros v en char(v)
una cadena de caracteres ans =
lola
char(c1,c2) Crea una matriz de caracteres, v=char('pepe','miguel'); v
completando con blancos las cadenas v =
ms cortas pepe
miguel

Autor: Ral Manzanilla D. 52


MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Funciones de caracteres (continua ...)

NOMBRE SIGNIFICADO (Help Strfun) COMENTARIO


s=[s1,s2] Concatena cadenas, aadiendo la c='cosa ';[c,'jose']
segunda a continuacin de la primera ans =
cosa jose
deblank(c) Elimina los blancos al final de una c='cosa ';[deblank(c),'jose']
cadena de caracteres ans =
cosajose
char(c1,c2) Crea una matriz de caracteres, v=char('pepe','miguel')
completando con blancos las cadenas v=
ms cortas pepe
miguel

Autor: Ral Manzanilla D. 53


MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Funciones de caracteres (continua ...)
NOMBRE SIGNIFICADO (Help Strfun) COMENTARIO
disp(c) Imprime el texto contenido en la variable c=cosa; disp(c)
c. Util para diferentes tipos de variables. cosa
ischar(c) Detecta si una variable es una cadena de p=2.3;ischar(p)
caracteres. Si se le pasa un vector o ans =
matriz de caracteres devuelve un vector o 0
matriz de unos y ceros (0 falso, 1
verdadero) c='cosa';ischar(c)
ans =
1
isletter(c) Detecta si un carcter es una letra del c='/';ischar(c)
alfabeto. Si se le pasa un vector o matriz ans =
de caracteres devuelve un vector o matriz 1
de unos y ceros (0 falso, 1 verdadero)
Autor: Ral Manzanilla D. 54
MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Funciones de caracteres (continua ...)
NOMBRE SIGNIFICADO (Help Strfun) COMENTARIO
isspace(v) Detecta si un carcter es un espacio v=char('pepe','miguel');
en blanco. Si se le pasa un vector o isspace(v)
matriz de caracteres devuelve un ans =
vector o matriz de unos y ceros (0
falso, 1 verdadero) 0 0 0 0 1 1
0 0 0 0 0 0
strcmp(c1,c2) Comparacin de cadenas. (0 falso, 1 strcmp('pepe',Pepe')
verdadero) (funciona de modo ans =
diferente que la correspondiente 0
funcin de C)
strcmpi(c1,c2) Igual que strcmp(c1,c2), pero strcmp('pepe',pepe')
ignorando la diferencia entre ans =
maysculas y minsculas 1
Autor: Ral Manzanilla D. 55
MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Funciones de caracteres (continua ...)

NOMBRE SIGNIFICADO (Help Strfun) COMENTARIO


strncmp(c1,c2,n) Compara los n primeros caracteres strncmp('pepe','pepo',3)
de dos cadenas (0 falso, 1 ans =
verdadero) 1
c1==c2 Compara dos cadenas carcter a 'Pepe'=='pepo'
carcter. Devuelve un vector o ans =
matriz de unos y ceros (0 falso, 1 0 1 1 0
verdadero)
findstr(c1,c2) Devuelve un vector con las findstr('pepelo','pe')
posiciones iniciales de todas las ans =
veces en que la cadena ms corta 1 3
aparece en la ms larga

Autor: Ral Manzanilla D. 56


MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Funciones de caracteres (continua ...)

NOMBRE SIGNIFICADO (Help Strfun) COMENTARIO


strmatch(c,cc) Devuelve los ndices de todos los cc=char('pepe', 'chucho',
elementos de la matriz de 'pedro'); strmatch('pe',cc)
caracteres (o vector de celdas) cc, ans =
que empiezan por la cadena c 1
3
strrep(c1,c2,c3) Sustituye la cadena c2 por c3, c=['pepe ','tipe ','cope '];
cada vez que c2 es encontrada en strrep(c,'pe','ro')
c1 ans =
roro tiro coro

Autor: Ral Manzanilla D. 57


MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Funciones de caracteres (continua ...)
NOMBRE SIGNIFICADO (Help Strfun) COMENTARIO
[p,r]=strtok(t) Separa las palabras de una cadena de [t,p]=strtok(c)
caracteres t. Devuelve la primera palabra t=
p y el resto de la cadena r pepe
p=
tipe cope
int2str(v)) Convierte un nmero entero en cadena de int2str(9)
caracteres ans =
9
num2str(x,n) Convierte un nmero real x en su num2str(2.345678,5)
expresin por medio de una cadena de ans =
caracteres, con cuatro cifras decimales 2.3457
por defecto (opcional: n nmero de cifras)
Autor: Ral Manzanilla D. 58
MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Funciones de caracteres (continua ...)
NOMBRE SIGNIFICADO (Help Strfun) COMENTARIO
str2double(str) Convierte una cadena de caracteres c=sscanf('2.3','%f')
representando un nmero real en el c =
nmero real correspondiente 2.3000
vc=cellstr(cc) Convierte una matriz de caracteres c=char('pepe ','tipe ','cope
cc en un vector de celdas vc, '); vc=cellstr(c)
eliminando los blancos adicionales vc =
al final de cada cadena. La funcin 'pepe'
char() realiza las conversiones
opuestas 'tipe'
'cope'
sprintf Convierte valores numricos en cadenas de c=sprintf('%f',2.3)
caracteres, de acuerdo con las reglas y formatos de c =
conversin del lenguaje C. Esta es la funcin ms 2.300000
general para este tipo de conversin
Autor: Ral Manzanilla D. 59
MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
HIPERMATRICES: matrices de mas de dos
dimensiones

Ejemplo :
a(1:2,:,1)=[1 2 3; 4 5 6]; a(1:2,:,2)=[10 11 12; 13 14 15]
a(:,:,1) =
1 2 3
4 5 6
a(:,:,2) =
10 11 12
13 14 15

Autor: Ral Manzanilla D. 60


MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Funciones de Hipermatrices
NOMBRE SIGNIFICADO (Help COMENTARIO
DataTipes)
cat() Permite concatenar matrices segn A=zeros(2,3); B=ones(2,3);A,B
las distintas dimensiones, A= B=
0 0 0 1 1 1
0 0 0 1 1 1
cat(1,A,B)
ans =
0 0 0
0 0 0
1 1 1
1 1 1
Autor: Ral Manzanilla D. 61
MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Funciones de Hipermatrices ( continua ... )
NOMBRE SIGNIFICADO COMENTARIO
cat() Continuacin c=cat(2,A,B)
c=
0 0 0 1 1 1
0 0 0 1 1 1
c=cat(3,A,B)
c(:,:,1) =
0 0 0
0 0 0
c(:,:,2) =
1 1 1
1 1 1
Autor: Ral Manzanilla D. 62
MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Funciones de Hipermatrices ( continua ... )

NOMBRE SIGNIFICADO COMENTARIO


size() Devuelve el n de elementos en size(c)
cada dimensin ans =
2 3 2
ndims() Devuelve el nmero de ndims(c)
dimensiones ans =
3

Autor: Ral Manzanilla D. 63


MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Funciones de Hipermatrices ( continua ... )
NOMBRE SIGNIFICADO COMENTARIO
squeeze() elimina las dimensiones que son c=rand(2,1,3)
igual a uno c(:,:,1) = c(:,:,2) =
0.9218 0.1763
0.7382 0.4057
c(:,:,3) =
0.9355
0.9169
squeeze(c)
ans =
0.9218 0.1763 0.9355
0.7382 0.4057 0.9169

Autor: Ral Manzanilla D. 64


MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Funciones de Hipermatrices ( continua ... )

NOMBRE SIGNIFICADO COMENTARIO


reshape() Distribuye el mismo c
nmero de c(:,:,1) = c(:,:,2) = c(:,:,3) =
elementos en una 0.9218 0.1763 0.9355
matriz con distinta
forma o con 0.7382 0.4057 0.9169
distintas reshape(c,3,1,2)
dimensiones ans(:,:,1) = ans(:,:,2) =
0.9218 0.4057
0.7382 0.9355
0.1763 0.9169

Autor: Ral Manzanilla D. 65


MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Funciones de Hipermatrices ( continua ... )
NOMBRE SIGNIFICADO COMENTARIO
permute(A,v) Permuta las dimensiones de A segn los
ndices del vector v.
ipermute(A,v) Realiza la permutacin inversa
c=rand(2,3,4)
c(:,:,1) = c(:,:,2) =
0.5155 0.4329 0.5798 0.5298 0.2091 0.7833
0.3340 0.2259 0.7604 0.6405 0.3798 0.6808
c(:,:,3) = c(:,:,4) =
0.4611 0.7942 0.6029 0.4154 0.8744 0.7680
0.5678 0.0592 0.0503 0.3050 0.0150 0.9708
v=permute(c,[3,2,1])
v(:,:,1) = v(:,:,2) =
0.5155 0.4329 0.5798 0.3340 0.2259 0.7604
0.5298 0.2091 0.7833 0.6405 0.3798 0.6808
0.4611 0.7942 0.6029 0.5678 0.0592 0.0503
0.4154 0.8744 0.7680 0.3050 0.0150 0.9708
ipermute(v,[3,2,1]) % el resultado es c
Autor: Ral Manzanilla D. 66
MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Estructuras: agrupacin de datos de tipo diferente
bajo un mismo nombre.

ESTRUCTURA Alumno

CAMPO1 Edad ( Numrico )


CAMPO2 Nombre ( Carcter )
CAMPO3 Apellido ( Carcter )
. .
. ndice ( Numrico )
.
.
CAMPOn Materias inscritas ( Estructura )

Autor: Ral Manzanilla D. 67


MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Estructuras: Se crea creando un objeto de dicha
estructura. No es necesario pre definir la variable.
Alum.Ed=21 Alum.Ind=4.23
Alum = Alum =
Ed: 21 Ed: 21
Alum
Alum.Nom='Pedro' Nom: 'Pedro'
Ed ( Numrico ) Alum = Ape: 'Rodrguez'
Nom ( Carcter ) Ed: 21 Ind: 4.2300
Ape ( Carcter ) Nom: 'Pedro' Alum.Car=12345
. Alum.Ape='Rodrguez' Alum =
nd ( Numrico ) Alum = Ed: 21
Car ( Numrico ) Ed: 21 Nom: 'Pedro'
Nom: 'Pedro' Ape: 'Rodrguez'
Ape: 'Rodrguez' Ind: 4.2300
Car: 12345

Autor: Ral Manzanilla D. 68


MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Estructuras: Tambin se puede crear utilizando la
instruccin STRUCT
Alum Alum =
struct('Ed',21,'Nom','Pedro','Ape', ...
Ed ( Numrico ) 'Rodrguez','Ind',4.2300,'Car',12345)
Nom ( Carcter ) Alum =
Ape ( Carcter ) Ed: 21
.
nd ( Numrico ) Nom: 'Pedro'
Car ( Numrico ) Ape: 'Rodrguez'
Ind: 4.2300
Car: 12345

Autor: Ral Manzanilla D. 69


MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Estructuras: Tambin se puede crear vectores y
matrices de estructuras
Alum(2,5)=struct('Ed',21,'Nom','Pedro', ...
Alum
Ape','Rodrguez','Ind',4.2300,'Car',12345 )
Ed ( Numrico ) Alum =
1x5 struct array with fields:
Nom ( Carcter ) Ed
Ape ( Carcter ) Nom Alum(2,5) tiene los valores los otros
Ape elementos de Alum stn vacios
. Ind
nd ( Numrico ) Para agregar un campo adicional
Car
Car ( Numrico ) Alum(2,5) debe agregarse solamente a un
ans = elemento del vector de estructuras
Ed: 21
Nom: 'Pedro'
Ape: 'Rodrguez'
Ind: 4.2300
Car: 12345
Autor: Ral Manzanilla D. 70
MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Funciones de estructuras
NOMBRE SIGNIFICADO COMENTARIO
fieldnames(ST) Devuelve un vector de fieldnames(Alum)'
celdas con cadenas de ans =
caracteres que recogen los 'Ed' 'Nom' 'Ape' 'Ind' 'Car''
nombres de los campos de
una estructura
isfield(ST,s) Permite saber si la cadena isfield(Alum,'Ed')
s es un campo de una ans =
estructura ST (1 verdadero, 1
0 falso)
isstruct(ST) Permite saber si ST es o no isstruct(Alum)
una estructura (1 ans =
verdadero, 0 falso) 1
Autor: Ral Manzanilla D. 71
MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Funciones de estructuras
NOMBRE SIGNIFICADO COMENTARIO
rmfield(ST,s) Elimina el campo s de la rmfield(Alum,'Car')
estructura ST ans =
2x5 struct array with fields:
Ed
Nom
Ape
Ind

Autor: Ral Manzanilla D. 72


MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Vectores o matrices de Celdas: Vectores o matrices cuyos
elementos son cada uno de ellos una variable de tipo cualquiera.
CREACION con {} COMENTARIO
v(1) ={ [1 2 3] } v(1)={[1 2 3]}
v{1} =[1 2 3] v=
[1x3 double]
v(2) ={struct('nom','pedro','edad',21)} v(2)={struct('nom','pedro','edad',21)}
v=
v{2} = struct('nom','pedro','edad',21) [1x3 double] [1x1 struct]
v={[1 2 3], v={[1 2 3], ...
struct('nom','pedro','edad',21) } struct('nom','pedro','edad',21) }
v=
[1x3 double] [1x1 struct]

La segunda opcin v{} permite ver el contenido de la celda


Autor: Ral Manzanilla D. 73
MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Funciones de Celdas

NOMBRE SIGNIFICADO COMENTARIO

cell(m,n) Crea un cell array p=cell(3,2); disp(p)


vaco de m filas y n [] []
columnas [] []
[] []
celldisp(v) Muestra el contenido celldisp(v)
de todas las celdas de v{1} =
ca (equivalente a v{:}) 1 2 3
v{2} =
nom: 'pedro'
edad: 21

Autor: Ral Manzanilla D. 74


MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Funciones de Celdas

NOMBRE SIGNIFICADO COMENTARIO

cellplot(v) Muestra una representacin


grfica de las distintas celdas
iscell(v) indica si v es un vector de iscell(v)
celdas ans =
1
num2cell(p) Convierte un array numrico p p=num2cell([1 2 3; 4 5 6])
en un cell array p=
[1] [2] [3]
[4] [5] [6]

Autor: Ral Manzanilla D. 75


MATLAB: Curso Introductorio
OTROS TIPOS DE DATOS
Funciones de Celdas
NOMBRE SIGNIFICADO COMENTARIO
cell2struct(c,b,dim) Convierte un cell array c, c={'pepe', 21, 'masculino'};
en una estructura s cuyos b={'nom','edad','sexo'};
nombres de campos estn s=cell2struct(c,b,2)
en el vector de celdas b, y s=
siguiendo el cardinal de la nom: 'pepe'
dimensin especificada dim edad: 21
sexo: 'masculino'
c=struct2cell(s) Convierte una s s.nom='pepe'; s.edad=22; s.sexo='M';
estructura en un c=struct2cell(s)
cell array c c=
'pepe'
[ 22]
'M'
Autor: Ral Manzanilla D. 76
MATLAB: Curso Introductorio
PROGRAMACION
Elementos de programacin
Operadores Relacinales y Lgicos
Bifurcaciones
La sentencia condicional IF
La sentencia de seleccin SWITCH
Lazos
La sentencia FOR
La sentencia WHILE
Interrupcin Abrupta
La sentencia BREAK

Autor: Ral Manzanilla D. 77


MATLAB: Curso Introductorio
PROGRAMACION
Operadores relacionales
SMBOLO SIGNIFICADO EJEMPLO
a=[1,2,3]; b=[4,1,6]; a<b
< menor que ans =
1 0 1
a>b
> mayor que
1 es ans =
0 1 0
Verdadero a<=b
y <= menor o igual ans =
cualquier que 1 0 1
numero mayor o igual a>=b
>= ans =
mayor a 0 que 0 1 0
== a==b
igual que ans =
0 es falso eq(a,b) 0 0 0
a~=b
~= distinto que ans =
1 1 1
Autor: Ral Manzanilla D. 78
MATLAB: Curso Introductorio
PROGRAMACION
Operadores lgicos

SMBOLO SIGNIFICADO EJEMPLO


y a=[1,2,3];b=[4,1,6];c=[1 2 6];
& b>a & a>=c
ans =
1 0 0
| b>a | a>=c
ans =
1 1 1
~ negacin ~(b>a | a>=c)
lgica ans =
0 0 0

Autor: Ral Manzanilla D. 79


MATLAB: Curso Introductorio
PROGRAMACION
Funciones vectoriales de comparacin
SMBOLO SIGNIFICADO EJEMPLO
any(x) Funcin vectorial; chequea si alguno x=[0 1 2]; any(x)
de los elementos del vector x es ans =
distinto de cero (1 verdadero, 0 falso) 1
any(A) Se aplica a cada columna de la matriz a=[1 0 2; 1 0 2;0 0 0];
A. El resultado es un vector de unos y any(a)
ceros. ans = a=
1 0 1
any(A,dim) Si dim=1, el anlisis es por columna. any(a,1) 1 0 2
Si dim=2, el anlisis es por filas. ans = 1 0 2
1 0 1
any(a,2) 0 0 0
ans =
1
1
0

Autor: Ral Manzanilla D. 80


MATLAB: Curso Introductorio
PROGRAMACION
Funciones vectoriales de comparacin
SMBOLO SIGNIFICADO EJEMPLO
all(x) Funcin vectorial; chequea si todos x=[1 2 3]; all(x)
los elementos del vector x son no ans =
ceros. 1
(1 verdadero, 0 falso)
all(A) Se aplica por separado a cada a=[1 0 2; 1 1 2; 1 0 0]
columna de la matriz A. all(a)
ans = a=
1 0 0 1 0 2
all(A,dim) Si dim=1, el anlisis es por columna. all(a,1)
ans = 1 1 2
Si dim=2, el anlisis es por filas. 1 0 0 1 0 0
all(a,2)
ans =
0
1
0
Autor: Ral Manzanilla D. 81
MATLAB: Curso Introductorio
PROGRAMACION
Funciones vectoriales de comparacin
SMBOLO SIGNIFICADO EJEMPLO
find(x) El resultado es un vector con los x=[1 0 2 3 0]; find(x)
ndices de los elementos no nulos de x ans =
1 3 4
[I,J,V]=find(A) Si se coloca I solamente, se obtiene [i,j,v]=find(a); a =
un vector con los ndices de 102
112
elementos no nulos de A, recorriendo 100
A como un vector (por columna) i'
Si se coloca I y J, solamente, se ans =
obtienen los vectores con los ndices 1 2 3 2 1 2
j'
i, j de elementos no nulos de A ans =
Si se coloca I, J y V, adems se 1 1 1 2 3 3
obtiene en el vector V los valores no v'
ans =
nulos de A 1 1 1 1 2 2

Autor: Ral Manzanilla D. 82


MATLAB: Curso Introductorio
PROGRAMACION
Otras funciones vectoriales y matriciales
SMBOLO SIGNIFICADO EJEMPLO
exist(var) Comprueba si la variable var existe exist('a')
ans =
1
isnan(x) Chequea si hay valores NaN, x=[1 0/0]
devolviendo una matriz de unos y ceros x=
1 NaN
isnan(x)
ans =
0 1
isinf(x) Chequea si hay valores Inf, devolviendo x=[1 2/0]
una matriz de unos y ceros x=
1 Inf
isinf(x)
ans =
0 1

Autor: Ral Manzanilla D. 83


MATLAB: Curso Introductorio
PROGRAMACION
Otras funciones vectoriales y matriciales
SMBOLO SIGNIFICADO EJEMPLO
isfinite(x) chequea si los valores son finitos isfinite(x)
ans =
1 0
isempty(x) Chequea si un vector o matriz est x=[]
vaco x=
[]
isempty(x)
ans =
1
isglobal(x) Chequea si una variable es global isglobal(x)
ans =
0
issparse(x) Chequea si una matriz es dispersa issparse(x)
(sparse, es decir, con un gran nmero ans =
de elementos cero) 0
Autor: Ral Manzanilla D. 84
MATLAB: Curso Introductorio
PROGRAMACION
La sentencia condicional IF
if condicion1
bloque1
elseif condicion2
bloque2
elseif condicion3
bloque3
else % opcin por defecto
bloque4
end

Autor: Ral Manzanilla D. 85


MATLAB: Curso Introductorio
PROGRAMACION
La sentencia condicional IF
v=[0,2,3];
if v(1) > 0, disp(['v(1)= ',num2str(v(1))])
elseif v(2) > 0, disp(['v(2)= ',num2str(v(2))])
elseif v(3) > 0, disp(['v(3)= ',num2str(v(3))])
else disp(Dimensin de v excedida')
end
v(2)= 2
v=[0,0,-1];
if v(1) > 0, disp(['v(1)= ',num2str(v(1))])
elseif v(2) > 0, disp(['v(2)= ',num2str(v(2))])
elseif v(3) > 0, disp(['v(3)= ',num2str(v(3))])
else disp(Dimensin de v excedida')
end
Dimensin de v excedida

Autor: Ral Manzanilla D. 86


MATLAB: Curso Introductorio
PROGRAMACION
La sentencia condicional SWITCH
switch expresin_bifurcacin
case case_expr1,
bloque_sentencias1
case {case_expr2, case_expr3, case_expr4,...}
bloque_sentencias2
..
..
otherwise, % opcin por defecto
bloque_sentenciasN
end

Autor: Ral Manzanilla D. 87


MATLAB: Curso Introductorio
PROGRAMACION
La sentencia condicional SWITCH
a='polinomio';
switch a
case 'polinomio', disp(['funcin',' ',a]),
case 'logaritmo base 10', disp(['funcin','
',a]),
otherwise disp('funcin desconocida') a=pepe';
end switch a
funcin polinomio case polinomio', disp([funcin',' ',a]),
case 'logaritmo base 10', disp(['funcin','
',a]),
otherwise disp('funcin desconocida')
end
funcin desconocida
Autor: Ral Manzanilla D. 88
MATLAB: Curso Introductorio
PROGRAMACION
La sentencia FOR
Forma clsica escalar:
for i=valor_inicial : incremento : valor_final
bloque_sentencias
end
Forma vectorial:
for i=A % A es una matrix
bloque_sentencias
End
En este caso el Indice i del lazo es un vector que va
tomando sucesivamente los valores de la columna de la
matriz A

Autor: Ral Manzanilla D. 89


MATLAB: Curso Introductorio
PROGRAMACION
La sentencia FOR
Forma clsica escalar:
for i=1:2:10 disp('i*2= '), disp(2*i), end
i*2=
2
i*2=
6
i*2=
10
i*2=
14
i*2=
18

Autor: Ral Manzanilla D. 90


MATLAB: Curso Introductorio
PROGRAMACION
La sentencia FOR
Forma vectorial :
a=eye(3);for i=A disp('i''= '), disp(i'), end
i'=
1 0 0

i'=
0 1 0

i'=
0 0 1

Autor: Ral Manzanilla D. 91


MATLAB: Curso Introductorio
PROGRAMACION
La sentencia WHILE
while condicion
bloque_sentencias
end

A=10*rand(3,3)
E = 0*A; F = E + eye(size(E)); N = 1;
while norm(E+F-E,1) > 0,
E = E + F;
F = A*F/N;
N = N + 1;
end
Autor: Ral Manzanilla D. 92
MATLAB: Curso Introductorio
PROGRAMACION
La sentencia BREAK
for i=1:100
for j=1:200
if j*i==30 disp(['i=',num2str(i),' j=',num2str(j)]), break, end
end
if i==30 disp(['Termina con i= ',num2str(i)]), break, end
end
i=1 j=30
i=2 j=15
i=3 j=10
i=5 j=6
i=6 j=5
i=10 j=3
i=15 j=2
i=30 j=1
Termina con i= 30
i
i=
30
Autor: Ral Manzanilla D. 93
MATLAB: Curso Introductorio
Manipulacin de datos
Interaccin por teclado
La funcin input, aqu se captura directamente la data deseada
a=input(['Dar la matriz 3x3 \n ', ...
'formatos: \n [...; ...; ...] \n ', ...
'.... indica una fila de la matriz \n'])
Dar la matriz 3x3
formatos:
[...; ...; ...]
.... indica una fila de la matriz
[1,2,3;4,5,6;7,8,9]
a=
1 2 3
4 5 6
7 8 9
Autor: Ral Manzanilla D. 94
MATLAB: Curso Introductorio
Manipulacin de datos
Interaccin por teclado
La funcin input ( otra versin ), aqu se captura la expresin y
no se evalua

a=input(['Dar la matriz 3x3 \n ', ...


'formatos: \n [...; ...; ...] \n ', ...
'.... indica una fila de la matriz \n'],s)
Dar la matriz 3x3
formatos:
[...; ...; ...]
.... indica una fila de la matriz
[1,2,3;4,5,6;7,8,9]
a=
[1,2,3;4,5,6;7,8,9]
Autor: Ral Manzanilla D. 95
MATLAB: Curso Introductorio
Manipulacin de datos
Archivos de Datos
*.txt Archivo de datos simple
*.m Archivo de datos mltiples. Util para la definicin de funciones.
Base de la programacin de MATLAB
*.p Archivos precompilados que se ejecutan mas rpido que los *.m
*.mat Archivos transportables entre versiones de MATLAB en distintos
tipos de computadores, porque contienen informacin sobre el
tipo de mquina en el encabezado del archivo y el programa
realiza la transformacin de modo automtico. Normalmente
utilizados para salvar el entorno de trabajo.
*.mex Archivos ejecutables y tienen precedencia sobre los *.m

Autor: Ral Manzanilla D. 96


MATLAB: Curso Introductorio
Manipulacin de datos
Archivos de Datos *.m
Lectura .m Resultado
a=[ 1 2 3 4 a=
1 2 3 4
5678 5 6 7 8
9 10 11 12 9 10 11 12
] hola
c=
disp('hola') 3 6 9 12
p=3; 15 18 21 24
c=p*a 27 30 33 36
alumno =
alumno=struct('Nombre','Raul','apellido', Nombre: 'Raul'
'Manzanilla','Edad',24)} apellido: 'Manzanilla'
Edad: 24
Autor: Ral Manzanilla D. 97
MATLAB: Curso Introductorio
Manipulacin de datos
Lectura y escritura de archivos de Datos

Apertura de archivos
Fopen
Lectura
fscanf, sscanf
Escritura
sprintf, sprintf
Clausura del archivo
fclose

Autor: Ral Manzanilla D. 98


MATLAB: Curso Introductorio
Manipulacin de datos
Apertura de archivos fopen
[fi,texto] = fopen(nombrearchivo','c')
fi identificador del archivo: Usado para escribir o leer
sobre el archivo
texto Mensaje si la apertura del archivo no es exitosa
nombrearchivo Nombre del archivo que desea abrir
c Indicador de la operacin que desea realizar
r : lectura (read )
w : escritura (write), lo crea si es necesario
a : aade al final (append ), lo crea si es necesario
r+ : lectura y escritura, no lo crea
w+ : lo trunca o lo crea para lectura y escritura
a+ : lectura y aade al final, lo crea si es necesario
Autor: Ral Manzanilla D. 99
MATLAB: Curso Introductorio
Manipulacin de datos
Lectura de archivos fscanf
[A,contador] = fscanf(fi,formato',size)
A Variable que toma el valor leido
contador Opcional, Nmero de valores ledos con xito
fi identificador del archivo: Obtenido al hacer fopen()
formato %s : para cadenas de caracteres
(Como en el lenguaje C) %d : para variables enteras
%f : para variables de punto flotante
%lf : para variables de doble precisin
%c : Lee los caracteres y conserva los blancos
size Opcional, limite mximo de elementos a leer

Autor: Ral Manzanilla D. 100


MATLAB: Curso Introductorio
Manipulacin de datos
Lectura de archivos fscanf
Leer.dat Ejemplo
2 fi=fopen('leer.dat','r') persona.nombre=fscanf(fi,'%s',1);
345 fi = persona.apellido=fscanf(fi,'%s',1);
678 3 persona.edad=fscanf(fi,'%d',1);
9 10 11 a=fscanf(fi,'%d',1) persona.institucuion=fscanf(fi,'%s',1)
a=
raul persona =
2
manzanilla nombre: 'raul'
m=fscanf(fi,'%d',[3,3])
23 usb apellido: 'manzanilla'
m=
3 6 9 edad: 23
4 7 10 institucion: 'usb'
5 8 11
Autor: Ral Manzanilla D. 101
MATLAB: Curso Introductorio
Manipulacin de datos
Lectura de archivos fscanf
[a,c,e,p] = sscanf(car,formato',size)
a Variable que toma el valor leido
c Opcional, Nmero de valores ledos con xito
e Opcional, Mensaje de error si ocurre, en caso contrario una
matriz vacia
p Opcional, indica un carcter mas que los efectivamente ledos
car Cadena de caracters, donde se reliza la extraccin
formato %s : para cadenas de caracteres
%d : para variables enteras
(Como en %f : para variables de punto flotante
el lenguaje
%lf : para variables de doble precisin
C)
%c : Lee los caracteres y conserva los blancos
size Opcional, limite mximo de elementos a leer
Autor: Ral Manzanilla D. 102
MATLAB: Curso Introductorio
Manipulacin de datos
Lectura de archivos sscanf
EJEMPLO
fi=fopen('leer.dat','r') [m,c,e,p]=sscanf(car(ini:fin(2)),'%d',[3,3]);ini=ini+p
fi = [p.nombre,c,e,p]=sscanf(car(ini:fin(2)),'%s',1); ini=ini+p;
3 [p.apellido,c,e,p]=sscanf(car(ini:fin(2)),'%s',1); ini=ini+p;
car=fscanf(fi,'%c') [p.edad,c,e,p]=sscanf(car(ini:fin(2)),'%f',1);ini=ini+p;
[p.instituto,c,e,p]=sscanf(car(ini:fin(2)),'%s',1); ini=ini+p;
car =
a,m,p
2 a=
345 2
678 m=
9 10 11 3 6 9
raul 4 7 10
manzanilla 5 8 11
23 usb p=
ini=1;fin=size(car); nombre: 'raul'
apellido: 'manzanilla'
[a,c,e,p]=sscanf(car(ini:fin(2)),'%d',1);
edad: 23
ini=ini+p; instituto: 'usb'

Autor: Ral Manzanilla D. 103


MATLAB: Curso Introductorio
Manipulacin de datos
Escritura de archivos fprintf
contador = fprintf(fi,formato',A,......)
A,..... Variable que se desea imprimir
contador Opcional, Nmero de bytes impresos con xito
fi identificador del archivo: Obtenido al hacer fopen()
formato %s : para cadenas de caracteres
(Como en el lenguaje C) %d : para variables enteras
%f : para variables de punto flotante
%lf : para variables de doble precisin
%c : Lee los caracteres y conserva los blancos

Autor: Ral Manzanilla D. 104


MATLAB: Curso Introductorio
Manipulacin de datos
Escritura de archivos fprintf
Ejemplo Escribir.dat
fi=fopen(escribir.dat','r') fprintf(fi,' %3d \n',a); 2
a =2; fprintf(fi,' %f %f %f \n',m); 3.000000
m= [ 3 6 9 4.000000
fprintf(fi,' %s \n',p.nombre);
4 7 10 5.000000
fprintf(fi,' %s \n',p.apellido); 6.000000
5 8 11];
fprintf(fi,' %d \n',p.edad); 7.000000
p=struct('nombre','Raul', ...
'apellido','Manzanilla', ... fprintf(fi,' %s \n',p.Inst); 8.000000
'edad',24,'Inst','USB') fclose(fi); 9.000000
p= 10.000000
nombre: 'Raul' 11.000000
apellido: 'Manzanilla' Raul
edad: 24
Inst: 'USB' Manzanilla
24
USB
Autor: Ral Manzanilla D. 105
MATLAB: Curso Introductorio
Manipulacin de datos
Escritura de archivos sprintf
[s,e] = sprintf(formato,A,......)
A Variable que se desea imprimir
s Variable de tipo carcter que toma los valores a imprimir
e Opcional, Mensaje de error si ocurre, en caso contrario una
matriz vacia
formato %s : para cadenas de caracteres
%d : para variables enteras
(Como en %f : para variables de punto flotante
el lenguaje
%lf : para variables de doble precisin
C)
%c : Lee los caracteres y conserva los blancos

Autor: Ral Manzanilla D. 106


MATLAB: Curso Introductorio
Manipulacin de datos
Escritura de archivos sprintf

EJEMPLO
a =2; s=[s,sprintf(' %s \n',p.Inst)];
m= [ 3 6 9 s
4 7 10
5 8 11]; s=
p=struct('nombre','Raul', ... 2
'apellido','Manzanilla', ... 3.000000 4.000000 5.000000
'edad',24,'Inst','USB') 6.000000 7.000000 8.000000
s=sprintf(' %3d \n',a); 9.000000 10.000000 11.000000
s=[s,sprintf(' %f %f %f \n',m)]; Raul
s=[s,sprintf(' %s \n',p.nombre)]; Manzanilla
s=[s,sprintf(' %s \n',p.apellido)]; 24
s=[s,sprintf(' %d \n',p.edad)]; USB
Autor: Ral Manzanilla D. 107
MATLAB: Curso Introductorio
Archivos de funciones
Etapas de definicin de una funcin

1. Crear el archivo *.m


2. Escribir la funcin

SINTAXIS DE LA ESCRITURA
% COMENTARIOS ( Aparecern al solicitar la ayuda de la funcin)
function [ lista de valores de retorno ] = name( lista de argumentos )

Autor: Ral Manzanilla D. 108


MATLAB: Curso Introductorio
Archivos de funciones
Etapas de definicin de una funcin

Las variables definidas dentro de una


funcin son locales

Las variables son pasadas por referencia y


solamente se crean variables locales si se
intenta modificar una variable pasada como
parametro

Para definir variables globales se debe


utilizar la instruccin global

Autor: Ral Manzanilla D. 109


MATLAB: Curso Introductorio
Archivos de funciones
Forma comn

% La funcin nombre sirve para .........


function [lista de valores de retorno] = nombre( lista de argumentos)
lista de valores de retorno Variables donde se devuelven los
resultados de la funcin. Se separan por ,
lista de argumentos Argumentos de entrada para la funcin.
Se separan por ,
% Indicacin de comentario. Todo los
comentarios colocados al principio del
archivo nombre.m sern tomados como la
ayuda del programa nombre

Autor: Ral Manzanilla D. 110


MATLAB: Curso Introductorio
Archivos de funciones
pvect.m uso
% Producto vectorial para vectores de 3D u=[1 2 3];v=[4 5 6];u,v
function producto = pvect3d (u,v) u=
if length(u)~=3 | length(v)~=3 1 2 3
disp( Error en las dimensiones de los vectores');
v=
mess='Error';
4 5 6
return
[w,m]=pvect(u,v)
Else
w=
producto(1,1)=u(2)*v(3)-u(3)*v(2);
-3
producto(2,1)=u(3)*v(1)-u(1)*v(3); 6
producto(3,1)=u(1)*v(2)-u(2)*v(1); -3
mess=todo bien'; m=
End todo bien
Autor: Ral Manzanilla D. 111
MATLAB: Curso Introductorio
Archivos de funciones
Forma con parametros variables

function [listVal, varargout] = nombre( listArg, varargin)


listVal Variables donde se devuelven los resultados de la funcin. Se
separan por ,
varargout Vector de celdas para capturar todos aquellos valores de retorno que
sean necesarios. Siempre se coloca como ltimo en la lista.
listArg Argumentos de entrada para la funcin. Se separan por ,

varargin Vector de celdas para capturar todos aquellos argumentos de entrada


que sean necesarios. Siempre se coloca como ltimo en la lista.

Autor: Ral Manzanilla D. 112


MATLAB: Curso Introductorio
Archivos de funciones
pvectvarg.m uso
% Producto vectorial para vectores de 3D [w,m]=pvectvarg(u,v)
function varargout= pvect (varargin) w=
if length(varargin{1})~=3 | length(varargin{2})~=3 -3
disp('Error en las dimensiones de los vectores'); 6
varargout{2}='Error'; -3
return m=
else todo bien
varargout{1}(1,1)=varargin{1}(2)*varargin{2}(3)- ...
varargin{1}(3)*varargin{2}(2);
varargout{1}(2,1)=varargin{1}(3)*varargin{2}(1)- ...
varargin{1}(1)*varargin{2}(3);
varargout{1}(3,1)=varargin{1}(1)*varargin{2}(2)- ...
varargin{1}(2)*varargin{2}(1);
varargout{2}='todo bien';
end
Autor: Ral Manzanilla D. 113
MATLAB: Curso Introductorio
Archivos de funciones
Subfunciones

fun.m uso
function y=archivo(a,b) La funcin fun ser accesible por todas
y=subfun1(a,b); las rutinas que puedan accesarla.

function x=subfun1(y,z) Las funciones subfun1 y subfun2 sern


x=subfun2(y,z); solamente accesibles por las funciones
definidas dentro del archivo fun.m

function x=subfun2(y,z)
x=y+z+2;

Autor: Ral Manzanilla D. 114


MATLAB: Curso Introductorio
Archivos de funciones
Funciones privadas
Se definen dentro de un directorio
llamado Private
Solamente pueden ser llamadas por
funciones del directorio padre
ejercicios
private
fun1.m
fun2.m
fun3.m
fun4.m
Fun.m

Autor: Ral Manzanilla D. 115


MATLAB: Curso Introductorio
Archivos de funciones
Funciones precompiladas
Se utiliza la funcin pcode para generar
un archivo .p

Al hacer uso dela funcin matlab buscara


primero el archivo .p

Si el .m no existe no mostrar la ayuda

Autor: Ral Manzanilla D. 116


MATLAB: Curso Introductorio
Archivos de funciones
Variables Persistentes
Es una Variable que nunca pierde su
valor entre llamados de la funcin

Se inicializa, si se efectua el comando


clear nombre_de_la_funcin o se modifica
el archivo .m que la contiene.

Se declaran con la sintaxis :


persistent var1, var2, var3, .....

Autor: Ral Manzanilla D. 117


MATLAB: Curso Introductorio
Gestin de archivos de MATLAB
El archivo .m

mlock xxx.m, bloquea el archivo xxx.m


evitando asi su modificacin y el reinicio
de variables persistentes

munlock xxx.m, permite desbloquear el


archivo

mislocked xxx.m, verfica el estatus de


bloqueo del archivo

Autor: Ral Manzanilla D. 118


MATLAB: Curso Introductorio
Gestin de archivos de MATLAB
El archivo contents.m

El archivo contents.m debe contener una


lista de comentarios indicando el
contenido de las diferentes funciones o
utilidades que se disponen en ese
directorio

La clasificacin es por directorio

Si contents.m es accesible desde el path


de bsqueda, entonces ser visible en el
HelpWindows y se vern las ayudas de los
elementos disponibles en el diectorio
Autor: Ral Manzanilla D. 119
MATLAB: Curso Introductorio
Grficos 2D
Funciones utilitarias mas comumente usadas

plot() Crea un grfico a partir de vectores y/o columnas de matrices, con


escalas Lineales sobre ambos ejes.
loglog() Idntica a plot() con escala logartmica en ambos ejes

semilogx() Idntica a plot() con escala lineal en el eje de ordenadas y


logartmica en el eje de abscisas
Idntica a plot() con escala lineal en el eje de abscisas y
semilogy() logartmica en el eje de ordenadas
title('ttulo') Aade un ttulo al dibujo

xlabel(x') Aade una etiqueta al eje de abscisas. Con xlabel off desaparece

ylabel(y') Aade una etiqueta al eje de ordenadas. Con ylabel off desaparece

Autor: Ral Manzanilla D. 120


MATLAB: Curso Introductorio
Grficos 2D
Funciones utilitarias mas comumente usadas

text(x,y,'texto') Introduce 'texto' en el lugar especificado por las coordenadas x e


y. Si x e y son vectores, el texto se repite por cada par de
elementos. Si texto es tambin un vector de cadenas de texto de
la misma dimensin, cada elemento se escribe en las
coordenadas correspondientes
gtext('texto') Introduce texto con ayuda del ratn: el cursor cambia de forma y
se espera un clic para introducir el texto en esa posicin
legend() Define rtulos para las distintas lneas o ejes utilizados en la
figura. Para ms detalle, consultar el Help
grid Activa la inclusin de una cuadrcula en el dibujo. Con grid off
desaparece la cuadrcula

Autor: Ral Manzanilla D. 121


MATLAB: Curso Introductorio
Grficos 2D
La funcin plot()

Plot(x,y,s)
x Vector de coordenas en x

y Vector de coordenadas en y, puede ser una matriz con el nmero de filas


igual a el nmero de coordenadas de x
s Cadena de caracteres que indican la forma de la linea cde

Autor: Ral Manzanilla D. 122


MATLAB: Curso Introductorio
Grficos 2D
La funcin plot()
cde
c d e
y yellow . point - solid
m magenta o circle : dotted
c cyan x x-mark -. dashdot
r red + plus -- dashed
g green * star
b blue s square
w white d diamond
k black v triangle (down )
^ triangle (up)
< triangle (left)
> triangle (right )
p pentagram
h hexagram
Autor: Ral Manzanilla D. 123

Potrebbero piacerti anche