Scilab的初步介绍

        一项软件或者技术可能出现较早,但成熟应用或者受到重视往往需要经过较长时间,一方面是因为软件本身的稳定性有时间规律性,另一方面则是因为人们对于某个事物的接受需要过程性。随着博主研究的深入和各种阅历的增长,对于轻量级软件的爱好日益加深。它们能够完成大型软件的部分功能,且满足用户需求,专注于某个技术领域。Scilab是一款较为知名的开源软件,从易用性和易安装性等方面考虑,可以作为工程师或科研工作者的一个重要手段,替换复杂的MATLAB。

        随着科学技术的普及发展,以及计算机应用进入各个领域,使用科学计算软件已经变成越来越常规的工作。在这样的背景下,MATLAB(主要是基于数值式计算)、MAPLE(主要是基于符号式计算)等科学计算软件得到了迅猛发展。SCILAB 是由法国国家信息、自动化研究院(INRIA)的科学家们开发的“开放源码”软件。SCILAB 一词来源于英文“Scientific Laboratory"(科学实验室)词头的合并。与MATLAB类似,SCILAB也是一种科学工程计算软件,其数据类型丰富,可以很方便地实现各种矩阵运算与图形显示,能应用于科学计算、数学建模、信号处理、决策优化、线性/非线性控制等各个方面。它还提供可以满足不同工程与科学需要的工具箱,例如SCICOS,信号处理工具箱,图与网络工具箱等。可以说,就基本的功能如科学计算、矩阵处理及图形显示而言,MATLAB能完成的工作SCILAB都可以实现。由于SCILAB的语法与MATLAB非常接近,熟悉MATLAB编程的人很快就会掌握SCILAB的使用。有意思的是,SCILAB提供的语言转换函数可以自动将用MATLAB语言编写的程序翻译为SCILAB语言。目前,SCILAB除了WINDOWS与NT版本外,还有多种UNIX或LINUX下的版本,如SGI MIPS Irix, PC Linux, Sun Sparc stations(SunSolaris) 等。

        这里通过两个方面来初步介绍Scilab,其它复杂功能在此基础上非常容易读懂,且Scilab官方网站上提供了大量的文档和示例,开发生态链较为完备。

基本命令

        由于Scilab主要针对向量和矩阵进行分析和运算,所以基本命令主要围绕着与它们相关的内容展开。

(1)简单数据处理

        例1,生成向量和矩阵。

v=ones(1,120)
M=ones(5,5)

        Scilab中生成矩阵和向量的方法有很多,例1中使用的是ones这个函数,生成全1元素的函数,还有zeros函数,生成全0元素的函数,rand函数,生成随机元素的函数。

        例2,采用rand函数生成一个向量和矩阵,然后寻找其中的最大值和最小值。

v=rand(1,10)
M=rand(5,5)
max(M)
min(v)

        对于常见的实验数据,通常采用向量来保存这些实验数据,实际中可以采用Scilab中的均值函数mean和标准方差函数stdev来分析这些实验数据。

        例3,简单分析向量储存的实验数据。

mean(v)
stdev(v)

(2)Scilab编程

        为了便于统一维护和实现数据分析的独立性,通常针对一批数据的处理书写一个Scilab处理脚本,这个脚本的书写就是Scilab里面的编程,它的若干语句类似于C语言,具备很强的可操作性,建议尽量采用这种方式来使用Scilab,减少后期的维护难度,提高可复用性。

        例4,列举一个典型的Scilab脚本的内容。

// Data
x = -1:0.1:1;
y = -1:0.1:1;
[X,Y] = meshgrid(x,y);
Z = X.^2 + Y.^2;
// Plot
scf(14);
clf(14);
xset("colormap",jetcolormap(4));
surf(X,Y,Z);
xlabel('X');ylabel('Y');zlabel('Z');

        上面列举的便是一个典型的Scilab编程脚本,里面包含了数据及其对数据的操作,每次只需要在Scilab的命令终端执行该脚本就可以得到相同的结果,并绘制出相应的图像,后续也可以修改该脚本,完成更复杂的任务。


(3)矩阵运算

        Scilab中基本的矩阵运算与Matlab类似,实际工程运用中可以大量使用算术操作或矩阵函数,简化数据分析和处理的困难。

2D网格

        例1,可以轻易实现对2D曲线的绘制,例如绘制图形。采用如下的程序文件实现对曲线的绘制:

clear
x = linspace(-5,5,51);
y = 1 ./(1+x.^2);
plot(x,y,'o-b');
        绘制出来的基本二维曲线为:

        例2,在例1的基础上增加如下语句,添加2D曲线的网格。

xgrid(5, 1, 7)

        在计算流体力学(CFD)和核反应堆计算中经常需要绘制2D情况下的流函数分布和中子通量分布,所以这里也简单通过实例介绍一下关于Sgrayplot函数的使用。

        例3,使用Sgrayplot绘制二维平面的流函数分布。已知二维平面均匀化的网格点上的流函数值,采用矩阵方式进行存放,这里将使用Scilab内置的Sgrayplot函数来进行绘制。

zm = min(FV); zM = max(FV)
xset("colormap",jetcolormap(64))
colorbar(zm,zM)
Sgrayplot(x, y, FV)
        相应的二维平面流函数分布如下图所示。

小结

        以上通过两个方面简单介绍了Scilab,这种引入方式是通过具体实例以及工作中可能遇到的内容来加深印象。实质上Scilab一开始设计便是贴近MATLAB,所以其脚本编程或者图形界面都是模仿的MATLAB。博主近来也写了一些关于MATPLOTLIB的技术文档,两者并不冲突。MATPLOTLIB采用脚本语言进行数据可视化操作,注重的是对数据的高效存储和可视化。Scilab更加强调的是对数据的操作和处理,可视化仅仅是其一方面,很多时候开发者在使用Scilab的时候仅仅需要利用它对各类数据进行数值分析和处理,或者利用第三方功能包来完成某个特定领域的仿真计算。
        综上所述,可以使用Scilab对你的大量数据进行分析和处理。近年来流行起来的R语言及其工具,更多面向数理统计方面,也不失为工程师或科研工作者的技术手段之一。但很多情况下Scilab涵盖了这些功能,目前博主的数据处理工作,依赖于Scilab和MATPLOTLIB就足够了。

推荐材料

[1]    Campbell S L, Chancelier J P, Nikoukhah R. Modeling and Simulation in SCILAB[M].Springer New York, 2006.

[2]    Van Zutven P W M. Scilab as an alternative for Matlab[J]. 2006.

[3]    Baudin M. Floating point numbers in Scilab[J]. 2011.


  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值