Descripción GNU-Octave

Descripción GNU-Octave

Octave es una herramienta de gran utilidad para el cálculo numérico que se ha convertido en una alternativa real a una de las estrellas del Software en ingeniería: Matlab.  Es un proyecto de software libre que no nació con la idea de imitar a su actual competidor sino para ser utilizado en un curso de reactores químicos en la universidad de Wisconsin.

Se trata de un una herramienta de software libre diseñada para realizar cálculos numéricos, de algebra, funciones, polinomios, etc.,  y también ejecuta comandos en tiempo real.  Proporciona una interfaz de comandos que permite resolver cálculos utilizando un lenguaje casi compatible con Matlab, y es considerada su alternativa de software libre, permite utilizar la gran mayoría de las funciones de la Mathworks y además permite el uso de la mayor parte de las librerías de C.

Octave no comenzó como una alternativa a Matlab, sino que se inició para ser utilizado en un curso de reactores químicos y posteriormente se amplió.

Comenzó su desarrollo a cargo de John W.Eaton, y poco a poco ha ido pareciéndose a Matlab pero manteniendo algunas diferencias. En palabras del propio John Eaton: “Hay diferencias entre Matlab y Octave y algunas seguirán así. No existen porque Octave esté roto sino porque creemos que Matlab lo está.”

Octave utiliza matrices como tipo de datos básico, tiene soporte para números complejos, funciones integradas y una extensa librería de funciones, puede cargar archivos con funciones de Matlab (.m), su funcionalidad es ampliable por el usuario, se pueden introducir órdenes para listar contenidos de directorios ya que también se comporta como una consola de ordenes Shell, además cuenta con ayuda en Español.

Sin embargo tiene algunas diferencias o incompatibilidades. Octave permite ciertas cosas que no permite Matlab, como por ejemplo el uso de comillas dobles y simples y por tanto habrá que tener todas estas diferencias en mente a la hora de programar para conseguir la máxima compatibilidad posible si se desea poder utilizar el código en ambas herramientas.

Principales diferencias con Matlab:

  1. No dispone de editor.
  2. No dispone de interfaz gráfica.
  3. La programación orientada a objetos aun no puede realizarse con Octave.
  4. Octave no incluye herramienta análoga a Simulink.
  5. Octave incluye un API para la interfaz MEX de Matlab. Sin embargo, Octave y Matlab no son completamente compatibles internamente y es necesario manipular los datos para convertir de MEX al equivalente de Octave.
  6. Matlab permite abrir archivos vacíos, Octave no.
  7. Algunos tipos de variables no son aceptados.
  8. Matlab utiliza % para marcar los comentarios, en Octave se puede usar % o #.
  9. Para exponenciar, Matlab utiliza ^, Octave permite ^ o **.
  10. Para delimitar cadenas de texto, Matlab utiliza comillas simples, Octave, permite comillas simples y dobles.
  11. Matlab ha incluido un nuevo formato HDF5 para plataformas de 64 bits donde el standard de Matlab no guarda correctamente las variables. Octave acepta archivos en ese formato pero no puede guardarlos. Además algunos caracteres Unicode multi-byte aún no se soportan.
  12. Matlab no permite espacio antes del operador .

[0 1]’   % funciona en Matlab y en Octave

[0 1] ‘  % funciona solo en Octave

  1. Matlab requiere … para cambiar de línea

rand (1, …

2)                % funciona en  Matlab y en Octave

rand (1,

2)                % funciona solo en Octave

rand (1, \

2)                % funciona solo en Octave

  1. Comparación ‘~=’ funciona en Matlab y en Octave, pero en Octave también se puede usar ‘!=’.
  2. Limitaciones en el generador de perfiles.
  3. Las cajas de herramientas de las que se dispone podrían no tener las mismas características que ofrecen las de Matlab, ya que son creadas y donadas por usuarios que las comparten a través de “Octave Forge”
  4. El cálculo de operaciones q incluyen |,& y ||, &&, /, \, no es exactamente el mismo en Matlab y en Octave.
  5. En Octave los comentarios se pueden marcar con #, esto permite a los sistemas POSIX tener en la primera línea el comentario #! Octave –q que marca el script como ejecutable. Matlab no incluye este comportamiento ya que no soporta comentarios marcados con # al principio.
  6. En Matlab no se pueden terminar los bloques con otras palabras clave que no sean “end”, no permite el uso de por ejemplo “endif”, “endfor”….
  7. Octave incluye una característica que hace que las variables que han sido modificadas en bloques que terminan en un error sean restauradas unwind_protect en el caso de Matlab se puede conseguir el mismo efecto combinando  rethrow (lasterror() ) pero estas órdenes están disponibles en Octave solo a partir de la versión 2.9.10. A partir de Matlab 2008a aparece OnCleanUp que es similar al unwind_protect de Octave, pero no idéntico.
  8. Existen limitaciones en cuanto al uso de identificadores de función.
  9. Funciones anidadas: Los autores de Octave han considerado que las funciones anidadas generan más problemas que ventajas y hacen más difícil encontrar errores, por lo que no se utilizan.
  10. Otras diferencias en cuanto a funciones:
    1. Para “dbstep,in” se usa dbstep, y para “dbstep, se usa “dbnext”.
    2. Para “eig(A,B)” se usa “qz(A,B).
    3. Fputs no esta disponible en Matlab, en us lugar se usa fprintf.

Octave soporta printf y fprintf mientras Matlab solo soporta fprintf

Enlaces:

Ejercicios con GNU-Octave

Página oficial del proyecto

Descarga de la herramienta

One thought on “Descripción GNU-Octave

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *