Scilab 语法与 Matlab 的主要区别

MatlabScilab:一个开源仿真工程师的迁移实践避坑指南 本文分享了从商业软件Matlab迁移至开源仿真工具Scilab的完整实践指南。针对工程师在成本、协作和轻量化方面的痛点,详细对比了语法差异、图形化工具XcosSimulink的核心操作,并介绍了ATOMS模块管理社区资源利用策略,为寻求开源替代方案的仿真工程师提供了一份实用的避坑参考。 阅读详情

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

Scilab安装入门 信号处理软件Scilab的安装入门 阅读详情

相关推荐

Scilab的初步介绍

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

betterlord的专栏 1万+

SCILAB中文手册

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

Scilab完全教程:开源数值计算软件的学习应用

Scilab是一款免费的开源软件,专为科学和技术计算而设计。它拥有一个易于使用的集成开发环境(IDE),以及强大的数学函数库。自1990年代初由法国国家信息自动化研究所(INRIA)开发以来,Scilab已经被广泛应用于教育、工业、研究和开发等领域。它支持多种工程应用,包括信号处理、统计分析、控制系统、优化问题、机器学习和深度学习等。在Scilab中,变量定义和赋值是进行计算和存储数据的基本操作。变量名可以包含字母、数字以及下划线,并且必须以字母或下划线开头。

weixin_33608403的博客 2827

Scilab学习心得

Scilab是一款类似于MALTAB的数学计算模型仿真软件,其开源优势可以使其成为MALTAB平替……

weixin_44169614的博客 6121

Scilab介绍,和Octave,Matlab比较

