Scilab 語法與 Matlab 的主要區別

2021-06-17 01:20:15 字數 4510 閱讀 3621

scilab 語法類似於 matlab ,下面對比地列出一些他們的不同 , 詳細的語法請參考參考文獻 [1], 或其他 scilab 或matlab 書籍 ( 由於 scilab 語法和 matlab 語法有很多相似之處 ).

scilab 中的資料型別有 :

雙精度浮點數

整數字串

布林型多項式

scilab 預設的資料型別是雙精度浮點數,這與 matlab 一樣

scilab 中的一些固定的常量以 % 開頭,比如: %pi( 圓周率 ) , %inf( 無窮大 ) , %nan(not a number), %e (2.17828...)

這與 matlab 不同, matlab 中的常量表示沒有開頭的 % ,比如 pi( 圓周率 ) , inf( 無窮大 ) , nan(not a number)

-->b = [%pi %e]        //b 中存放的是已經定義好的常量

b  =

3.1415927    2.7182818

字串, string :

-->a= "scilab"            //a 是乙個字串

a  =

scilab

-->["i","like";"free","software"]             // 字串可以組合成矩陣。

ans  =

!i     like      !

!free  software  !

布林型, boolean, scilab 中布林變數 true, false 分別用常量表示為 %t 和 %f

-->[%t, %f, 2>1, 3>4]         //%t, %f 是布林變數 true 和 false ,分別顯示為 t,f , 2>1 true, 3>4 false,

ans   =

t f t f

對布林型操作的或且非 , 分別為 : 或 : |, 且 : &, 非 : ~.

-->a = rand(2,2)                  //a 是乙個 2*2 的矩陣,其中存放 [0,1) 之間的浮點數

a  =

0.2113249    0.0002211

0.7560439    0.3303271

-->a>0.5                               // 比較 a 與 0.5 的大小,逐項比較的結構顯示如下

ans  =

f ft f

matrix , scilab 和 matlab 一樣是主是基於矩陣的科學計算軟體, matrix 是 scilab 的基本物件

-->a = [1, 2; 3   4]              // 由逗號或空格隔開的是矩陣的列,由「;」隔開的是行

a  =

1.    2.

3.    4.

-->b = ones(1,3)                 //scilab 內部定義一些建立矩陣的函式, ones 建立全部為一的矩陣

b  =

1.    1.    1.

list ,除 matrix 之外, list 也是 scilab 物件

-->l = list(a,b)             // 建立乙個 list, 裡面儲存的是前面建立的 a,b

l  =

l(1)

1.    2.

3.    4.

l(2)

1.    1.    1.

a  =

x: 32

y: %t

矩陣操作 :

在 scilab 中 , 取矩陣中的元素的操作和 matlab 中的一樣 .

不同的有 :

matrix:    reshape a matrix

-->a=ones(2,2)

a  =

1.    1.

1.    1.

-->matrix(a,1,4)                          // 把乙個 2*2 的矩陣轉變成 1*4 的矩陣

ans  =

1.    1.    1.    1.

矩陣元素刪除 :

-->a=[11:14;21:24]                     // 建立乙個 2*4 的矩陣

a  =

11.    12.    13.    14.

21.    22.    23.    24.

-->a([1,2],[1,3])=                      // 選出指定的元素 :1,2 行的 1,3 列 , 並刪除

a  =

12.    14.

22.    24.

-->a(:,$)=                                    //$ 代表矩陣末尾 , 刪除矩陣最後一列

a  =

12.22.

-->a(:,$+1)=[4;5]                         // 給矩陣增加一列

a  =

12.    4.

22.    5.

另外 scilab 還有

多項式資料型別 , 具體請參考參考文獻 [1]

或且非或 : |

且 : &

非 : ~

選擇if-else 結構

if then

endif then

else

endif then

elseif then

else

end類似於 c 語言中的 switch 的選擇結構 :

select ,

case then

case then

else

end與 c 語言中的 switch 不同的是 , 每乙個 case 後執行的 instructions 末尾不需要用 break, 程式執行完 instructions的最後一條語句後自動跳出 select.

迴圈 , for 迴圈和 while 迴圈和 matlab 中的一樣

for =

endwhile

end迴圈中可以用 continue 和 break 這樣的關鍵字 .

scilab 指令碼和函式

執行 scilab 指令碼和函式的方法與 matlab 有很大不同 .

scilab **可以寫入檔案 , 再匯入到 scilab 中批量執行 ,

scilab **編輯器可以用 scilab 自帶的編輯器 , 啟動編輯器的命令是 scipad.

scilab 程式的副檔名是 .sci 或 .sce

如寫好乙個檔案 ,foo.sci

執行他方法是 ,

è exec(「 目錄 /foo.sci」)

如果 , 當前目錄有 foo.sci, 執行方法可簡化為

è exec(「foo.sci」)

或è exec foo.sci

定義函式 :

檔案 mymin.sci

function m = mymin(x)

//get minimum element from the matrix x.

m = x(1);

for i = 2:size(x, '*')

if x(i) < m then

m = x(i);

endend

endfunction

「//」 後面的是 scilab 中的注釋

size(x,』*』) 得到矩陣 x 總的大小 , 比如若 x 是 2*3 的矩陣 , size(x,』*』) 值為 6.

函式的結尾為 endfunction.

載入和執行函式 :

首先要載入函式 :

轉到存放 mymin.sci 的目錄下 , 執行

è getf(「mymin.sci」) 或 getf mymin.sci

執行函式 :

-->mymin(1:10)

ans  =

1.建立指令碼並執行 :

檔案 testmymin.sce

x = rand(3,3);

xmin = min(x) // get min value of x

myminresult = mymin(x)

if xmin == myminresult then

disp("the result is correct");

end執行指令碼及結果

-->exec testmymin.sce

-->x = rand(3,3);

-->xmin = min(x) // get min value of x

xmin  =

0.0437334

-->myminresult = mymin(x)

myminresult  =

0.0437334

-->if xmin == myminresult then

-->      disp("the result is correct");

the result is corret

-->end

分享到:

Scilab與matlab的不同點

一些預設的變數的表示方法不同。比如圓周率pai在matlab裡面就是 pi 而在scilab裡面要加上 也就是說,呼叫圓周率的時候要寫 pi 類似的還有 虛數在matlab裡可以是 i 或者 j 而在scilab裡面為 i j 好像不可以 例外的是預設變數 ans 兩者都不需要加百分號。操作符的用法...

Matlab基礎語法

2020.02.02一更 你好呀!初學matlab,做乙個記錄。本文適合有c基礎的matlab小白 我自己 力求簡短,文章多用 舉例。知識點 矩陣寫法,迴圈 判斷,輸入輸出,函式,畫圖 二維,三維,曲面,動態 乘方 不等於 數學乘法 生成乙個2x3矩陣 寫法1 x 12 3 45 6 寫法2 x 1...

Matlab 基本語法

注釋 使用 進行注釋,選中對應區域,按ctrl r可以一鍵注釋 注釋內容 邏輯運算 在matlab中,和c語言一樣,可以使用 和 但是也有不一樣的地方,例如 是不等於的意思,而不能使用 四則運算 1 1 1 1 1 1 1 1在matlab中輸出的結果如果沒有變數表示,預設使用ans表示 例如 4 ...