You are on page 1of 52

+

Procesamiento
digital de
imgenes

Introduccin a MATLAB
2012 Cinvestav-Tamaulipas

30-08-2012

CONTENIDO
1. Introduccin
2. Ambiente de desarrollo
3. Operadores y funciones bsicas
4. Vectores y matrices
5. Operaciones relacionales y lgicas
6. Grficos 2D y 3D
7. Lectura y despliegue de imgenes
8. Programacin
9. M-archivos
10.Interfaz grfica de usuario

INTRODUCCIN

MATLAB es la abreviacin de MATrix LABoratory.

Es un lenguaje de programacin de alto nivel


enfocado a computacin numrica desarrollado por
MathWorks.
Permite la manipulacin de matrices, posee
herramientas de graficacin, creacin de interfaces
de usuario e interaccin con otros lenguajes como C,
C++ y Fortran.
Su fcil manejo matricial permite el desarrollo de
algoritmos complejos en relativamente poco tiempo.

INTRODUCCIN
SISTEMA
OPERATIVO
MATLAB
IDE

32
TOOLBOXES

AMBIENTE DE DESARROLLO
Abrir editor

Variables de trabajo
Carpeta actual
Ventana de comandos
Detalles de archivos
Historial de comandos

EDITOR/DEBUGGER
Archivo .m

Debug
Ejecutar

Cdigo

Comentarios

EDITOR/DEBUGGER
Set/Clear breakingpoint: Coloca o borra un punto de ruptura
en la lnea en que est colocado el cursor.
Clear all breakingpoints: Borra todos los puntos de ruptura.
Step: Avanza un paso en el programa.
Step in: Avanza un paso en el programa y si en ese paso se llama a
una funcin, entra en dicha funcin.
Step out: Avanza un paso en el programa y si en ese paso se llama
a una funcin, entra en dicha funcin.
Continue: Continua ejecutando hasta el siguiente punto de
ruptura.
Quit debugging: Termina la ejecucin del debugger.

AYUDA
El comando help seguido del nombre de
la funcin deseada despliega en la ventana
de comandos el manual de ayuda de dicha
funcin.
Tambin, existe
una interfaz grfica que
documentacin de cada toolbox.

proporciona

la

OPERADORES Y FUNCIONES

Matemtica sencilla. Las operaciones bsicas son:


Operacin

Smbolo

Expresin

Suma

a + b

Multiplicacin

Divisin

a b

Resta

Potencia

a b
a / b

a ^ b

El orden de precedencia es:


Orden de precedencia de operaciones
1
2

OPERADORES Y FUNCIONES
MATLAB no toma en cuenta los espacios entre las
variables y los operadores.
Si no se desea retornar en la ventana de comandos
el resultado de la evaluacin de una operacin o
funcin se escribe (;) al final de la sentencia.
Si la sentencia es demasiada larga para
visualizarse en una sola lnea, se puede agregar
(...) seguido de la tecla para indicar que
contina en la lnea siguiente.

10

OPERADORES Y FUNCIONES

Las variables son sensibles a las maysculas, deben comenzar con


una letra y pueden nombrarse hasta con 63 caracteres.

Algunas variables especiales en formato corto son:

Variable

Definicin

ans

Variable usada por defecto para guardar el ltimo resultado

pi

Razn de una circunferencia a su dimetro

eps

Nmero ms pequeo tal que 1+eps > 1

inf

Infinito

nan

Magnitud no numrica

i, j

Valor

3.1416
2.2204e-16
Inf
NaN

i=j=

0 + 1.0000i

realmin

Nmero real positivo ms pequeo que es utilizable

2.2251e-308

realmax

Nmero real positivo ms grande que es utilizable

1.7977e+308

11

OPERADORES Y FUNCIONES

Funciones matemticas comunes: Aproximacin.


Funcin
ceil(x)

Definicin

Ejemplo
x=5.92

Redondea hacia infinito

Redondea hacia cero

floor(x)

