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