Scilab

**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! 為：

顯示 3 維曲面的函數為：

## 工具箱

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 選擇語句

2.select 選擇語句

3.for 循環語句

4.while 循環語句

* 另外，可以在 while 或 for 循環語句中使用 break 關鍵字跳出循環

5. 自訂函數

## 工具箱

同 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（頁面存檔備份，存於網際網路檔案館）上找到。

## 參考文獻

### 參照

### 網頁

## 參見

* MATLAB
* GNU Octave
* FreeMat

## 外部連結

* Scilab 官網（頁面存檔備份，存於網際網路檔案館）（英文）
* Scilab Enterprises（頁面存檔備份，存於網際網路檔案館）（英文）
* Scilab Google Group（英文）
* 嵌入式系統 Scilab：Scilab-EMB（英文）
* Scilab 正體中文計畫（繁體中文）
* 中文 Scilab 教育論壇（繁體中文）
* 中文 Scilab 檔案（頁面存檔備份，存於網際網路檔案館）（繁體中文）
* Scilab 簡體中文首頁（頁面存檔備份，存於網際網路檔案館）（簡體中文）
* Scilab 中文論壇（頁面存檔備份，存於網際網路檔案館）（簡體中文）
* 2008 年 Scilab 競賽首頁（頁面存檔備份，存於網際網路檔案館）（簡體中文）