Redondea hacia menos infinito

round(x)

Redondea hacia el entero ms prximo

fix(x)

12

OPERADORES Y FUNCIONES

Funciones matemticas comunes: Operaciones diversas.


Funcin

Definicin

abs(x)

Valor absoluto

exp(x)

Exponencial

sign(x)
gcd(m,n)
lcm(m,n)
log(x)

log2(x)

log10(x)
mod(x,y)
rem(x,y)
sqrt(x)

Signo del argumento si x es un valor real


Mximo comn divisor
Mnimo comn mltiplo
Logaritmo Neperiano o natural
Logaritmo en base 2
Logaritmo decimal
Mdulo despus de la divisin
Resto de la divisin entera
Raz cuadrada

nthroot(x,n) Raz n-sima de x

13

OPERADORES Y FUNCIONES

Funciones matemticas comunes: Nmeros complejos.


Funcin
abs(x)
angle(x)

complex(y,z)
conj(x)
imag(x)
real(x)
isreal(x)

Definicin
Magnitud del nmero complejo x

ngulo (en radianes) del complejo x


Genera el nmero complejo y+zi

Conjugado del nmero complejo x

Parte imaginaria del nmero complejo x


Parte real del nmero complejo x

Devuelve 1 si es real y 0 si es complejo

14

OPERADORES Y FUNCIONES

Funciones matemticas comunes: Trigonomtricas.


En radianes

Nombre

En grados

Funcin

Inversa

Hiperblica

Inversa
hiperblica

Funcin

Inversa

Seno

sin(x)

asin(x)

sinh(x)

asinh(x)

sind(x)

asind(x)

Coseno

cos(x)

acos(x)

cosh(x)

acosh(x)

cosd(x)

acosd(x)

Tangente

tan(x)

atan(x)

tanh(x)

atanh(x)

tand(x)

atand(x)

Cosecante

csc(x)

acsc(x)

csch(x)

acsch(x)

cscd(x)

acscd(x)

Secante

sec(x)

asec(x)

sech(x)

asech(x)

secd(x)

asecd(x)

Cotangente

cot(x)

acot(x)

coth(x)

acoth(x)

cotd(x)

acotd(x)

15

VECTORES Y MATRICES

Vectores y Matrices
 Para crear un vector se introducen los valores separados por
espacios o comas, todo ello entre corchetes.
 Para crear una matriz, se hace de forma anloga al vector pero
separando las filas por (;).
x=[5,7,-2,4,-6,9];
%Crea un vector x
y=[1 2 3;4 5 6;7 8 9]; %Crea una matriz y

Direccionamiento de vectores
 Para acceder a los elementos individuales de un vector se utilizan
subndices de la forma x(n) que indica el n-simo elemento del
vector x.
 Para acceder al elemento final simplemente se escribe x(end).

16

VECTORES Y MATRICES

Direccionamiento de vectores
 Para acceder a un bloque de elementos a la vez se utiliza la
notacin (:), de modo que x(m:n) accede a todos los elementos
desde el m-simo hasta el n-simo del vector x.
 Si se expresa x(m:k:n) se mostrarn los elementos del m-simo
hasta el n-simo con incrementos de k.

 Otra forma de obtener un conjunto concreto de elementos del


vector es indicando entre corchetes [] las posiciones de los
elementos de inters.

x=[5,7,-2,4,-6,9]

x(2) 7
x(end) 9
x(2:4) 7 -2 4
x(1:2:end-1) 5 -2 -6
x([3 5 1]) -2 -6 5

%
%
%
%
%

Obtiene
Obtiene
Obtiene
Obtiene
Obtiene

el segundo elemento
el elemento final
un bloque de elementos
un bloque con pasos
elementos especficos

17

VECTORES Y MATRICES

Direccionamiento de matrices
 Para acceder a los elementos de una matriz se debe indicar la fila
m y la columna n del elemento de inters X(m,n).
 Si se desea obtener los elementos de toda una fila m se usan (:)
