**Scilab**是由法國國立計算機及自動化研究院（l'Institut national de recherche en informatique et en automatique，簡稱INRIA）和法國國立橋樑學院（l'École nationale des ponts et chaussées，簡稱ENPC）开发的开放源码的科学计算自由软件。Scilab一詞來源於英文「**Sci**entific **Lab**oratory」（科學實驗室）詞頭的合并。

目前全世界使用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图像处理工具箱（英语：）（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"; "Let''s 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 < 0
--> 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 < 5
--> 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（页面存档备份，存于）或者Scilab forge（页面存档备份，存于）上找到。

参考文献
----

### 引用

1. ↑ .  [2023年5月23日].
2. ↑ . scilab.org.  [2008-11-25]. （原始内容存档于2005-01-03） （英语）.
3. 1 2 . scilab.org.  [2010-05-08]. （原始内容存档于2010-06-20） （英语）.

### 网页

* （英文） Scicos > History（页面存档备份，存于） - Scilab/Scicos history

參見
--

* MATLAB
* GNU Octave
* FreeMat

外部链接
----

* Scilab官網（页面存档备份，存于）（英文）
* Scilab Enterprises（页面存档备份，存于）（英文）
* Scilab Google Group（英文）
* 嵌入式系统Scilab：Scilab-EMB（英文）
* Scilab正體中文計畫（繁體中文）
* 中文Scilab教育論壇（繁體中文）
* 中文Scilab文件（页面存档备份，存于）（繁體中文）
* Scilab簡體中文主页（页面存档备份，存于）（简体中文）
* Scilab中文论坛（页面存档备份，存于）（简体中文）
* 2008年Scilab竞赛主页（页面存档备份，存于）（简体中文）


|  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * 
* 论
* 编
数值分析软件 |
| --- |
|  |
| 开源软件 | 
* ADMB
* Euler
* FreeFem++
* FreeMat
* Genius（英语：）
* Gmsh
* GNU Octave
* gretl
* Julia
* Maxima
* OpenFOAM
* R
* SageMath
* SALOME
* ScicosLab
* Scilab
* Spyder
* Weka

 |
|  |
| 专有软件 | 
* Chapel
* DADiSP
* Fortress
* GAUSS
* LabVIEW
* Maple
* Mathcad
* MATLAB
* Mathematica
* Speakeasy（英语：）
* VisSim
* X10

 |
|  |
| **列表（英语：）**  · **比较（英语：）** |

 |


|  |  |  |
| --- | --- | --- |
| 

|  |  |
| --- | --- |
| 规范控制 編輯維基數據鏈接 | 
* GND: 4559155-6
* NKC: ph938068

 |

 |