+ All Categories
Home > Documents > Introduccioón a Matlab Parte 2

Introduccioón a Matlab Parte 2

Date post: 07-Jul-2018
Category:
Upload: jorge-guerrero
View: 213 times
Download: 0 times
Share this document with a friend

of 12

Transcript
  • 8/19/2019 Introduccioón a Matlab Parte 2

    1/28

    INTRODUCCIÓN A MATLAB (Parte 2)

    1.  AYUDA Y DOCUMENTACIÓN EN LÍNEA

    Existen varias maneras de acceder a la ayuda que describe las funciones de MATLAB:

    • El comando help • La ventana de ayuda• El escritorio de ayuda de Matlab• Páginas web de referencia• Enlaces a MathWorks, inc.

    El comando help 

    El comando help es la manera más simple de conocer la sintaxis y el comportamientode una función determinada La información se visualiza directamente en la ventana decomando. Por ejemplo:

    hel p magi c

    imprime:

    MAGI C Magi c squar e.MAGI C( N) i s an N- by- N mat r i x const r uct ed f r omt he i nt egers 1 t hr ough N̂ 2 wi t h equal r ow,col umn, and di agonal sums.Pr oduces val i d magi c squar es f or N=1, 3, 4, 5. . . .

    NOTA: Las entradas de la ayuda en MATLAB utilizan caracteres en mayúscula para lasfunciones y los nombres variables y así resaltarlas del resto del texto. Sin embargo, a lahora de escribir las funciones use siempre los caracteres en minúscula correspondientes yaque MATLAB distingue entre mayúsculas y minúsculas; todos los nombres de funcionesestán realmente en minúsculas.

    Todas las funciones de MATLAB se ordenan en grupos lógicos, y la estructura deldirectorio de MATLAB se basa en este orden. Por ejemplo, todas las funciones de álgebralineal residen en el directorio matfun. Para enumerar todos los nombres de las funciones

    en este directorio, con una pequeña descripción de cada una:

    hel p mat f un

    Mat r i x f unct i ons - numer i cal l i neal al gebr a.

    Mat r i x anal ysi s.nor m - Mat r i x or vect or nor m.

  • 8/19/2019 Introduccioón a Matlab Parte 2

    2/28

    normest - Est i mate t he mat r i x 2- norm. . .

    El comando

    hel p

    lista todos los directorios, con una descripción de cada categoría que representa

    mat l ab/ gener almat l ab/ ops. . .

    La ventana ayuda

    La ventana de ayuda de MATLAB está disponible en los PC seleccionando la opción

    de Ventana de Ayuda bajo el menú de Ayuda, o haciendo clic el signo de interrogación enla barra de menú. Está también disponible en todos los ordenadores pulsando

    hel pwi n

    Para utilizar la ventana de ayuda en un tópico determinado, pulse

    hel pwi n topic 

    La ventana de ayuda le da acceso a la misma información que el comando help, pero laventana de interfaz le proporciona a conexiones convenientes a otros tópicos.

    El comando lookfor  

    El comando lookfor   permite que usted busque funciones basadas en una palabraclave. Busca a través de la primera línea del texto de la ayuda, el cual se conoce comolínea H1, que tiene cada función de MATLAB, y devuelve las líneas H1 que contienen la palabra clave especificada. Por ejemplo, MATLAB no tiene una función llamada inverse.Así que la respuesta de.

    hel p i nver se

    es

    i nver se. m not f ound.

    Pero

    l ookf or i nver se

  • 8/19/2019 Introduccioón a Matlab Parte 2

    3/28

    encuentra cerca de una docena de funciones Dependiendo de qué Toollboxes hayainstalado, encontrará entradas como:

    I NVHI LB I nver se Hi l ber t mat r i x.ACOSH I nverse hyperbol i c cosi ne.ERFI NV I nver se of t he er r or f unct i on.

    I NV Matr i x i nver se.PI NV Pseudoi nver se.I FFT I nver se di scret e Four i er t r ansf or m.I FFT2 Two- di mensi onal i nver se di scr et e Four i er t r ansf or m.I CCEPS I nverse compl ex cepst r um.I DCT I nver se di scr et e cosi ne t r ansf or m.

    Agregando la palabra clave –all al comando lookfor , como en

    l ookf or - al l

     busca en toda la ayuda, no solo en la línea H1.

    El escritorio de Ayuda

    El escritorio de ayuda de MATLAB proporciona el acceso a una amplia gama deinformación de ayuda y referencia almacenada en un disco o en un CD-ROM de su sistemalocal. Muchos de los documentos subyacentes utilizan el lenguaje de HiperTexto (HTML)y pueden ser vistos con un explorador de Internet tal como Netscape o Microsoft Explorer.El escritorio de ayuda puede arrancar en un PC seleccionando la opción Help Desk bajomenú el de ayuda, o, en todas las calculadoras, escribiendo

    hel pdesk 

    Todos los operadores y funciones de MATLAB’s tienen páginas de la referencia en elformato HTML, al cual usted puede acceder desde el escritorio de ayuda. Estas páginas le proporcionan a más detalles y ejemplos que las entradas de la ayuda básica. Las versionesHTML de otros documentos, incluyendo este manual, están también disponibles. Un motorde búsqueda, ejecutándose en su propia máquina, puede buscar cualquier material dereferencia en línea.

    El comando doc  

    Si sabe el nombre de una función específica, puede ver las páginas de referencia

    directamente. Por ejemplo, para conseguir las páginas de referencia para la función eval,escriba

    doc eval

    El comando doc arranca su explorador, si éste no se está ejecutando ya.

  • 8/19/2019 Introduccioón a Matlab Parte 2

    4/28

    Imprimiendo las páginas de referencia en línea

    Las versiones de las páginas de referencia en línea, así como el resto del conjunto dedocumentación de MATLAB, están disponibles en el formato de documento portable (pdf)a través del escritorio de ayuda. Estas páginas son procesadas por el programa Acrobat

    Reader. Reproducen el aspecto y la sensación de la página impresa, completas con fuentes,gráficos, formato, e imágenes. Ésta es la mejor manera de conseguir copias impresas delmaterial de referencia.

    Enlace a MathWorks

    Si su computadora está conectada a Internet, el Escritorio de Ayuda le proporcionauna conexión con MathWorks, el hogar de MATLAB. Usted puede utilizar el correoelectrónico para hacer preguntas, para hacer sugerencias, y para señalar fallos defuncionamiento posibles. Usted puede también utilizar el Motor de Búsqueda deSoluciones en el sitio Web de MathWorks para preguntarle a una base de datos actualizada

    sobre la información técnica de ayuda.

    2.  EL AMBIENTE DE MATLAB

    El ambiente de MATLAB incluye el conjunto de variables almacenadas durante unasesión de MATLAB y el conjunto de archivos de disco que contienen los programas y losdatos que se usan entre sesiones.

    El Espacio de Trabajo

    El espacio de trabajo es el área de la memoria accesible desde la línea de comando deMATLAB. Dos comandos, who y los whos, muestran el contenido actual del espacio detrabajo. El comando who muestra una lista corta, mientras que whos además da tamaño yalmacenamiento de la información.

    A continuación se muestra la salida producida por whos en un espacio de trabajo quecontiene algunos resultados de los ejemplos de esta guía. Muestra diversas estructuras dedatos de MATLAB.

    whos

    Name Si ze Byt es Cl ass

    A 4x4 128 doubl e ar r ayD 5x3 120 doubl e ar r ayM 10x1 3816 cel l arr ayS 1x3 442 st r uct arr ayh 1x11 22 char ar r ayn 1x1 8 doubl e ar r ays 1x5 10 char ar r ayv 2x5 20 char ar r ay

    Gr and t otal i s 471 el ement s usi ng 4566 byt es.

  • 8/19/2019 Introduccioón a Matlab Parte 2

    5/28

     Para suprimir todas las variables existentes en el espacio de trabajo, escriba

    cl ear

    Comando save Los comandos save  almacenan el contenido del espacio de trabajo en un archivo-

    MAT que puede ser leído con el comando load en una sesión posterior de MATLAB. Porejemplo

    save August 17t h

    salva el contenido del espacio de trabajo en el archivo August17th.mat. Si se desea, puedesalvar solamente ciertas variables especificando los nombres de las variables después delnombre de archivo.

     Normalmente, las variables se salvan en un formato binario que puede ser leídorápidamente (y exactamente) por MATLAB. Si usted desea tener acceso a estos archivosfuera de MATLAB, usted puede desear especificar un formato alternativo.

    - asci i Ut i l i za el f or mat o de t ext o de 8 dí gi t os- asci i - doubl e Ut i l i za el f or mat o de t exto de 16 dí gi t os- asci i - doubl e - t abs Del i mi t a el ar r egl o con t abs- v4 Cr ea un archi vo para l a ver si ón 4 de Mat l ab- append Agr ega datos a un archi vo- M exi st ent e

    Cuando usted salva EL contenido del espacio de trabajo en un formato de texto, debesalvar solamente una variable al tiempo Si salva más de una, MATLAB creará el archivodel texto, pero usted no podrá cargarlo de manera fácil nuevamente dentro de MATLAB.

    El camino de búsqueda

    MATLAB utiliza el camino de búsqueda, lista de directorios ordenados, paraencontrar las funciones que usted quiere ejecutar. Cuando usted llama una funciónestándar, MATLAB ejecuta la primera función del archivo-M en el camino que tiene elnombre especificado. Usted puede reemplazar este comportamiento usando directorios yfunciones privadas especiales. El comando.

    pat h

    muestra el camino de búsqueda en cualquier plataforma. En las PC, escoga Set Path delmenu Archivo para ver o modificar el camino de búsqueda.

    Manipulación de archivo de disco

  • 8/19/2019 Introduccioón a Matlab Parte 2

    6/28

      Los comando dir , type, y cd, implementan un conjunto de comandos del sistemaoperativo genérico para manipular archivos La tabla siguiente muestra cómo estoscomandos se asocian con otros sistemas operativos.

     MATLAB MS-DOS UNIX VAX/VMS

    di r di r l s di r

    t ype t ype cat t ypedel et e del or er ase r m del et ecd chdi r cd set def aul t

    La mayoría de estos comandos pueden usar directorios, comodines, y nombres de unidadesde disco de la manera usual.

    El comando diary 

    El comando diary crea un diario de su sesión de MATLAB en un archivo de disco.Usted puede ver y editar el archivo del texto resultante usando cualquier procesador de

    textos. Para crear un archivo llamado diary  que contiene todos los comandos que ustedincorpora, así como la salida impresa de MATLAB (pero no la salida gráficar), escriba.

    di ar y

    Para guardar la sesión de Matlab en un archivo con nombre particular, use

    di ar y filename

    Para dejar de guardar la sesión, use

    di ary of f

    Ejecutando programas externos

    El signo de exclamación ! es una concha que indica que el resto de la linea deentrada es un comando del sistema operativo. Esto es útil para invocar utilidades o paraejecutar otros programas sin salir de MATLAB. En VMS, por ejemplo,

    ! edt magi k. m invoca un editor llamado edt para el archivo llamado magik.m. Cuando usted sale del programa externo, el sistema operativo devuelve el control a MATLAB.

    3.  MÁS SOBRE MATRICES Y ARREGLOS

    Esta sección muestra algo más sobre como trabajar con matrices y arreglos,enfocándose en

    • Álgebra lineal

  • 8/19/2019 Introduccioón a Matlab Parte 2

    7/28

    • Arreglos• Datos multivariados

    Álgebra linealInformalmente, los términos matriz y el arreglo se utilizan a menudo alternativamente

    Una matriz es un arreglo numérico de dos dimensiones que representa una transformaciónlineal. Las operaciones matemáticas definidas en matrices son el tema del álgebra lineal.

    El Cuadrado mágico de Dürer

    A =16 3 2 135 10 11 89 6 7 124 15 14 1

     proporciona varios ejemplos que de las operaciones matriciales de MATLAB. Ya ha visto

    la matriz transpuesta, A'. Agregar una matriz a su transpuesta produce una matrizsimétrica.

    A + A'

    ans =32 8 11 178 20 17 23

    11 17 14 2617 23 26 2

    El símbolo de multiplicación, *, denota la multiplicación de matrices que implican productos internos entre filas y columnas. Multiplicando una matriz por su transpuestatambién produce una matriz simétrica.

    A' *A

    ans =378 212 206 360212 370 368 206206 368 370 212360 206 212 378

    El determinante de esta matriz particular resulta ser cero, indicando que la matriz essingular.

    d = det ( A)

    d =0

    La forma reducida por filas de A no es la identidad.

  • 8/19/2019 Introduccioón a Matlab Parte 2

    8/28

     R = r r ef ( A)

    R =1 0 0 10 1 0 - 30 0 1 30 0 0 0

    Puesto que la matriz es singular, no tiene inversa. Si intenta calcular la inversa con

    X = inv(A)

    Obtendrá el mensaje de alerta

    War ni ng: Mat r i x i s cl ose t o si ngul ar or badl y scal ed.Resul t s may be i naccurat e. RCOND = 1. 175530e- 017.

    El error de redondeo ha evitado que el algoritmo de inversión de la matriz detecte lasingularidad exacta. Pero el valor rcond, que significa condición recíproca estimada, esdel orden eps, la precisión relativa de punto flotante, así que la inversa calculada es poco probable que sea de mucho uso.

    Los valores propios del cuadrado mágico son interesantes.e = ei g( A)e =

    34. 00008. 00000. 0000

    - 8. 0000

    Uno de los valores propios es cero, a consecuencia de la singularidad. El valor propio másgrande es 34, la suma mágica. Esto ocurre ya que el vector de todos los elementos uno esun vector propio.

    v = ones( 4, 1)

    v =1111

    A*v

    ans =34343434

  • 8/19/2019 Introduccioón a Matlab Parte 2

    9/28

    Cuando un cuadrado mágico es dividido por su suma mágica,

    P = A/ 34

    el resultado es una matriz doble estocástica cuyas sumas de fila y columna son todas uno.

    P =0. 4706 0. 0882 0. 0588 0. 38240. 1471 0. 2941 0. 3235 0. 23530. 2647 0. 1765 0. 2059 0. 35290. 1176 0. 4412 0. 4118 0. 0294

    Tales matrices representan las probabilidades de transición en un proceso de Markov.Potencias repetidas de la matriz representan repetidos pasos del proceso. Para nuestroejemplo, la quinto potencia

    P̂ 5

    es

    0. 2507 0. 2495 0. 2494 0. 25040. 2497 0. 2501 0. 2502 0. 25000. 2500 0. 2498 0. 2499 0. 25030. 2496 0. 2506 0. 2505 0. 2493

    Esto muestra que al aproximarse k al infinito, todos los elementos de la potencia k-ésima, Pk, se acercan a 1 / 4

    Finalmente, los coeficientes del polinomio característico

    pol y( A)

    son

    1 - 34 - 64 2176 0

    Esto indica que el polinomio característico det( A -λ I) es λ4 -34λ3 -64λ2 + 2176λ

    El término constante es cero, porque la matriz es singular, y elcoeficiente del término cúbico es -34, porque la matriz es mágica!

    Arreglos

    Cuando se quitan del mundo del álgebra lineal, las matrices se convierten enarreglos numéricos de dos dimensiones. Las operaciones aritméticas en arreglos se hacenelemento por elemento. Esto significa que la adición y la substracción son iguales paramatrices y arreglos, pero que las operaciones multiplicativas son diferentes.

  • 8/19/2019 Introduccioón a Matlab Parte 2

    10/28

     MATLAB utiliza un punto, o punto decimal, como parte de la notación para lasoperaciones multiplicativas del arreglo.

    La lista de operadores incluye:

    + Suma- Rest a. * Mul t i pl i caci ón el ement a el ement o. / Di vi si ón el ement o a el ement o. \ Di vi si ón por l a i zq el ement o a el ement o. ^ Potenci a el ement o a el ement o. ' Transpuest a si n conj ugar

    Si el cuadrado mágico de Dürer es multiplicado por sí mismo

    A. *A

    el resultado es un arreglo que contiene los cuadrados de los números enteros a partir de 1

    hasta 16, en una orden inusual

    ans =256 9 4 16925 100 121 6481 36 49 14416 225 196 1

    Las operaciones del arreglo son útiles para crear tablas. Suponga que n  es el vectorcolumna

    n = ( 0: 9) ' ;

    Entoncespows = [ n n. 2̂ 2. n̂]

    crea la tabla de cuadrados y potencias con base 2.

    pows =0 0 11 1 22 4 43 9 84 16 165 25 326 36 647 49 1288 64 2569 81 512

    Las operaciones matemáticas fundamentales operan en los arreglos elemento por elementoAsí

  • 8/19/2019 Introduccioón a Matlab Parte 2

    11/28

    f ormat short gx = ( 1: 0. 1: 2) ' ;l ogs = [ x l og10( x)]

    crea la tabla de logaritmos

    l ogs =1. 0 01. 1 0. 041391. 2 0. 079181. 3 0. 113941. 4 0. 146131. 5 0. 176091. 6 0. 204121. 7 0. 230451. 8 0. 255271. 9 0. 278752. 0 0. 30103

    Datos multivariadosMATLAB utiliza el análisis orientado a columna para los datos estadísticos

    multivariados. Cada columna en un conjunto representa una variable y cada fila unaobservación. El (i, j)-çesimo elemento es la observación i de la variable j variable.

    Como ejemplo, considere un conjunto con tres variables:

    •  Ritmo cardíaco•  Peso•  Horas de ejercicio por semana

    Para cinco observaciones, el arreglo que resultante es

    D =72 134 3. 281 201 3. 569 156 7. 182 148 2. 475 170 1. 2

    La primera fila contiene el ritmo cardíaco, peso, y las horas del ejercicio para el paciente 1, la segunda fila contiene los datos para el paciente 2, etcétera. Ahora usted

     puede aplicar muchas de funciones de análisis de datos de MATLAB’s a este conjunto dedatos. Por ejemplo, obtener la desviación estándar y la media de cada columna:

    mu = mean( D) , si gma = st d( D)

    mu =75. 8 161. 8 3. 48

    si gma =

  • 8/19/2019 Introduccioón a Matlab Parte 2

    12/28

    5. 6303 25. 499 2. 2107

    Para una lista de las funciones de análisis de datos disponibles en MATLAB, escriba:

    hel p dataf un

    Si tiene acceso al toolbox de estadística, escriba

    hel p st at s

    Expansión escalar

    Las matrices y los escalares se pueden combinarse de varias maneras. Por ejemplo,un escalar es restado de una matriz restándola de cada elemento. El valor promedio de loselementos de nuestro cuadrado mágico es 8,5, así que

    B = A - 8, 5

    forma una matriz cuyas sumas de las columna son cero.

    B =7. 5 - 5. 5 - 6. 5 4. 5

    - 3. 5 1. 5 2. 5 - 0. 50. 5 - 2. 5 - 1. 5 3. 5

    - 4. 5 6. 5 5. 5 - 7. 5

    sum( B)

    ans =0 0 0 0

    Con la expansión escalar, MATLAB asigna un escalar específico a todos los índices en unrango Por ejemplo:

    B( 1: 2, 2: 3) = 0

    ceros en una porción de B.B =

    7. 5 0 0 4. 5- 3. 5 0 0 - 0. 50. 5 - 2. 5 - 1. 5 3. 5

    - 4. 5 6. 5 5. 5 - 7. 5 

    Subíndices lógicos

    Los vectores lógicos creados de operaciones lógicas y de relaciones se puedenutilizar para referirse a subarreglos Suponga que X  es una matriz ordinaria y L  es unamatriz de igual tamaño que es resultado de una cierta operación lógica. Entonces X(L) especifica los elementos de X donde los elementos de L no sean cero.

  • 8/19/2019 Introduccioón a Matlab Parte 2

    13/28

    Esta clase de subíndice puede hacerse en un paso especificando la operación lógicacomo la expresión del subíndice. Suponga que usted tiene el conjunto siguiente de datos.

    x =2. 1 1. 7 1. 6 1. 5 NaN 1. 9 1. 8 1. 5 5. 1 1. 8 1. 4 2. 2 1. 6 1. 8

    La etiqueta NaN indica que una observación falta, tal como fallar al responder unitem de un cuestionario. Para quitar los datos que faltan con la subíndices lógicos utilicefinite(x), el cual es cierto para todos los valores numéricos finitos y falso para NaN e Inf. 

    x = x( f i ni t e( x) )x =

    2. 1 1. 7 1. 6 1. 5 1. 9 1. 8 1. 5 5. 1 1. 8 1. 4 2. 2 1. 6 1. 8

     Note que la observación, 5,1, parece ser diferente de las otras. Es un outlier . La siguientedeclaración quita outliers, en este caso aquellos elementos que se desvían de la media enmás de tres veces la desviación estándar.

    x = x( abs( x- mean( x) ) < = 3*s t d( x) )

    x =2. 1 1. 7 1. 6 1. 5 1. 9 1. 8 1. 5 1. 8 1. 4 2. 2 1. 6 1. 8

    En otro ejemplo, destaque la localización de los números primos del cuadrado mágico deDürer usando la indexación lógica y la expansión escalar para fijar los números no primos a0.

    A( ~i spr i me(A) ) = 0

    A =

    0 3 2 135 0 11 00 0 7 00 0 0 0

    La función find 

    La función find  determina los índices de los elementos del arreglo que coincidencon una condición lógica dada En su forma más simple, find devuelve un vector columnade índices. Se transpone ese vector para obtener un vector fila de índices. Por ejemplo

    k = f i nd( i spr i me( A) ) '

    selecciona las puestos, usando indexación unidimensional, de los números primos delcuadrado mágico.

    k =2 5 9 10 11 13

    Despliegue los números primos,como un vector fila en el orden determinado por k, con

  • 8/19/2019 Introduccioón a Matlab Parte 2

    14/28

     A(k)

    ans =5 3 2 11 7 13

    Cuando use k como un índice en una declaración de asignación, la estructura matricial se preserva

    A(k) = NaN

    A =16 NaN NaN NaN

    NaN 10 NaN 89 6 NaN 124 15 14 1

    4.  CONTROL DE FLUJOMATLAB tiene cinco estructuras para el control de flujo:

    •  Declaraciones if  •  Declaraciones switch •  Bucles for  •  Bucles while 

    Declaraciones if  La declaración if   evalúa una expresión lógica y ejecuta un grupo de declaraciones

    cuando la expresión es verdadera. Las palabras claves opcionales elseif y else permiten laejecución de grupos alternos de declaraciones. La palabra clave end, que se correspondecon if , termina el grupo de declaraciones. Los grupos de declaraciones son delineados porlas cuatro palabras claves – no hay paréntesis o corchetes implicados.

    El algoritmo de MATLAB para generar un cuadrado mágico de orden n  implicatres diversos casos: cuando n es impar, cuando n es par pero no divisible por 4, o cuando n es divisible por 4. Esto se describe por

    i f r em( n, 2) ~= 0M = odd_magi c( n)

    el sei f r em( n, 4) ~= 0M = si ngl e_even_magi c( n)el se

    M = doubl e_even_magi c( n)end

    En este ejemplo, los tres casos son mutuamente excluyentes, pero si no lo fueran, la primera condición verdadera sería ejecutada.

  • 8/19/2019 Introduccioón a Matlab Parte 2

    15/28

    Es importante entender cómo los operadores relacionados y las declaraciones if  trabajan con matrices. Cuando usted desee saber si hay igualdad entre dos variables, usted puede que utilice

    i f A == B . . .

    Éste es código legal de MATLAB, y hace lo que usted espera cuando  A y B son escalares.Pero cuando A y B  son matrices, A == B  no prueba si son iguales, él prueba donde soniguales; el resultado es otra matriz de 0 y de 1 que muestran igualdad elemento aelemento. De hecho, si A y B no son del mismo tamaño, entonces A== B es un error.

    La manera apropiada de saber si hay igualdad entre dos variables es utilizar lafunción isequal,

    I f i sequal (A, B) . . .

    Aquí está otro ejemplo para enfatizar esta punto. Si  A  y B  son escalares, el programasiguiente nunca alcanzará la situación inesperada. Pero para la mayoría de los pares de

    matrices, incluyendo nuestros cuadrados mágicos con las columnas intercambiadas,ninguna de las siguientes condiciones A > B,  A < B o  A==B sea verdadero para todos loselementos y así que se ejecuta la cláusula otra.

    i f A > B' great er '

    el sei f A < B' l ess'

    el sei f A == B' equal '

    el seer r or ( ' Unexpected si t uat i on' )

    endSever al f unct i ons ar e hel pf ul f or r educi ng t he r esul t s of mat r i xcompar i sons toscal ar condi t i ons f or use wi t h i f , i ncl udi ngi sequali semptyal lany

    switch y caseLa declaración del interruptor ejecuta grupos de declaraciones basadas en el valor de

    una variable o de una expresión El caso de las palabras claves y delinea de otra manera agrupos. Solamente se ejecuta el primer caso que corresponde con. Debe siempre haber unextremo para corresponder con el interruptor

    La lógica del algoritmo de los cuadrados de la magia se puede también describircerca.

    swi t ch ( r em( n, 4)==0) + ( r em( n, 2)==0)case 0

    M = odd_magi c( n)

  • 8/19/2019 Introduccioón a Matlab Parte 2

    16/28

    case 1M = si ngl e_even_magi c( n)

    case 2M = doubl e_even_magi c( n)

    other wi seer ror( ’ Thi s i s i mpossi bl e’ )

    end

    Nota para los programadores de C: A diferencia de la declaración switch del lenguaje C,MATLAB’s no necesitan la declaración break  . Si la primera declaración case  esverdadera, las otras declaraciones case no se ejecutan.

    for

    El lazo for repite un grupo de declaraciones un número predeterminado de veces.Una declaración end delimita las declaraciones.

    f or n = 3: 32

    r ( n) = r ank(magi c( n) ) ;endr

    El punto y coma que termina la declaración interna suprime la salida impresa, y la rdespués del bucle visualiza el resultado final.

    Es una buena idea ordenar los bucles para la legibilidad, especialmente cuando seanidan.

    f or i = 1: mf or j = 1: n

    H( i , j ) = 1/ ( i +j ) ;end

    end

    whileEl bucle while repite un grupo de declaraciones un número indefinido de veces bajo

    el control de una condición lógica. Una declaración end delimita las declaraciones.Aquí está un programa completo, ilustrando las declaraciones, if , else, y end que

    utiliza la bisección del intervalo para encontrar el cero de un polinomio.

    a = 0; f a = - I nf ;b = 3; f b = I nf ;whi l e b- a > eps*b

    x = ( a+b) / 2;f x = x 3̂- 2*x- 5;i f si gn( f x) == si gn( f a)

    a = x; f a = f x;el se

    b = x; f b = f x;end

  • 8/19/2019 Introduccioón a Matlab Parte 2

    17/28

    endx

    El resultado es la reíz del polinomio x3 -2x-5

    x =

    2. 09455148154233 

    Las precauciones que implican las comparaciones de matrices que se discutieron en lasección if  en si también se aplican a la declaración while.

    break

    La declaración break  le permite salir de un bucle while. En bucles anidados,break sale del bucle interno solamente.

    Aquí está una mejora en el ejemplo de la sección anterior. ¿Por qué el uso de

    break es una buena idea?a = 0; f a = - I nf ;b = 3; f b = I nf ;whi l e b- a > eps*b

    x = ( a+b) / 2;f x = x 3̂- 2*x- 5;i f f x == 0

    breakel sei f si gn( f x) == si gn( f a)

    a = x; f a = f x;el se

    b = x; f b = f x;end

    endx

    5.  OTRAS ESTRUCTURAS DE DATOS

    Esta sección le introduce a otras estructuras de datos en MATLAB, incluyendo:

    •  Matrices multidimensionales•  Arreglos de celdas•  Caracteres y texto•  Estructuras

    Matrices multidimensionalesLas matrices multidimensionales en MATLAB son matrices con más de dos

    subíndices Pueden ser creadas llamando las funciones zeros, ones, rand, o randn conmás de dos argumentos. Por ejemplo

    R = r andn( 3, 4, 5) ;

  • 8/19/2019 Introduccioón a Matlab Parte 2

    18/28

    crea un arreglo 3 por 4 por 5 con un total de 3x4x5 = 60 elementos al azar distribuidosnormalmente.

    Un arreglo tridimensional puedo representar datos físicos tridimensionales, sea latemperatura en un cuarto, muestreado en una rejilla rectangular. O, puede ser que

    represente una secuencia de matrices, de  A(k)

    , o de muestras de una matrizdependiente del tiempo, A(t). En este caso, el (i,j)-ésimo elemento de la matriz k-ésima, o la tk-ésima matriz, se denota por A(i,j,k).

    Las versión de MATLAB y de Dürer del cuadrado mágico de orden 4 se diferencian porun intercambio de dos columnas. Muchos cuadrados mágicos diferentes pueden sergenerados al intercambiar columnas. La declaración

    p = per ms( 1: 4) ;

    genera los 4! = 24 permutaciones de 1:4. La permutación k-ésima es el vector fila, p(k,:).Entonces

    A = magi c( 4) ;M = zer os( 4, 4, 24) ;f or k = 1: 24

    M( : , : , k) = A( : , p(k, : ) ) ;end.

    guarda la secuencia de 24 cuadrados mágicos en un arreglo tridimensional, M .. El tamañode M es

    si ze( M)

    ans =4 4 24

    Resulta que la matriz 22 en la secuencia es la de Dürer:

    M( : , : , 22)

    ans =16 3 2 135 10 11 89 6 7 124 15 14 1

    La declaración

    sum( M, d)

    calcula sumas s variando el subíndice d. Así que

    sum( M, 1)

  • 8/19/2019 Introduccioón a Matlab Parte 2

    19/28

    es un arreglo 1 por 4 por24 que contiene 24 copias del vector fila

    34 34 34 34

    y

    sum( M, 2)

    es un arreglo 4 por 1 por 24 que contiene 24 copias del vector columna

    34343434 

    Finalmente,

    S = sum( M, 3)

    agrega las 24 matrices en la secuencia El resultado tiene tamaño 4 por 4 por 1, así que parece un arreglo 4 por 4,

    S =204 204 204 204204 204 204 204204 204 204 204204 204 204 204 

    Arreglos de Celda

    Los arreglos de celda en MATLAB son arreglos multidimensionales cuyoselementos son copias de otras arreglos. Un arreglo de celda de matrices vacías puedecrearse con la función cell. Pero, a menudo, los arreglos de celda son creadas incluyendouna colección miscelánea de cosas entre llaves, { }. Las llaves también son usadas consubíndices para tener acceso al contenido de varias celdas. Por ejemplo

    C = {A sum( A) prod(prod(A) ) }

    crea un arreglo de celda de 1 por 3. Las tres celdas contienen el cuadrado mágico, el vectorfila de las sumas de la columna, y el producto de todos sus elementos. Cuando se visualizaC, usted ve

    C =[ dobl e 4x4 ] [ dobl e 1x4 ] [ 20922789888000 ]

    Esto es porque las primeras dos celdas son demasiado grandes para imprimirlas eneste espacio limitado, pero la tercera celda contiene solamente un número, 16!, así que haysitio para imprimirlo.

  • 8/19/2019 Introduccioón a Matlab Parte 2

    20/28

    Aquí están dos puntos importantes a recordar Primero, para extraer el contenido deuna de las celdas, use subíndices dentro de las llaves. Por ejemplo, C{1} extrae el cuadradomágico y C{3} es 16!. En segundo lugar, los arreglos de celda contienen las copias de otrosarreglos, no punteros a esos arreglos. Si usted cambia posteriormente A, nada le sucede aC.

    Los arreglos tridimensionales se pueden utilizar para salvar una secuencia dematrices del mismo tamaño. Los arreglos de celda se pueden utilizar para guardarsecuencias de matrices de diversos tamaños. Por ejemplo,

    M = cel l s (8, 1) ;f or n = 1: 8

    M{n} = magi c( n) ;endM

      produce una secuencia de cuadrados mágicos de orden diferente,

    M =[ 1][ 2x2 doubl e][ 3x3 doubl ][ 4x4 doubl e][ 5x5 doubl e][ 6x6 doubl e][ 7x7 doubl e][ 8x8 doubl e]

    Usted puede extraer la matriz de Dürer con

    M{4}

    Caracteres y textoAñada texto a MATLAB usando apóstrofes. Por ejemplo,

    s = ' hol a '

    El resultado no es la misma clase de matriz o arreglo numérico que hemos estadotratando hasta ahora. Es un arreglo de caracteres 1 por 5.

    Internamente, los caracteres se salvan como números, pero no en formato puntoflotante. La declaración

    a = doubl e( s)

    convierte el arreglo de caracteres en una matriz numérica que contiene las representacionesfloating-point de los códigos ASCII para cada carácter. El resultado es

    a =72 101 108 108 111

  • 8/19/2019 Introduccioón a Matlab Parte 2

    21/28

    La declaración

    s = char ( a)

    invierte la conversión.

    Convertir números a caracteres permite investigar las fuentes disponibles en suordenador. Los caracteres imprimibles del juego de caracteres básico de ASCII sonrepresentados por los números enteros 32:127. (los números enteros menores que 32representan caracteres de control noimprimibles) Estos números enteros se acomodan enun arreglo apropiado 6 por 16 con

    F = r eshape( 32: 127, 16, 6) ' ;

    Los caracteres imprimibles en el juego de caracteres extendido de ASCII son representados por F+128. Cuando estos números enteros se interpretan como caracteres, el resultadodepende de la fuente que es usada actualmente. Escriba las declaraciones

    char(F)char ( F+128)

    y después varíe la fuente que es utilizada para la ventana de comandos de MATLAB. Enuna PC, seleccione Preferences bajo el menú de File. Este seguro de probar Symbol  yfuentes Wingdings, si usted las tiene en su computador Aquí está un ejemplo de la clasede salida que usted puede obtener

    ϒ′≤⁄∞ƒ♣♦♥♠↔←↑→↓°±″≥×∝∂•÷≠≡≈…↵ℵℑℜ℘⊗⊕∅∩∪⊃⊇⊄⊂⊆∈∉∠∇∏√⋅¬∧∨⇔⇐⇑⇒⇓

    ◊〈∑〉∫⌠⌡

    La concatenación con corchetes une variables de texto en cadenas más grandes. La

    declaraciónh = [ s, ' mundo ' ]

    ensambla las cadenas horizontalmente y produce

    h =hol a mundo

  • 8/19/2019 Introduccioón a Matlab Parte 2

    22/28

    La declaración

    v = [ s; ' mundo' ]

    ensambla las cadenas verticalmente y produce

    v =hol amundo

    Observe que un espacio en blanco tiene que ser insertado antes de ' m ' en h y que ambas palabras en v  tienen que tener la misma longitud. Los arreglos resultantes son areglos decaracteres; h es 1 por 11 y v es 2 por 5.

    Para manipular un texto que contiene líneas de diversas longitudes, usted tiene dosopciones – un arreglo de caracteres o un arreglo de celdas de cadenas. La función char  acepta cualquier número de líneas, agrega espacios en blanco a cada línea para hacerlas

    todas de la. la misma longitud, y forma un arreglo de caracteres con cada línea en una filaseparada Por ejemplo

    S = char( ' A’ , ' rol l i ng' , ' stone’ , ' gat hers’ , ' moment um. ' )

     produce una matriz de caracteres 5 por 9

    S =ARol l i ngSt oneGat her smoment um 

    Hay bastantes espacios en blanco en cada uno de las primeras cuatro filas de S para hacerque todas las filas sean de la misma longitud. Alternativamente, usted puede guardar eltexto en un arreglo de celda. Por ejemplo

    C = {' A’ ; ' r ol l i ng' ; ' st one’ ; ' gat her s’ ; ’ moment um. ' }

    Es un arreglo de celda 5 por1C =

    ' A’' r ol l i ng'' s tone’' gat hers’’ moment um. '

    Usted puede convertir un arreglo de caracteres a un arreglo de celdas con

    C = cel l st r ( S)

    e invierta el proceso con

  • 8/19/2019 Introduccioón a Matlab Parte 2

    23/28

     S = char ( C)

    EstructurasLas estructuras son matrices multidimensionales de MATLAB cuyos elementos se

    accesan mediante designadores de campo. Por ejemplo,S. name = ' Ed Pl um ' ;S. scor e = 83;S. gr ade = ' B+ ' .

    crea una estructura escalar con tres campos.

    S =nombr e: ‘ Ed Pl um' :scor e: 83:gr ade: ' B+'

    Como todo en MATLAB, las estructuras son matrices, así que usted puede insertarelementos adicionales. En este caso, cada elemento del arreglo es una estructura con varioscampos. Los campos pueden ser uno a la vez agregado,

    S( 2) . name = ' Toni Mi l l er ' ;S( 2) . score = 91;S( 2) . gr ade = ' A- ' ;

    O, un elemento entero se puede agregar con una sola declaración.

    S( 3) = str uct( ' name’ , ‘ Garci a J err y' , . . .' score’ , 70, ' grade’ , ' C ' )  

    La estructura es lo bastante grande que solamente un resumen se imprime

    S =1x3 st r uct ar r ay wi t h f i el ds;

    namescoregrade

    Existen diversas maneras de ensamblar los campos en otros arreglos de MATLAB. Todasse basan en la notación de una lista separada por comas. Si usted escribe

    S. scor e

    es igual que escribir

    S( 1) . scor e, S( 2) . scor e, S( 3) . scor e

  • 8/19/2019 Introduccioón a Matlab Parte 2

    24/28

    Esta es una lista separada por comas. Sin ninguna otra puntuación, no es muy útil. Asignalas variables, una a la vez, a la variable ans  por defecto e imprime el resultado de cadaasignación. Pero cuando usted incluye la expresión en corchetes,

    [ S. score ]

    es igual que

    [ S( 1) . scor e, S( 2) . score, S( 3) . score ]

    el cuál produce un vector fila numérico contiene todas los valores

    ans =83 91 70

    Similarmente, escriba

    S. name

    asigna los nombres, uno al tiempo, a la variable ans. Pero incluyendo la expresión entrellaves

    {S. name}

    crea un arreglo 1 por 3 que contiene los tres nombres

    ans =' Ed Pl um ' ' Toni Mi l l er ' ' J er r y Garc i a '

    Y

    char ( S. name)

    llama la función char   con tres argumentos para crear un arreglo de caracteres de loscampos conocidos,

    ans =Ed Pl um

     Toni Mi l l er J er r y Gar ci a

    6.  PROGRAMAS Y FUNCIONES

    MATLAB es un lenguaje de programación de gran alcance así como un ambiente decómputo interactivo. Los archivos que contienen código en el lenguaje de MATLAB sellaman archivos-M. Usted crea archivos-M usando un editor de textos, entonces los utilizacomo cualquier otra función o comando de MATLAB.

  • 8/19/2019 Introduccioón a Matlab Parte 2

    25/28

     Existen 2 tipos de archivos-M:

    •  Programas, que no aceptan argumentos de entrada o no regresan argumentos de salida.Operan sobre los datos en el espacio de trabajo.

    •  Functions, que puede aceptar argumentos de entrada y regresar argumentos de salida.Las variables internas son locales a la función.

    Si uestd es un nuevo programador de MATLAB, apenas cree los archivos-M que usteddesea probar en el directorio actual. Mientras desarrolla más de sus propios archivos-M,deseará ordenarlos en otros directorios y cajas de herramientas personales que puedeagregar al camino de búsqueda de MATLAB.

    Si usted duplica nombres de función, MATLAB ejecuta el que aparece primero en elcamino de búsqueda.

    Para ver el contenido de un archivo-M, por ejemplo, myfunction.m, use

    t ype myf unct i on

    ProgramasCuando usted invoca un programa, MATLAB ejecuta simplemente los comandos

    encontrados en el archivo. Los programas pueden operar con datos existentes en el espaciode trabajo, o pueden crear nuevos datos sobre los cuales trabajar

    Por ejemplo, cree un archivo llamado magicrank.m que contenga estos comandosde MATLAB:

    % I nvest i gate t he r ank of magi c squaresr = zer os( 1, 32) ;f or n = 3: 32

    r ( n) = r ank(magi c( n) ) ;endrbar(r )

    Al escribir la declaración

    magi cr ank

    hace que MATLAB ejecute los comandos, para calcular el rango de los primeros 30cuadrados mágicos, y para trazar un gráfico de barra del resultado. Después de que laejecución del archivo esté completa, las variables n y r  siguen existiendo en el espacio detrabajo.

  • 8/19/2019 Introduccioón a Matlab Parte 2

    26/28

    Funciones

    Las funciones son archivos-M que pueden aceptar argumentos de entrada y regresarargumentos de salida El nombre del archivo-M y de la función debe ser igual. Lasfunciones operan sobre variables dentro de su propio espacio de trabajo, separado del

    espacio de trabajo al que usted tiene acceso en la línea de comando de MATLAB.

    Un buen ejemplo es proporcionado por rank. El archivo-M r ank. m estádisponible en el directorio

    t ool box/ mat l ab/ mat f un

    Puede ver el archivo con

    t ype rank

    Aquí está el archivo

    f uncti on r = r ank( A, t ol )% RANK Mat r i x rank.% RANK( A) pr ovi des an est i mate of t he number of l i neal l y% i ndependent r ows or col umns of a mat r i x A.% RANK( A, t ol ) i s t he number of si ngul ar val ues of A% t hat are l ar ger t han t ol .% RANK( A) uses t he def aul t t ol = max( si ze(A) ) * nor m( A) * eps.

    s = svd( A) ;i f nargi n==1

    t ol = max( si ze(A) ) * max( s) * eps;end

    r = sum( s > t ol ) ;

    La primera línea de una función archivo-M comienza con el nombre de la función.Da el nombre de la función y el orden de los argumentos. En este caso, hay hasta dosargumentos de entrada y un argumento de salida.

    Las líneas siguientes, hasta la primera línea en blanco o línea ejecutable, son líneasde comentario que proporcionan ayuda al texto. Estas líneas se imprimen cuando ustedescribe

    hel p r ank

    La primera línea del texto de ayuda es la línea H1, que MATLAB despliega cuandousted utiliza el comando lookfor  o solicita ayuda de un directorio.

    El resto del archivo es el código ejecutable de MATLAB que define la función Lavariable s introducida en el cuerpo de la función, así como las variables en la primera línea,r , A y tol, son locales a la función; están separadas de cualquier variable en el espacio detrabajo de MATLAB.

  • 8/19/2019 Introduccioón a Matlab Parte 2

    27/28

     Este ejemplo ilustra un aspecto de las funciones de MATLAB que no se encuentranormalmente en otros lenguajes de programación – un número variable de argumentos. Lafunción rank se puede utilizar de varias maneras:

    r ank( A)r = r ank( A)r = r ank(A, 1. e- 6)

    Muchos archivos-M trabajan de esta manera. Si no se provee ningún argumento de salida,el resultado se guarda en ans. Si el segundo argumento de entrada no se provee, la funcióncalcula un valor por defecto. Dentro del cuerpo de la función, dos cantidades llamadasnargin y nargout están disponibles, las cuales dicen el número de argumentos de entraday de salida implicados en cada uso determinado de la función. La función rank  utilizanargin, pero no necesita utilizar nargout.

    Variables Globales

    Si usted quisiera que más de una función compartiera una copia de una variable,declare simplemente la variable como global en todas las funciones. Haga lo mismo en lalínea de comando si usted quisiera que el espacio de trabajo tenga acceso a la variable. Ladeclaración global debe ocurrir antes de que la variable se utilice en una función. Aunqueno se requiere, usar las mayúsculas para nombres de variables globales ayuda adistinguirlas de otras variables. Por ejemplo, cree un archivo-M llamado falling.m:

    f uncti on h = f al l i ng( t )gl obal GRAVI TYh = 1/ 2*GRAVI TY*t . 2̂;

    Luego escriba:

    gl obal GRAVI TYGRAVI TY = 32;y = f al l i ng( ( 0: . 1: 5) ' ) ;

    Las dos declaraciones globales hacen que el valor asignado a GRAVITY en la línea decomando esté disponible dentro de la función Usted puede entonces modificar GRAVITYrecíprocamente y obtener nuevas soluciones sin editar ningún fichero.

    Dualidad Command/Function

    Los comandos de MATLAB son declaraciones como

    l oadhel p

    Muchos comandos aceptan modificantes

    Load August 17. dat

  • 8/19/2019 Introduccioón a Matlab Parte 2

    28/28

      Hel p magi c Type r ank

    Otra método de proveer modificantes es hacerlos argumentos de cadenas de funciones

    load( ‘ August 17. dat ’ )

    hel p( ‘ magi c’ )t ype( ‘ rank’ )

    Esta es la dualidad command/function de MATLAB. Cualquier comando de la forma

    Command argument

    Puede también escribirse en la forma funcional.

    command( ' ar gument ' )

    La ventaja de la aproximación funcional viene dada cuando el argumento de la cadena seconstruye de pedazos El ejemplo siguiente procesa los ficheros de datos múltiples,

     August1.dat, August2.dat, etcétera. Utiliza la función int2str , que convierte un númeroentero a una cadena de caracteres, para ayudar a construir el nombre del archivo.

    f or d = 1: 31s = [ ' August ' i nt 2str ( d) ' . dat ' ]l oad( s)% Pr ocess t he cont ent s of t he d- t h f i l e

    end


Recommended