Quali sono le magiori differenze tra SCILAB e MATLAB?

Funzioni

Le funzioni in SCILAB non sono Matlab m-files ma variabili. Una o piu' funzioni possono essere definite in n singolo file (detto miofile.sci). Il nome del file non e' necessariamente relazionato al nome della funzione. Il nome della funzione (i) viene dato da:

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

La funzione(i) non vengono automaticamente caricate in SCILAB. Solitamente devi eseguire il comando getf("miofile.sci") prima di usarlo.

Le funzioni possono essere anche definite on-line (o funzioni interne) dal comando deff.

Per eseguire un file script devi usare exec("nomefile"), in Scilab e in Matlab devi semplicemente digitare l nome del file.

Linee di commento

Commenti in SCILAB iniziano con //

Commenti in Matlab iniziano con %

Variabili

Le variabili predefinite, solitamente hanno il prefisso % in Scilab (%i, %inf, ...). Sono protete dalla scrittura.

Stringhe

Le stringhe sono considerate come una matrice stringa da 1 per 1 in SCILAB. Ciascun ingresso di una matrice stringa ha la propria lunghezza.

Variabili booleane

 

Le variabili booleane sono %T, %F in Scilab e 0, 1 in Matlab. Indirizzamenti con le matrici booleane possono non produrre gli stessi risultati. Esempio x=[1,2];x([1,1]) [Che NON e' x([%T,%T])] ritorna [1,1] in SCILAB e [1,2] in Matlab. Inoltre, se x e' una matrice x(1:n,1)=[] o x(:)=[] non sono valide in Matlab.

 

Polinomi

Polinomi e matrici polinomiali sono definiti dalla funzione poly in SCILAB (variabili internamente compilate). Sono considerate come vetori di coefficienti in Matlab.


Matrici vuote

[ ]+1 ritorna 1 in SCILAB e [ ] in Matlab.

Plotting

A parte i semplici comandi plot and mesh (plot3d), Scilab e Matlab non sono compatibili.



Scicos

Scicos (Scilab) e Simulink (Matlab) non sono compatibili.



Dizionario

Molte delle funzioni internamente compilate sono identiche in Matlab e Scilab. Alcune di queste hanno una sintassi leggermente diversa. Di seguito una breve, parziale lista dei comandi con la significativa sintassi diversa

Matlab Scilab "equivalenti"

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