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