Introducción MATLAB
description
Transcript of Introducción MATLAB
-
+Introduccin a MATLAB
Procesamiento digital de imgenes
30-08-2012 2012 Cinvestav-Tamaulipas
-
+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
1
CONTENIDO
-
+ 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.
2
INTRODUCCIN
-
+MATLAB IDE
3
SISTEMA OPERATIVO
32 TOOLBOXES
INTRODUCCIN
-
+Ventana de comandos
Carpeta actual
Detalles de archivos
Variables de trabajo
Historial de comandos
Abrir editor
4
AMBIENTE DE DESARROLLO
-
+Cdigo Comentarios
Archivo .m
Ejecutar Debug
5
EDITOR/DEBUGGER
-
+ 6
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.
EDITOR/DEBUGGER
-
+ El comando help seguido del nombre de la funcin deseada despliega en la ventana de comandos el manual de ayuda de dicha funcin.
7
Tambin, existe una interfaz grfica que proporciona la documentacin de cada toolbox.
AYUDA
-
+ 8
Matemtica sencilla. Las operaciones bsicas son:
Operacin Smbolo Expresin
Suma + a + b Resta a b
Multiplicacin a b Divisin / a / b Potencia ^ a ^ b
El orden de precedencia es:
Orden de precedencia de operaciones
1 ^ 2 / 3 +
OPERADORES Y FUNCIONES
-
+ 9
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.
OPERADORES Y FUNCIONES
-
+ 10
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 Valor
ans Variable usada por defecto para guardar el ltimo resultado pi Razn de una circunferencia a su dimetro 3.1416 eps Nmero ms pequeo tal que 1+eps > 1 2.2204e-16 inf Infinito Inf nan Magnitud no numrica NaN i, j 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
OPERADORES Y FUNCIONES
-
+ 11
Funciones matemticas comunes: Aproximacin.
Funcin Definicin Ejemplo x=5.92
ceil(x) Redondea hacia infinito 6 fix(x) Redondea hacia cero 5
floor(x) Redondea hacia menos infinito 5 round(x) Redondea hacia el entero ms prximo 6
OPERADORES Y FUNCIONES
-
+ 12
Funciones matemticas comunes: Operaciones diversas.
Funcin Definicin
abs(x) Valor absoluto sign(x) Signo del argumento si x es un valor real exp(x) Exponencial
gcd(m,n) Mximo comn divisor lcm(m,n) Mnimo comn mltiplo log(x) Logaritmo Neperiano o natural log2(x) Logaritmo en base 2 log10(x) Logaritmo decimal mod(x,y) Mdulo despus de la divisin rem(x,y) Resto de la divisin entera sqrt(x) Raz cuadrada
nthroot(x,n) Raz n-sima de x
OPERADORES Y FUNCIONES
-
+ 13
Funciones matemticas comunes: Nmeros complejos.
Funcin Definicin abs(x) Magnitud del nmero complejo x
angle(x) ngulo (en radianes) del complejo x complex(y,z) Genera el nmero complejo y+zi
conj(x) Conjugado del nmero complejo x imag(x) Parte imaginaria del nmero complejo x real(x) Parte real del nmero complejo x
isreal(x) Devuelve 1 si es real y 0 si es complejo
OPERADORES Y FUNCIONES
-
+ 14
Funciones matemticas comunes: Trigonomtricas.
Nombre En radianes 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)
OPERADORES Y FUNCIONES
-
+ 15
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).
VECTORES Y MATRICES
-
+ 16
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 % Obtiene el segundo elemento x(end) 9 % Obtiene el elemento final x(2:4) 7 -2 4 % Obtiene un bloque de elementos x(1:2:end-1) 5 -2 -6 % Obtiene un bloque con pasos x([3 5 1]) -2 -6 5 % Obtiene elementos especficos
VECTORES Y MATRICES
-
+ 17
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 %Obtiene el elemento en (3,2) y(1,:) 1 2 3 %Obtiene la fila 1 y(:,end) 3 6 9 %Obtiene la columna final y(2,[1:2]) 4 5 %De la 2 fila obtiene los elementos 1 y 2 y([3 1],3) 9 3 %De la 3 columna obtiene los elementos 3 y 1
VECTORES Y MATRICES
-
+ 18
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):
1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16
y=[8 18 19 3; 5 17 11 8; 9 5 16 4; 27 26 13 6]
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.
VECTORES Y MATRICES
-
+ 19
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.
VECTORES Y MATRICES
-
+ 20
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) Crea una matriz con unos en su diagonal y ceros en el resto
---- magic(n) Crea una matriz cuyas filas y columnas suman lo mismo
VECTORES Y MATRICES
-
+ 21
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 Multiplicacin de A por B-1 ./ A ./ B Divisin puntual por la derecha \ A \ B Multiplicacin de A-1 por B .\ A .\ B Divisin puntual por la izquierda ^ A ^ n Potenciacin, n es una escalar .^ A .^ B Potenciacin puntual ' A' Transpuesta de A
VECTORES Y MATRICES
-
+ 22
Funciones para el anlisis de matrices
Funcin Definicin
det(A) Determinante diag(A) Extrae la diagonal de la matriz como un vector columna eig(A) Valores propios inv(A) Inversa de la matriz pinv(A) Pseudoinversa de la matriz
length(A) Mxima dimensin orth(A) Ortogonalizacin size(A) Dimensiones de la matriz trace(A) Suma de la diagonal de la matriz tril(A) Matriz triangular inferior a partir de la matriz A triu(A) Matriz triangular superior a partir de la matriz A
VECTORES Y MATRICES
-
+ 23
Otras operaciones con matrices
Funcin Definicin
find(A) Devuelve los ndices de los elementos distintos de cero fliplr(A) Intercambia la matriz de izquierda a derecha flipud(A) Intercambia la matriz de arriba a abajo
reshape(A,m,n) Devuelve una matriz mn cuyos elementos se toman por columnas de A. Si A no contiene mn elementos genera un error.
rot90(A,n) Gira la matriz 90n en sentido antihorario exp,log,sqrt,... Operan elemento a elemento
VECTORES Y MATRICES
-
+ 24
Anlisis de datos
Funcin Definicin
corrcoef(X) Coeficientes de correlacin cov(X) Matriz de covarianzas
cumsum(X) Suma acumulativa diff(X) Diferencia entre elementos adyacentes de X max(X) Mximo min(X) Mnimo mean(X) Media de los valores median(X) Mediana de los valores prod(X) Producto de los elementos sum(X) Suma de los elementos sort(X) Ordena los valores en orden ascendente std(X) Desviacin estndar de la muestra var(X) Varianza de la muestra
VECTORES Y MATRICES
-
+ 25
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
HIPERMATRICES
-
+ 26
Operadores relacionales bsicos
Operador Significado
< Menor que Mayor que >= Mayor o igual que == Igual a ~= Distinto de
Operadores lgicos bsicos
Operador Significado
& AND | OR ~ NOT
OPERACIONES RELACIONALES Y LGICAS
-
+ 27
Funciones relacionales y lgicos adicionales
Funcin Significado
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) Devuelve 1s en las posiciones de x donde hay NaN. isinf(x) Devuelve 1s en las posiciones de x donde hay Inf.
Otros casos similares: ischar, isempty, isequal, isfloat, isreal, isinteger, islogical,
OPERACIONES RELACIONALES Y LGICAS
-
+ 28
El orden de precedencia es:
Orden de precedencia de operaciones
1 ^ .^ 2 / \ . ./ .\ 3 + ~ 4 > < >=
-
+ 29
La funcin plot genera un grfico. Los argumentos deben ser vectores de la misma longitud:
x = 0:0.01:1; % Eje x y = sin(2pix); % Eje y plot(x,y); % Grfica
Tambin, se pueden superponer curvas sobre los mismos ejes:
x = 0:0.01:1; % Eje x f = sin(2pix); % Funcin 1 g = cos(4pix); % Funcin 2 plot(x,f,x,g); % Grfica
GRFICOS 2D
-
+ 30
Manipulacin de etiquetas de la grfica:
Funcin Definicin
xlabel(texto) Etiqueta sobre eje x del grfico actual ylabel(texto) Etiqueta sobre eje y del grfico actual title(texto) Ttulo en la cabecera del grfico actual text(x,y, texto) Texto en un lugar especificado por las coordenadas grid on / off Activa/desactiva rejilla axis([xmin xmax ymin ymax]) Fija valores mximos y mnimos de los ejes axis equal Escala de los ejes sea igual axis square El grfico sea cuadrado axis normal Desactiva axis equal y axis square hold on / off Mantiene/borra el grfico actual
GRFICOS 2D
-
+ 31
Otros tipos de grficos 2D
Funcin Definicin Ejemplo
area Colorea el rea bajo la curva bar Diagrama de barras verticales barh Diagrama de barras horizontales hist Histograma pie Diagrama de sectores rose Histograma polar stairs Grfico de escalera stem Secuencia de datos discretos loglog Escala logartmica en ambos ejes semilogx Escala logartmica en eje x semilogy Escala logartmica en eje y
GRFICOS 2D
-
+ 32
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
GRFICOS 2D
-
+ 33
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);
GRFICOS 3D
-
+ 34
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);
GRFICOS 3D
-
+ 35
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
GRFICOS 3D
-
+ 36
Colores predefinidos bsicos:
Color Variable predefinida
RGB
Negro k [0 0 0] Blanco w [1 1 1] Rojo r [1 0 0] Verde g [0 1 0] Azul b [0 0 1] Amarillo y [1 1 0] Magenta m [1 0 1]
Grosor de lnea: LineWidth
plot(x,y,k,LineWidth,3)
plot(x,y,r,LineWidth,1)
PROPIEDADES DE LOS GRFICOS
-
+ 37
Mapa de colores: la funcin colormap(M) instala la matriz M como el mapa de color actual.
Mapa Colores
Jet
HSV
Hot
Cool
Spring
Summer
Autumn
Winter
Gray
Bone
Cooper
Pink
colormap(cool)
colormap(pink)
PROPIEDADES DE LOS GRFICOS
-
+ 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.
38
I = imread(cameraman.tif); figure; subplot 121; imshow(I); subplot 122; imagesc(I); colormap(gray); axis square;
LECTURA DE IMGENES
-
+ Un ciclo puede definirse mediante las sentencias for while de la siguiente forma:
39
for k = inicio:fin
end
for k = vector_columna
end
while
end
PROGRAMACIN
-
+La 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.
40
PROGRAMACIN
-
+ Un bloque de condicional puede escribirse de las siguientes maneras:
41
if
end
if
else
end
if
elseif
elseif
elseif
else
end
PROGRAMACIN
-
+ Existen dos tipos de M-archivos, es decir, con extensin *.m. Un tipo son los archivos de comando y otro son las funciones.
42
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)
ARCHIVOS .M
-
+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++.
43
-
+ Barra de herramientas
Ventana de comandos
44
INICIALIZACIN
-
+Plantilla en blanco
Plantillas de ejemplo
45
INICIALIZACIN
-
+Paleta de objetos
Alinear objetos
Editor de men
Editor de Tab
Editor de barra de herramientas
Editor del M-file
Editor de atributos
Navegador de objetos
Ejecutar
46
REA DE DISEO
-
+Atributos de la plantilla en
blanco
Doble click sobre el objeto para ver sus atributos.
Atributos del objeto
pushbutton
47
ATRIBUTOS DE LOS OBJETOS
-
+Aplicacin GUIDE
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.
48
-
+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.
49
-
+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 pushbutton1pos = 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);
50
-
+ 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.
51
REFERENCIAS