Descripción Scilab

Descripción Scilab

Scilab es considerado por muchos usuarios de Linux como el Matlab de Linux. Se desarrolló en los 90 con el objetivo de ser un sistema abierto donde el usuario pueda definir nuevos tipos de datos y operaciones entre ellos. Los creadores fueron INRIA (Instituto nacional de investigación en Informática y Automática) y la ENPC (Escuela Nacional de puentes y caminos), en la actualidad es desarrollada por Scilab Enterprises.

Es de código abierto y está disponible en múltiples sistemas operativos. Puede instalarse directamente desde el centro de software de Ubuntu y está disponible en dos formatos: Scilab completo y Scilab CLI que solo tiene línea de comandos.

Tras la instalación podemos comprobar que dispone de un entorno similar al de Matlab. Y las ordenes y nomenclatura utilizadas, al menos las ordenes sencillas son las mismas que utilizaríamos en Matlab, en la parte de ejercicios podemos observar la similitud.

También dispone de un entorno gráfico similar al Simulink de Matlab llamado Xcos, para simulación de sistemas dinámicos y resolución de ecuaciones diferenciales.

Scilab cuenta con multitud de herramientas como  Gráficos 2-D y 3-D, animación, álgebra lineal, matrices dispersas, polinomios y funciones racionales, simulación, Xcos:  simulador por diagramas de bloque, control clásico , robusto, optimización LMI, optimización diferenciable y no diferenciable, tratamiento de señales, grafos y redes.

Dispone de mucha información en línea y tutoriales que pueden ayudar a cualquier persona a aprender a usarlo rápidamente, este acostumbrado a utilizar este tipo de programas previamente o no. Podemos consultar las cajas de herramientas disponibles para Scilab en la web (http://atoms.scilab.org/).

En cuanto a las diferencias entre Matlab y Scilab, existen bastantes, no en cuanto a funcionalidad sino en cuanto a sintaxis más bien. Por ejemplo, los comentarios en Scilab se marcan con // en lugar de %. Las variables suelen ir con % , las cadenas de texto se consideran como matrices. Los estados verdadero y falso son T y F en Scilab mientras en que Matlab se usa 0 y 1.

Las funciones no son ficheros como los m-files de Matlab. Una o varias funciones pueden definirse dentro del mismo fichero .sci, y el nombre del fichero no tiene por qué ser necesariamente el de la función. Y antes de usarlas se debe ejecutar el comando:

getf(“fichero.sci”,”c”)

A continuación se muestra una tabla con las equivalencias entre las funciones de Matlab y SCILAB.

 

Matlab SCILAB Matlab SCILAB
all and isglobal
any or isinf(a) A==%inf
balance balanc isnan(a)
clock unix(‘date’) isstr(a) type (a)==10
computer unix_g(‘machine’) keyboard pause + resume
cputime timer lasterr
delete unix(‘rm file’) lookfor Apropos
dir unix_g(‘ls’) more Lines
echo mode pack stacksize
eig spec or bdiag pause halt
eval evstr qz gspec+gschur
exist exists + type randn rand
fclose file(‘close’) rem modulo
feof setstr code2str
ferror strcmp(a,b) a==b
feval evstr and strcat uicontrol
filter rtitr uimenu getvalue
finite (x>%inf) unix unix_g
fopen file(‘open’) version
fread Read which whereis
fseek File nargin [nargout,nargin]=argn[0]
ftell nargout
fwrite Writeb

Scilab dispone también de una serie de funciones que emulan funciones existentes en Matlab, para ello solo hay que poner el prefijo mtlb_ delante del nombre de la función:

mtlb_ mtlb_fft mtlb_ifft mtlb_ones
mtlb_all mtlb_filter mtlb_is mtlb_plot
mtlb_any mtlb_find mtlb_ishold mtlb_prod
mtlb_axes mtlb_findstr mtlb_isreal mtlb_qz
mtlb_cell mtlb_fliplr mtlb_lenght mtlb_rand
mtlb_choices mtlb_flipud mtlb_load mtlb_save
mtlb_clf mtlb_fprintf mtlb_loglog mtlb_semilogx
mtlb_cumsum mtlb_fread mtlb_manx mtlb_semilogy
mtlb_diff mtlb_fscanf mtlb_mean mtlb_sprintf
mtlb_e mtlb_fwrite mtlb_median mtlb_sscanf
mtlb_eval mtlb_get mtlb_mesh mtlb_subplot
mtlb_exist mtlb_hold mtlb_meshdom
mtlb_eye mtlb_i mtlb_min

Mas información acerca de la equivalencia de funciones entre Matlab y Scilab:

http://help.scilab.org/docs/5.4.1/fr_FR/section_36184e52ee88ad558380be4e92d3de21.html

En cuanto a conversión de binarios de Matlab a Scilab, en la página de ayuda de Scilab encontramos comandos relativos a esta tarea:

loadmatfile — Carga un archivo Matlab (binario o ASCII) Scilab
matfile_close — Cierra un binario de Matlab
matfile_listvar — Lista de variables de un binario de Matlab.
matfile_open — Abre un archivo binario de Matlab.
savematfile — Guarda un archivo como binario de Matlab.

Más información en:

http://help.scilab.org/docs/5.4.1/en_US/section_f65ed0ac8c3f21fcb03855b5ee46c71c.html

Enlaces:

Ejercicios con Scilab

Página oficial del proyecto

Descarga de la herramienta

Descripción FreeMat

Descripción FreeMat

FreeMat es un entorno de cálculo numérico similar a Matlab y Octave. Su lenguaje de programación es similar e incluso soporta algunas de las funciones de Matlab y de su IDL. Incluye una interfaz para código C, C++ y Fortran además permite el desarrollo de algoritmos distribuidos paralelos y tiene capacidad de visualización e impresión en 3D. Según su pagina web, soportaría cerca del 95% de las características de Matlab.

Enlaces:

Página oficial del proyecto

Descarga de la herramienta

Descripción Sage

Descripción Sage

Sage (Software for Algebra ande Geometry Experimentation) nació para convertirse en una alternativa viable a los programas de cálculo matemático de pago existentes unificando la amplia gama de software matemático en código abierto ya existente en una interfaz común, así, dónde no existiese una solución de software libre para un problema, sería escrito en Sage. Para utilizar Sage, un usuario sólo necesitará conocer Python que esta muy extendido por que es utilizado en miles de aplicaciones de diversa índole.

Enlaces:

Página oficial del proyecto

Descarga de la herramienta

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

Descripción RLab

Descripción RLab

RLab es un software de programación numérica que proporciona algunas de las mejores características de Matlab pero diseñado para trabajar en modo consola, lo que lo hace más potente y mas rápido pero también mas difícil de utilizar. El desarrollador de este programa opto por una sintaxis diferente a la de Matlab para disminuir su ambigüedad por lo que adaptarse a esta solución puede requerir mas tiempo y esfuerzo que adaptarse a otras alternativas.

Enlaces:

Página oficial de la herramienta

Descarga de la Herramienta