como X(m,:).
 Anlogamente, si se desea obtener los elementos de toda una
columna n se escribe X(:,n).

 Al igual que en los vectores, se puede acceder a una serie de filas


o columnas especficas.
y=[1 2 3;
4 5 6;
7 8 9]

y(3,2) 8
y(1,:) 1
y(:,end)
y(2,[1:2])
y([3 1],3)

2
3

3
6 9
4 5
9 3

%Obtiene el elemento en (3,2)


%Obtiene la fila 1
%Obtiene la columna final
%De la 2 fila obtiene los elementos 1 y 2
%De la 3 columna obtiene los elementos 3 y 1

18

VECTORES Y MATRICES

Direccionamiento de matrices
Tambin se puede acceder a cada elemento
de una matriz utilizando un nico ndice, de
modo que el orden de ndices en MATLAB
est definido de la siguiente forma (e.g. 44):
y=[8 18 19 3;
5 17 11 8;
9
5 16 4;
27 26 13 6]

13

11

15

10

12

y(5) 18
y(end) 6
y(4:7) 27 18 17 7
y(1:3:end) 1 27 5
y([15 9 3]) 4 19 9 11 3 6

Funciones relacionadas: sub2ind y ind2sub.

14

16

19

VECTORES Y MATRICES

Construccin rpida de vectores: se pueden crear


vectores haciendo uso de las siguientes sentencias
Sentencia

Definicin

(a:b)

Crea un vector que comienza en a y termina en b con


incrementos de 1.

(a:c:b)

Crea un vector que comienza en a y termina en b con


incrementos de c.

linspace(a,b,c)

Genera un vector linealmente espaciado entre los


valores a y b con c elementos. Si c se omite crea 100
elementos.

logspace(a,b,c)

Genera un vector logartmicamente espaciado entre


los valores 10a y 10b con c elementos. Si c se omite
crea 50 elementos.

20

VECTORES Y MATRICES

Construccin rpida de algunas matrices: se pueden


crear matrices definiendo su tamao mn.
Tamao
Definicin

mn

nn

zeros(m,n)

zeros(n)

Crea una matriz de ceros

ones(m,n)

ones(n)

Crea una matriz de unos

rand(m,n)

rand(n)

Crea una matriz de nmeros aleatorios entre [0,1] con


distribucin uniforme.

randn(m,n)

randn(n)

Crea una matriz de nmeros aleatorios entre [0,1] con


distribucin normal.

eye(m,n)

eye(n)

----

magic(n)

Crea una matriz con unos en su diagonal y ceros en el resto


Crea una matriz cuyas filas y columnas suman lo mismo

21

VECTORES Y MATRICES

Operaciones bsicas con matrices


Smbolo

Expresin

Definicin

A + B

Suma de matrices

A B

Resta de matrices

A B

Multiplicacin matricial

A . B

Multiplicacin puntual

A / B

./

A ./ B

Multiplicacin de A por B-1

A \ B

.\

A .\ B

A ^ n

.^

A .^ B

'

A'

Divisin puntual por la derecha


Multiplicacin de A-1 por B
Divisin puntual por la izquierda
Potenciacin, n es una escalar
Potenciacin puntual
Transpuesta de A

22

VECTORES Y MATRICES

Funciones para el anlisis de matrices


Funcin
det(A)

diag(A)
eig(A)
inv(A)

pinv(A)

length(A)
orth(A)
size(A)

trace(A)
tril(A)
triu(A)

Definicin
Determinante
Extrae la diagonal de la matriz como un vector columna
Valores propios
Inversa de la matriz
Pseudoinversa de la matriz
Mxima dimensin
Ortogonalizacin
Dimensiones de la matriz
Suma de la diagonal de la matriz
Matriz triangular inferior a partir de la matriz A

Matriz triangular superior a partir de la matriz A

23

VECTORES Y MATRICES

Otras operaciones con matrices


Funcin
find(A)

fliplr(A)

