Scilab

Scilab是由法国国立计算机及自动化研究院（l'Institut national de recherche en informatique et en automatique，简称INRIA）和法国国立桥梁学院（l'École nationale des ponts et chaussées，简称ENPC）开发的开放源码的科学计算自由软件。Scilab一词来源于英文「Scientific Laboratory」（科学实验室）词头的合并。
目前全世界使用Scilab的人数估计有1,000,000人。Scilab也是以矩阵作为主要的数据类型，同时拥有丰富的绘图功能。Scilab能处理包括信号处理、统计分析、图像增强、数值最佳化、动态系统仿真等方面的问题。网路上也有不少人为它写了许多延伸函式库、丰富了它的功能。
为推广普及Scilab，自2002年起，INRIA跟中国科学院自动化研究所每年组织一次Scilab竞赛。

**历史**
Scilab始源于80年代在INRIA开发的计算机辅助控制系统设计软件Blaise，其最初的开发者为弗朗斯瓦·底列贝克（François Delebecque）和舍齐·史迪尔（Serge Steer）。Blaise的诞生受到了克里夫·莫勒尔（Steve Moler）当时用Fortran编写的MATLAB软件的启发。
1984年，Blaise更名为Basile，由Simulog（INRIA的第一个研发小组）负责分发。
90年代初，Simulog停止分发Basile。Basile更名为Scilab，由来自ENPC的Jean-Philippe Chancelier和来自INRIA的François Delebecque，Claude Gomez，Maurice Goursat，Ramine Nikoukhah，Serge Steer共6人组成的Scilab小组继续进行开发工作。后来INRIA决定把Scilab作为开源软件分发。1994年1月2日，Scilab的第一个释放版本，Scilab 1.1上传到一个匿名ftp站点。直到2002年底，Scilab都是由6人小组与一些外部开发者一道共同开发并发布的。从2003年开始，由新成立的Scilab协会负责Scilab软件的后续开发以及相关技术支持。
Scilab协会于2005年启动了基于Java的Scilab 5.x的开发，而之前的部分Scilab开发小组成员（包括ENPC以及部分INRIA成员）则在之前的Scilab 4.x的基础上另外发布了基于GTK+的Scilab版本：ScicosLab（该版本集成了Scicos）。
Scilab协会在2008年加入Digiteo基金会，自此Scilab协会开始在Digiteo基金会的引领下对Scilab进行开发，这种情况一直持续到2012年6月。另外也是在2008年，Scilab开始基于CeCILL许可协议发行，CeCILL是一个与GPL兼容的开源许可协议。
为了保证Scilab的长远发展，在INRIA的支持下，Scilab事业公司于2010年6月成立。自2012年7月开始，Scilab事业公司将完全负责对Scilab后续版本的开发与发布，此外公司也提供关于Scilab的专业服务与支持。2017年，Scilab事业公司被ESI集团并购。

**主要特点**
大约1700个用于科学和工程计算的数学函数
*2维和3维可视化数据图形
*约束/无约束、连续/离散问题的最佳化
*数据分析与建模
*控制系统的分析与设计
*信号处理
*用于自定义开发扩展功能的API

