在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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 F T F Scilab 对象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;A.y = %t //A 的数据类型是 mlist, 请查帮助以了解详情 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] Scilab 编程或且非 或 : | 且 : & 非 : ~ 选择 If-else 结构 if <condition> then <instructions> end if <condition> then <instructions> else <instructions> end if <condition> then <instructions> elseif <condition> then <instructions> … else <instructions> end 类似于 c 语言中的 switch 的选择结构 : select <expr> , case <expr1> then <instructions> case <expr2> then <instructions> ... else <instructions> end 与 c 语言中的 switch 不同的是 , 每一个 case 后执行的 instructions 末尾不需要用 break, 程序运行完 instructions 的最后一条语句后自动跳出 select. 循环 , for 循环和 while 循环和 Matlab 中的一样 for <name>=<expr> <instructions> end while <condition> <instructions> 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); end end 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 原帖:http://blog.csdn.net/aidebear/archive/2009/03/12/3985761.aspx |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论