Introducción MATLAB

52
+ Introducción a MATLAB Procesamiento digital de imágenes 30-08-2012 © 2012 Cinvestav-Tamaulipas

description

conceptos básicos de Matlab

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