Definicin
Devuelve los ndices de los elementos distintos de cero
Intercambia la matriz de izquierda a derecha

flipud(A)

Intercambia la matriz de arriba a abajo

rot90(A,n)

Gira la matriz 90n en sentido antihorario

reshape(A,m,n)

exp,log,sqrt,...

Devuelve una matriz mn cuyos elementos se toman por columnas de


A. Si A no contiene mn elementos genera un error.
Operan elemento a elemento

24

VECTORES Y MATRICES

Anlisis de datos
Funcin
corrcoef(X)
cov(X)

cumsum(X)
diff(X)
max(X)
min(X)

mean(X)

median(X)
prod(X)
sum(X)

sort(X)
std(X)
var(X)

Definicin
Coeficientes de correlacin
Matriz de covarianzas
Suma acumulativa
Diferencia entre elementos adyacentes de X
Mximo
Mnimo
Media de los valores
Mediana de los valores
Producto de los elementos
Suma de los elementos
Ordena los valores en orden ascendente
Desviacin estndar de la muestra
Varianza de la muestra

25

HIPERMATRICES
MATLAB permite trabajar de una forma sencilla con matrices de
ms de dos dimensiones.

Algunas funciones para generar matrices admiten ms de dos


argumentos y pueden ser utilizadas para generar hipermatrices:
rand, randn, zeros, ones, etc.

M(:,:,1)=[1 2 3;4 5 6]; %Se define la primera capa


M(:,:,2)=[7 8 9;1 2 3]; %Se define la segunda capa
Z = zeros(3,4,5); %Hipermatriz nula de 345 capas

OPERACIONES RELACIONALES
Y LGICAS

Operadores relacionales bsicos


Operador
<

<=
>

>=
==
~=

Significado
Menor que
Menor o igual que
Mayor que
Mayor o igual que
Igual a
Distinto de

Operadores lgicos bsicos


Operador
&
|
~

Significado
AND
OR
NOT

26

OPERACIONES RELACIONALES

27

Y LGICAS

Funciones relacionales y lgicos adicionales

Funcin
xor(x,y)

Operacin OR-exclusiva

any(x)

Devuelve 1 si algn elemento en x es no nulo y devuelve 0 si todos son


nulos. En caso de matrices da una respuesta por cada columna

all(x)

Devuelve 1 si todos los elementos x son no nulos y devuelve 0 si alguno es


nulo. En caso de matrices da una respuesta por cada columna

isnan(x)
isinf(x)

Significado

Devuelve 1s en las posiciones de x donde hay NaN.


Devuelve 1s en las posiciones de x donde hay Inf.

Otros casos similares: ischar, isempty, isequal, isfloat, isreal,


isinteger, islogical,

OPERACIONES RELACIONALES
Y LGICAS

El orden de precedencia es:


Orden de precedencia de operaciones
^

2
3
4
5

>

<

>=

.^

./

<=

&

.\

==

~=

28

29

GRFICOS 2D

La funcin plot genera un grfico.


Los argumentos deben ser vectores
de la misma longitud:
x = 0:0.01:1;
y = sin(2pix);
plot(x,y);

% Eje x
% Eje y
% Grfica

Tambin, se pueden superponer


curvas sobre los mismos ejes:
x = 0:0.01:1;
f = sin(2pix);
g = cos(4pix);
plot(x,f,x,g);

%
%
%
%

Eje x
Funcin 1
Funcin 2
Grfica

30

GRFICOS 2D

Manipulacin de etiquetas de la grfica:


Funcin

xlabel(texto)
ylabel(texto)
title(texto)

text(x,y, texto)
grid on / off

axis([xmin xmax ymin ymax])


axis equal

Definicin
Etiqueta sobre eje x del grfico actual
Etiqueta sobre eje y del grfico actual
Ttulo en la cabecera del grfico actual
Texto en un lugar especificado por las coordenadas
Activa/desactiva rejilla
Fija valores mximos y mnimos de los ejes
Escala de los ejes sea igual

