0% found this document useful (0 votes)
260 views4 pages

Scilab vs MATLAB: Key Differences

The key differences between Scilab and MATLAB summarized in 3 sentences are: 1) Functions in Scilab are defined as variables rather than m-files and are not automatically loaded, requiring the use of getf to execute them. 2) Comments begin with // in Scilab and % in MATLAB, and predefined variables have a % prefix in Scilab while MATLAB uses 0 and 1 for Boolean values. 3) While most built-in functions are identical, some have different syntax between the programs like all and any called as and and or in Scilab respectively.

Uploaded by

Max
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
260 views4 pages

Scilab vs MATLAB: Key Differences

The key differences between Scilab and MATLAB summarized in 3 sentences are: 1) Functions in Scilab are defined as variables rather than m-files and are not automatically loaded, requiring the use of getf to execute them. 2) Comments begin with // in Scilab and % in MATLAB, and predefined variables have a % prefix in Scilab while MATLAB uses 0 and 1 for Boolean values. 3) While most built-in functions are identical, some have different syntax between the programs like all and any called as and and or in Scilab respectively.

Uploaded by

Max
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

What are the main differences between Scilab and MATLAB?

Functions
Functions in Scilab are NOT Matlab m-files but variables. One or several functions can be defined in a single
file (say [Link]). The name of of the file is not necessarily related to the the name of the functions. The
name of the function(s) is given by

function [y]=fct1(x)
...
function [y]=fct2(x)
...

The function(s) are not automatically loaded into Scilab. Usually you have to execute the command
getf("[Link]") before using it.

Functions can also be defined on-line (or inside functions) by the command deff.

To execute a script file you must use exec("filename") in Scilab and in Matlab you just need to type the
name of the file.

Comment lines

Scilab comments begins with: //

Matlab comments begins with: %

Variables
Predefined variables usually have the % prefix in Scilab (%i, %inf, ...). They are write protected.

Strings

Strings are considered as 1 by 1 matrices of strings in Scilab. Each entry of a string matrix has its own
length.

Boolean variables

Boolean variables are %T, %F in Scilab and 0, 1 in Matlab. Indexing with boolean variables may not produce
same result. Example x=[1,2];x([1,1]) [which is NOT x([%T,%T])] returns [1,1] in Scilab and [1,2] in
Matlab. Also if x is a matrix x(1:n,1)=[] or x(:)=[] is not valid in Matlab.

Polynomials
Polynomials and polynomial matrices are defined by the function poly in Scilab (built-in variables). They are
considered as vectors of coefficients in Matlab.

Empty matrices
[ ]+1 returns 1 in Scilab and [ ] in Matlab.

Plotting

Except for the simple plot and mesh (plot3d) functions, Scilab and Matlab are not compatible.

Scicos
Scicos (Scilab) and Simulink (Matlab) are not compatible.

A dictionary

Most built in functions are identical in Matlab and Scilab. Some of them have a slightly different syntax.
Here is a brief, partial list of commands with significant different syntax.

Matlab Scilab "equivalent"

all and

any or

balance balanc

clock unix('date')

computer unix_g('machine')

cputime timer

delete unix('rm file')

dir unix_g('ls')

echo mode

eig spec or bdiag

eval evstr

exist exists + type

fclose file('close')

feof
ferror

feval evstr and strcat

filter rtitr

finite (x < %inf)

fopen file('open')

fread read

fseek file

ftell

fwrite writeb

global

home

isglobal

isinf(a) a == %inf

isnan(a) a ~= a

isstr(a) type(a) == 10

keyboard pause + resume

lasterr

lookfor apropos

more lines

pack stacksize

pause halt

qz gspec+gschur

randn rand

rem modulo

setstr code2str

strcmp(a,b) a == b

uicontrol

uimenu getvalue

unix unix_g

version

which whereis
nargin [nargout,nargin]=argn(0)

nargout

You might also like