由于软件本身的稳定性有时间规律性,加之人们对于某个事物的接受需要一个过程,因此,一项软件或者技术可能出现较早,但成熟应用或者受到重视往往需要经过较长时间。
Scilab是一款较为知名的开源软件,从易用性和易安装性等方面考虑,可以作为工程师或科研工作者的一个重要手段,替换复杂的MATLAB。
MATLAB主要是基于数值式计算,MAPLE主要是基于符号式计算,SCILAB 则是由法国国家信息、自动化研究院(INRIA)开发的“开放源码”软件。SCILAB 一词源于英文“Scientific Laboratory”(科学实验室)词头的合并)。与MATLAB类似,SCILAB也是一种科学工程计算软件,可以很方便地实现各种矩阵运算与图形显示,能应用于科学计算、数学建模、信号处理、决策优化、线性/非线性控制等各个方面。它还提供可以满足不同工程与科学需要的工具箱,例如SCICOS,信号处理工具箱,图与网络工具箱等。
由于SCILAB的语法与MATLAB非常接近,熟悉MATLAB编程的人很快就会掌握SCILAB的使用。有意思的是,SCILAB提供的语言转换函数可以自动将用MATLAB语言编写的程序翻译为SCILAB语言。目前,SCILAB除了WINDOWS与NT版本外,还有多种UNIX或LINUX下的版本。
以下是两个方面对Scilab的简单介绍,其它复杂功能在此基础上非常容易读懂。
一.基本命令
Scilab主要针对向量和矩阵进行分析和运算,其基本命令主要围绕着与它们相关的内容展开。
简单数据处理
例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)
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的命令终端执行该脚本就可以得到相同的结果,并绘制出相应的图像,后续也可以修改该脚本,完成更复杂的任务。
矩阵运算
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一开始设计便是贴近MATLAB,所以其脚本编程或者图形界面都是模仿的MATLAB。MATPLOTLIB采用脚本语言进行数据可视化操作,注重的是对数据的高效存储和可视化。Scilab则更加强调对数据的操作和处理,可视化仅仅是其一方面。在使用Scilab的时候仅仅需要利用它对各类数据进行数值分析和处理,或者利用第三方功能包来完成某个特定领域的仿真计算。近年来流行R语言及其工具,更多面向数理统计方面,但很多情况下Scilab涵盖了这些功能,一般的数据处理依赖于Scilab和MATPLOTLIB就足够了。
版权声明:转载请附上原文链接:
https://blog.csdn.net/betterlord/article/details/51723725
联系客服