axis square

El grfico sea cuadrado

hold on / off

Mantiene/borra el grfico actual

axis normal

Desactiva axis equal y axis square

31

GRFICOS 2D

Otros tipos de grficos 2D


Funcin
area
bar

barh
hist
pie

rose

stairs
stem

loglog

semilogx
semilogy

Definicin
Colorea el rea bajo la curva
Diagrama de barras verticales
Diagrama de barras horizontales
Histograma
Diagrama de sectores
Histograma polar
Grfico de escalera
Secuencia de datos discretos
Escala logartmica en ambos ejes
Escala logartmica en eje x
Escala logartmica en eje y

Ejemplo

32

GRFICOS 2D

Mediante la suncin subplot una ventana de grficos se puede


dividir en m particiones horizontales y en n verticales, para
generar mn subventanas.

x = 0:0.01:1;
% Eje x
y = sin(2pix);
% Funcin 1
n = rand(1,length(x)); %Funcin 2
z = y+0.5n;
% Funcin 3
figure;
subplot(3,1,1); plot(x,y); % Grfico 1
subplot(3,1,2); plot(x,n); % Grfico 2
subplot(3,1,3); plot(x,z); % Grfico 3

33

GRFICOS 3D

La extensin de la funcin plot a 3D es plot3, donde los datos se


introducen en tripletas.

x = -720:720;
y = sind(x);
z = cosd(x);
plot3(x,y,z);

34

GRFICOS 3D

Superficie de malla:
 La funcin [X,Y]=meshgrid(x,y) crea una matriz X cuyas filas son
copias del vector x y una matriz Y cuyas columnas son copias del
vector y.
 Para generar un grfico de malla se usa la funcin mesh(X,Y,Z).

x = -10:0.5:10;
y = x;
[X,Y] = meshgrid(x,y);
%Puntos de la malla
Z = sin(sqrt(X.^2+Y.^2))./...
sqrt(X.^2+Y.^2+0.1); %Evalua cada punto de la malla
mesh(X,Y,Z);

35

GRFICOS 3D

Grficas de superficie: de forma similar a la grfica de malla, la


funcin surf usa los mismos argumentos que mesh, pero rellena los
espacios entre lneas.

x = -10:0.5:10;
y = x;
[X,Y] = meshgrid(x,y);
%Puntos de la malla
Z = sin(sqrt(X.^2+Y.^2))./...
sqrt(X.^2+Y.^2+0.1); %Evalua cada punto de la malla
surf(X,Y,Z);
shading interp; % Sombreado interpolado

36

PROPIEDADES DE LOS
GRFICOS

Colores predefinidos bsicos:


Color
Negro
Blanco
Rojo
Verde
Azul
Amarillo
Magenta

Variable
predefinida

RGB

[0 0 0]

[1 0 0]

w
g
b
y
m

plot(x,y,k,LineWidth,3)

[1 1 1]
[0 1 0]
[0 0 1]
[1 1 0]
[1 0 1]

Grosor de lnea: LineWidth

plot(x,y,r,LineWidth,1)

37

PROPIEDADES DE LOS
GRFICOS

Mapa de colores: la funcin colormap(M) instala la matriz M como


el mapa de color actual.
colormap(cool)
Mapa

Colores

Jet
HSV
Hot
Cool
Spring
Summer
Autumn
Winter
Gray
Bone
Cooper
Pink

colormap(pink)

38

LECTURA DE IMGENES

Para leer una imagen y asignarla a una variable se utiliza la funcin


imread.

Para desplegar una imagen en pantalla se puede utilizar la funcin


imshow imagesc.
I = imread(cameraman.tif);
figure;
subplot 121; imshow(I);
subplot 122; imagesc(I);
colormap(gray);
axis square;

39

PROGRAMACIN
ciclo puede definirse mediante las sentencias for
while de la siguiente forma:

Un

for k = inicio:fin
<orden>
<orden>

