Fonction Scilab

mfile2sci - Fonction de conversion de M-file Matlab vers Scilab

Calling Sequence

mfile2sci(M-file-path [,result-path [,Recmode [,only-double [,verbose-mode [,prettyprint]]]]])

Parameters

Description

M2SCI (et en particulier mfile2sci) est un ensemble d'outils de conversion de M-file vers Scilab. Il essaie à chaque fois que c'est possible de remplacer l'appel à une fonction Matlab par la primitive ou la fonction Scilab équivalente.

Pour convertir un M-file, entrer l'instruction Scilab : mfile2sci(fichier)

où fichier est une chaîne de caractère qui donne le chemin du M-file. mfile2sci va générer trois fichiers dans le même répertoire :

<function-name>.sci : l'équivalent Scilab pour le M-file
<function-name>.cat : le fichier d'aide Scilab associé à la fonction
sci_<function-name>.sci : la fonction Scilab requise pour convertir les appels à ce M-file dans d'autres M-files. Cette fonction peut être améliorée "à la main". Cette fonction est utile uniquement pour la conversion, pas pour utiliser la fonction convertie.

Des fonctions comme eye, ones, size, sum,... se comportent différemment selon la dimension de leurs arguments. Quand mfile2sci ne peut pas inférer les dimensions, il remplace ces fonctions par un appel à une fonction d'émulation nommée mtlb_<function_name>. Pour une meilleure éfficacité, ces fonctions peuvent être remplacées par les instructions Scilab équivalentes. Pour avoir des informations sur le remplacement, entrer : help mtlb_<function_name> dans la fenêtre de commande Scilab.

D'autres fonctions comme plot, n'ont pas d'équivalent direct en Scilab. Elles sont aussi remplacées par des fonctions d'émulation nommées : mtlb_<function_name>.

Quand la conversion peut être incorrecte ou améliorée, mfile2sci ajoute des commentaires qui commencent par "//!" (suivant verbose-mode).

Un appel à mfile2sci() sans rhs lance une interface graphique pour aider à la sélection d'un fichier/répertoire et des options.

Examples


// Création d'une fichier .m simple
write(TMPDIR+'/rot90.m',['function B = rot90(A,k)'
 '[m,n] = size(A);'
 'if nargin == 1'
 '    k = 1;'
 'else'
 '    k = rem(k,4);'
 '    if k < 0'
 '        k = k + 4;'
 '    end'
 'end'
 'if k == 1'
 '    A = A.'';'
 '    B = A(n:-1:1,:);'
 'elseif k == 2'
 '    B = A(m:-1:1,n:-1:1);'
 'elseif k == 3'
 '    B = A(m:-1:1,:);'
 '    B = B.'';'
 'else'
 '    B = A;'
 'end']);
// Conversion en Scilab
mfile2sci(TMPDIR+'/rot90.m',TMPDIR)
// Affichage du code
write(%io(2),read(TMPDIR+'/rot90.sci',-1,1,'(a)'))
// get it into scilab
getf(TMPDIR+'/rot90.sci')
// Exécution du code
m=rand(4,2);rot90(m,1)
 
  

See Also

translatepaths ,  

Authors

V. Couvert
S. Steer