**语法**
Scilab的语法很大程度上基于MATLAB语言，执行Scilab代码的最简单方式是在图形窗口中提示符-->后输入命令。此时，Scilab以交互式的数学shell方式工作。
Scilab的Hello World!为：
disp('Hello World');
显示3维曲面的函数为：
// A simple plot of z = f(x,y)
t=0:0.3:2*%pi';
z=sin(t)*cos(t');
plot3d(t,t',z)

**工具箱**
Scilab有许多为不同目的设计的工具箱，例如：- Scilab_Image_Processing（SIP）及其变种（例如SIVP）- Scilab小波工具箱- Scilab Java 和.NET 模块- Scilab 远程访问模块
更多工具包可在ATOMS Portal或Scilab forge上找到。

**GUI界面**
Scilab的GUI界面与MATLAB很类似，其主要部分是一个用于输入命令的交互式控制台；在Scilab控制台中按Tab键，Scilab会依据游标之前的文字自动补齐变数、函式或档案的名称；此外，Scilab也会保存控制台中输入的命令，通过按「"↑","↓"」键就能前后检索已键入的命令。

**Scilab语言**
Scilab语言也是一种交互性的数学脚本语言，语法与MATLAB语言相近，也以矩阵作为数据的基本组织形式。Scilab还有一个可以把MATLAB源程序转换为Scilab源程序的代码翻译器。
数据类型
1.常数（constant）类型（数据前面加%表示该数据是Scilab已经定义好的）
-->a = 1.5-2.5*%i, %pi; %inf, -1.5e2 
a =
1.5 - 2.5i    3.1415927  
Inf         - 150.
2.字符串（string）类型
-->b = "123", "456"; "Lets use", "SciLab!" 
b =
123        456      

Let's use  SciLab!  
3.有理式（rational）类型
-->x = poly（0, "x"）; //定义x为多项式
-->c = x/（x^2+1）, 2; -1/x, x^3+1
c =
x       2       
-----     -       
2            
1 + x     1       

3  
- 1         1 + x   
-         -----   
x           1 
4.表（list）类型（类似于C语言中的“结构”数据类型，即可以包含不同类型的元素）
-->d = list（1,2;3,4, "abc", poly(1,2,3,"x","c"）)
d =

d (1) 
1.    2.  
3.    4.  

d (2) 
abc   

d (3) 
2  
1 + 2x + 3x  
编程
1.if选择语句
-->x = 1; 
-->if  x > 0
-->    y = x - 1;
-->elseif  x     y = x + 1;
-->else
-->    y = x;
-->end 
-->y
y =
0.
2.select选择语句
-->x = 1;
-->select  x
-->case  1
-->    y = x + 1;
-->case  -1
-->    y = x - 1;
-->else
-->    y = x;
-->end
-->y
y =
2.
3.for循环语句
-->x = ; 
-->for  k = 1:4
-->    x (k) = 2 * k;
-->end
-->x'
ans =
2.    4.    6.    8.
4.while循环语句
-->k = 1; 
-->x = ; 
-->while  k     x (k) = 2 * k;
-->    k = k + 1;
-->end
-->x'
ans =
2.    4.    6.    8.
*另外，可以在while或for循环语句中使用break关键字跳出循环
5.自定义函数
-->function  a,b = mp（x1,x2）
-->    a = x1 + x2;
-->    b = x1 * x2;
-->endfunction
-->x,y = mp（1+%i,2）
y =
2. + 2.i  
x =
3. + i

**工具箱**
同MATLAB软件中的Simulink工具箱类似，Scilab也拥有一个用于混合动态系统建模/仿真的工具箱：Xcos（它代替了Scilab 5.2之前的Scicos）。用户可以自己编写扩展的工具模块并添加于Scilab中，或者使用别人已编写好的扩展模块。Scilab提供了一个模块管理器（ATOMS）统一对扩展模块进行搜索、安装和更新。在Scilab官方的wiki页面上对Scilab工具箱和MATLAB工具箱之间的相关性进行了详细对比。
Scilab的其它一些工具箱：图像处理（SIP、SIVP）、小波变换（Scilab Wavelet Toolbox）、串口通信（Serial Communication Toolbox）、图形和网络计算（Metanet）、GPU计算（sciGPGPU）、航天动力学分析（CelestLab）等等。
Scilab的许多工具箱可以在网站ATOMS Portal上找到。

**参考文献**

**引用**

**网页**
    Scicos > Historydate=20130516213713  - Scilab/Scicos history

**参见**
MATLAB
*GNU Octave
*FreeMat

**外部链接**
  Scilab官网date=20081111100829 -  Scilab Enterprisesdate=20160531064113 -  Scilab Google Group-  嵌入式系统Scilab：Scilab-EMB-  Scilab正体中文计划-  中文Scilab教育论坛-  中文Scilab文件date=20081206134635 -  Scilab简体中文主页date=20050103020403 -  Scilab中文论坛date=20090121024220 -  2008年Scilab竞赛主页date=20090121024338