<orden>
end
while <condicin>
<orden>
<orden>

<orden>
end

for k = vector_columna
<orden>
<orden>

<orden>
end

40

PROGRAMACIN
sentencia break termina abruptamente la ejecucin
de un ciclo for while.

La

sentencia continue pasa a la siguiente iteracin de


un ciclo for while ignorando las rdenes que existan
entre el continue y el end del ciclo.

La

41

PROGRAMACIN
Un

bloque de condicional puede escribirse de las siguientes


maneras:
if <condicin>
<orden>

<orden>
end
if <condicin>
<orden>
else
<orden>
end

if <condicin>
<orden>
elseif <condicin>
<orden>
elseif <condicin>
<orden>

elseif <condicin>
<orden>
else
<orden>
end

42

ARCHIVOS .M

Existen dos tipos de M-archivos, es decir, con extensin *.m. Un tipo


son los archivos de comando y otro son las funciones.
Fichero de comandos: contiene simplemente un
conjunto
de
comandos
que
se
ejecutan
sucesivamente cuando se teclea el nombre del
fichero en la lnea de comandos de Matlab o se
incluye dicho nombre en otro fichero *.m.
Funciones: se definen anlogamente a las de Matlab,
con su nombre, argumentos y valores de salida. La
sintaxis del encabezado del archivo debe definirse
como:
function [A,B,C] = nombre_funcion(x,y,z)

43

INTERFACES DE USUARIO
QU ES GUIDE?

GUIDE es un entorno de programacin visual disponible en


MATLAB para realizar y ejecutar programas que necesiten ingreso
continuo de datos. Tiene las caractersticas bsicas de todos los
programas visuales como Visual Basic o Visual C++.

44

INICIALIZACIN
Barra de
herramientas

Ventana de
comandos

45

INICIALIZACIN

Plantilla en blanco
Plantillas de ejemplo

46

REA DE DISEO
Alinear
objetos

Editor
de Tab

Editor del
M-file

Editor de
atributos

Navegador
de objetos
Paleta de
objetos

Editor de
men

Editor de barra
de herramientas

Ejecutar

47

ATRIBUTOS DE LOS OBJETOS

Doble click sobre el objeto para ver sus atributos.

Atributos del
objeto
pushbutton

Atributos de
la plantilla en
blanco

48

FUNCIONAMIENTO DE UNA GUI

Una aplicacin GUIDE consta de dos archivos: .m y .fig. El


archivo .m contiene el cdigo correspondiente a cada objeto de la
interfaz, y el .fig contiene los objetos grficos.

En muchos casos, cada vez que se agregue un nuevo objeto a la


interfaz, se genera automticamente su funcin correspondiente
en el archivo-m.
Aplicacin GUIDE

49

FUNCIONAMIENTO DE UNA GUI

Todos los atributos de los objetos y los variables transitorias se


almacenan y se acceden mediante una estructura de datos nica
llamada handles.
handles.variable1 = variable1;


La estructura handles se salva/actualiza siempre mediante la


siguiente instruccin:
guidata(hObject,handles);

donde guidata es la sentencia para salvar los datos de la aplicacin.

Cada objeto grfico debe tener un nombre nico definido


mediante el atributo Tag.

50

FUNCIONAMIENTO DE UNA GUI

La asignacin u obtencin de valores de los objetos grficos se


realiza mediante las sentencias set y get.

% Obtener las coordenadas de posicion del objeto pushbutton1


pos = get(handles.pushbutton1,Position);
% Al objeto edit1 se le asigna fondo blanco y que despliegue
% la palabra Hola 
set(handles.edit1,BackgroundColor,[1 1 1],String,Hola);

51

REFERENCIAS

J. Garca de Jaln, J. I. Rodrguez, J. Vidal, Aprenda


Matlab 7.0 como si estuviera en primero,
Universidad Politcnica de Madrid, 2005.
P. J. Acklam, MATLAB array manipulation tips and
tricks, University of Oslo, 2000.

You might also like