Ejercicios de Scilab

A continuación se muestran capturas de pantalla de la realización de los ejercicios anteriores con Scilab, los mismos que realizamos con Matlab.  Como podemos observar la nomenclatura y el funcionamiento es muy similar al de Matlab pero no igual, y hay que tener cuidado con estas pequeñas diferencias. El entorno visual es casi idéntico como podemos observar.

Ejercicio 1: Definir una matriz A de dimensiones 5×4 y extraer los bloques formados por:

  1. La fila cuarta
  2. La columna tercera
  3. Desde la fila 2 a la 4
  4. Desde la columna 1 a la columna 3
  5. Las filas 1,3 y 5
  6. Las columnas 2 y 4

Scilab_Captura_1

Ejercicio 2: Matrices especiales.

  1. Crear una matriz identidad de dimensión 5
  2. Crear una matriz identidad de dimensión 5 utilizando una variable como parámetro
  3. Crear una matriz identidad del mismo tamaño que la matriz A
  4. Crear una matriz de dimensión 4×5 cuyos elementos sean todos cero menos la diagonal que esté formada por unos
  5. Crear matrices formadas por ceros (zeros(x)).
  6. Crear matrices formadas por unos (ones(x)).
  7. Generar matrices formadas por números aleatorios entre 0 y 1, o entre cero y un número y. (y*rand(x))

Scilab_Captura_2

Al intentar utilizar la orden “eye” que se utiliza en Matlab nos encontramos con  que no es aceptada. Scilab cuenta con una forma de “adaptar” las ordenes tal y como las usamos en Matlab que consiste en añadir “mltb_” delante del nombre de la función.

Scilab_Captura_3

Ejercicio 3: Formar matrices creadas a partir de otras matrices.

Generamos cuatro matrices A, B, C y D aleatorias de dimensiones (3,2), (3,3), (2,3) y (2,2) respectivamente. Y generamos nuevas matrices que las combinen. Usando espacio E=(A B) la segunda matriz forma las ultimas columnas de la nueva matriz. Separando mediante “;” la segunda matriz forma las últimas filas de la nueva matriz.

Crear matrices especiales utilizando las órdenes zeros y ones

Scilab_Captura_4Scilab_Captura_5Scilab_Captura_6Scilab_Captura_7

Ejercicio 4: Operaciones con matrices.

Realizar operaciones sencillas con matrices mediante los operadores lógicos habituales, suma, resta, multiplicación, potencia…Funciones inv, det y rref sirven para calcular la inversa, el determinante y la matriz escalonada canónica respectivamente.

Scilab_Captura_8

Para elevar a una potencia utilizamos ** en lugar de ^

Scilab_Captura_9

Como hemos comprobado, el funcionamiento es prácticamente idéntico al de Matlab y las ordenes iguales o muy parecidas.

 

Ejercicio de Simulación con XCOS

 

Podemos acceder al entorno XCOS directamente desde la barra de herramientas de Scilab pulsando el icono Icono Simulación.
Al pulsarlo aparecerán dos ventanas nuevas, una con el espacio de dibujo y otra con las librerías.
Las librerías son similares a las que encontrábamos en Matlab y se utilizan de la misma forma, arrastrando el componente al espacio de dibujo y modificando posteriormente el valor dando doble clic con el ratón.

Scilab_Xcos_1

A la hora de simular, en lugar de utilizar un solo componente como hacíamos en Matlab con “Scope”, aquí tenemos que añadirle una fuente. En el ejemplo añadimos el bloque llamado “Clockc” que genera una serie regular de eventos.
Introducimos los parámetros de simulación y pulsamos en “Iniciar”
Scilab_Xcos_2
 Scilab_Xcos_3  Scilab_Xcos_4
Aparecerá una nueva ventana con el gráfico de la simulación.

 

­El entorno XCos es también muy similar a su análogo de Matlab, “Simulink”.

 

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