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 ...