开源免费:由法国国家信息自动化研究所(INRIA)发起,现由 Scilab Enterprises(后被 ESI Group 收购)维护。语言兼容性:语法类似 MATLAB,但不完全兼容(需代码迁移)。内置工具箱Xcos:图形化动态系统建模(对标 Simulink)PDE、Statistics、Image Processing 等跨平台:支持 Windows、Linux、macOS。扩展性:支持 C/Fortran/Python 混合编程(通过或软件定位适合人群MATLAB

weixin_42849849的博客 1188

Scilab/Octave/Matlab科学计算软件横向评测

科学计算软件是工程计算和算法开发的核心工具,其核心原理基于矩阵运算和数值分析。在技术价值上,这类工具能显著提升计算效率,支持从基础研究到工业应用的完整工作流。Matlab作为商业标杆提供完善的工具箱生态,Octave以开源兼容性著称,Scilab则在系统建模领域独具特色。实际应用中,三者在控制系统设计、信号处理、优化计算等场景各有优势。本文通过安装配置、语法差异、计算性能等维度的深度对比,为科研人员和工程师提供选型参考,特别适合需要平衡功能、成本开源需求的技术决策。

weixin_30470643的博客 325

Scilab 5.3.3 开源科学计算系统仿真平台

科研团队或企业常有自己的专有算法,不想每次复制粘贴.sci文件?那就封装成私有模块!Scilab 提供标准打包机制,方便版本管理和团队协作。它不是一个“便宜版 Matlab”,而是一种不同的技术哲学:开放而非封闭模块化而非一体化社区共建而非厂商主导对于教育机构,它是低成本高质量的教学平台;对于中小企业,它是摆脱授权束缚的生产力工具;对于开发者,它是自由创新的技术沙盒。

weixin_35756690的博客 693

Octave:矩阵计算的新宠

为什么80%的码农都做不了架构师?>>> ...

weixin_34194087的博客 499

Scilab教程

Scilab基础教程,高中数学必修1,Scilab, 计算机数学,辅助计算软件。

axinyuei的博客 3470

scilab中文简介

 scilab中文简介2003年的时候就开始接触scilab,抽空翻译,自己写了一些学习体会,本来想写成一个完整的教程,可惜一直也没有完成,就先把未完成版放在这里吧,后面的章节,看情况吧.如果有人需要的话就写一写,没人用的话...(我这有word版和pdf版的,如果有人想要的话,去lasg论坛画图软件版去找找,我发在那里了.===========================

eloudy的专栏 1万+

scilabmatlab区别,matlab PK scilab

可能经常在这个论坛上的人很少有人听说过scilab对于初学者来说那么几乎不可能知道scilabscilabmatlab差不多,都是数值计算的软件但是scilab的功能比matlab弱很多,特别是在仿真这块但是scilab的优点却是matlab永远也比不了的,永远开源永远免费我用matlab很长时间了,用的什么样的matlab想必和大家的情况都一样吧大家都心知肚明,我就不点穿了但是scilab可以...

weixin_31222161的博客 2921

数值计算SCILIB基本语法

SCILIB是一款优秀的数值计算开源软件,Matlab不同的是,Matlab是商业软件,购买的时候按基本组建和工具箱买,就算是有财力的高校基本也就只购买一两套,毕竟一套几十W呢。 说SCILIB是数值计算软件没错,对于符号计算方面,SCILIB也可以通过安装工具箱来实现。 SCILIB下载地址:http://www.scilab.org/ 在人教版高中数学教材中,人教B版在必修一附录和

gsls200808的专栏 2169

scilab系列---概述

概述 Scilab是一种编程语言,它包含科学计算问题许多方面的大量数值算法相关联。从软件的角度来看,Scilab是一种解释型语言。这通常会加快开发过程,因为用户直接访问高级语言,库提供了丰富的功能集。Scilab语言旨在进行扩展,以便用户定义的数据类型可以通过可能过载的操作定义。Scilab用户可以开发自己的模块,以便解决特定的问题。Scilab语言可以动态编译和链接其他语言,如Fortran...

drsonxu的博客 6043

不推荐使用Scilab作为MATLAB的开源替代

安装了Scilab2024.1.0,随便试了几分钟就发现有严重影响使用的Bug(也可能是就是这样设计的,有一个所谓的“暂停模式”),复现步骤:主界面上点击“Scilab示例”按钮,打开“演示”窗口,点击左侧列表中的“多项式”,再点右侧的“介绍”,会弹窗提示“请在控制台中按下<enter>键来逐步执行”,“确认”,不过另一个开源替代Octave也不完美,我也是试了几分钟就发现烦人的问题,界面上总是出现一些奇怪的问号,而且用方向键上键选择历史命令时,会出现字母错乱的问题。把界面语言改成英文并不能解决此问题。

磁悬浮青蛙呱呱呱 1064

Scilab使用手册Scilab概述

Scilab使用手册Scilab概述    1. 科学计算软件SCILAB     SCILAB是以法国国立信息自动化研究院(INRIA)和法国桥梁学院(ENPC)的科学家为主共同开发的“开放源码”式科学计算软件。SCILAB一词源于英文 “Scientific Laboratory”(科学实验室)词头的合并。SCILAB已经得到各国研究工作者,大学教授以及教育界和工业界人士的普遍关注,并被免

eloudy的专栏 4592

scilabmatlab区别

<br /><br />到目前为止我发现的区别有:<br />1.在matlab中定义内置函数用inline例如:f=inline('tan(x)-x')而在scilab<br />中类似的功能使用deff来实现的deff('[y]=f(x)','y=tan(x)-x')<br />2. 在 matlab中注释是用%来完成的,而在 scilab中是用//来表示的<br />3.在scilab中的一些内置常量区别matlab,在它们的前方需加上%例如%pi<br />4在scilab 中使用自己定义的某一个

hunk的专栏 2487

Matlab平替!将Matlab工作区数据转移到Scilab

Matlab平替软件Scilab,本文将Matlab工作区的数据转移到Scilab工作区中

冷凝雨 1120
上一篇: symbian入门学习
下一篇: 比尔.盖茨给年轻人的忠告
aidebear
博客等级 码龄19年 6粉丝 5原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值