2. Tipos de datos

Contents of this section

Todas las versiones de Octave incluyen un cierto número de tipos de datos internos incluyendo matrices y escalares complejos y reales, y un tipo de dato llamado "data structure" (como el "record" de Fortran'90 o el "strut" de C. Es también posible definir tipos de datos especilizados escribiendo las rutinas apropiadas en C++ (esta es una ventaja de Octave de ser "free-software" es decir que tenemos acceso a los fuentes). En algunos sistemas no es necesario recompilar Octave si es posible hacer uso de la opción de linkedición dinámica de vínculos.

2.1 Objetos Numéricos

Los objetos numéricos internos de Octave incluyen escalares y matrices reales y complejos. Todos los objetos numéricos son representados internamente como números de punto flotante de doble precisión (incluso los enteros!!).

Las matrices pueden ser de cualquier orden y pueden ser cambiadas de tamaño y forma dinámicamente. Es muy simple extraer filas individuales, columnas o submatrices usando un sistema muy poderoso de indexación. (Esto lo veremos más adelante).

2.2 Cadenas de caracteres (strings)

Una cadena de caracteres en Octave puede ser entrada delimitando la cadena con apóstrofes o comillas:

octave> a="parrot"
a = parrot
octave> b='parrot'
b = parrot
octave> 

La notación con apóstrofes es compatible con Matlab mientras pero se presta a confusión con el operador de transposición de matrices. Por eso es preferible usar comillas (esto NO es compatible con Matlab).

Internamente, Octave guarda las cadenas como matrices cuyos elementos son caracteres. Todas las operaciones de indexación que funcionan con matrices pueden ser usadas con las cadenas para indicar subcadenas.

Los caracteres especiales que no pueden ser introducidos directamente (por ejemplo las comillas) deben ser "escapeados" ("escaped"):

octave> a="Esto es \"interesante\""
a = Esto es "interesante"
octave> b="directorio en DOS c:\\PEDRO\\OCTAVE\\MACROS"
b = directorio en DOS c:\PEDRO\OCTAVE\MACROS
octave> 

2.3 Estructuras de datos

Esta es una opción que (a nuestro conocimiento) no existe en Matlab. Permite agrupar en un objeto a objetos de diferente tipo y en forma recursiva:

octave> x.a = 1;
octave> x.b = [1, 2; 3, 4];
octave> x.c = "string";
octave> x.d.a="first d part";
octave> x.d.b=rand(2);
octave> x
x =
{
  a = 1
  b =
    1  2
    3  4
  c = string
  d =
  {
    a = first d part
    b =
      0.34585  0.68540
      0.47757  0.58387
  }
}
octave> x.d.b(2,2)
ans = 0.58387
octave> 


Next Chapter, Previous Chapter

Table of contents of this chapter, General table of contents

Top of the document, Beginning of this Chapter