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.
Commenti in SCILAB iniziano con //
Commenti in Matlab iniziano con %
Le variabili predefinite, solitamente hanno il prefisso % in Scilab (%i, %inf, ...). Sono protete dalla scrittura.
Le stringhe sono considerate come una matrice stringa da 1 per 1 in
SCILAB. Ciascun ingresso di una matrice stringa ha la propria lunghezza.
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 e matrici polinomiali sono definiti dalla funzione poly in SCILAB (variabili internamente compilate). Sono considerate come vetori di coefficienti in Matlab.
[ ]+1 ritorna 1 in SCILAB e [ ] in Matlab.
A parte i semplici comandi plot and mesh (plot3d), Scilab e Matlab non sono compatibili.
Scicos (Scilab) e Simulink (Matlab) non sono compatibili.
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 |