mfile2sci Fonction de conversion de fichiers.m Matlab en langage Scilab

## Séquence d'appel

                mfile2sci()     // interface interactive
                mfile2sci(M_file_path)
                mfile2sci(M_file_path, result_path)
                mfile2sci(M_file_path, result_path, Recmode)
                mfile2sci(M_file_path, result_path, Recmode, only_double)
                mfile2sci(M_file_path, result_path, Recmode, only_double, verbose_mode)
                mfile2sci(M_file_path, result_path, Recmode, only_double, verbose_mode, prettyprintoutput)

## Arguments

Pour utiliser la valeur par défaut de certains arguments d'entrée, juste omettre leur valeur, comme dans `mfile2sci(M_file_path, result_path, , , 0)`.

M_file_path

  une chaîne de caractères qui donne le chemin du M-file à traduire

result_path

  une chaîne de caractères qui donne le répertoire où le résultat sera écrit. La valeur par défault est le répertoire courant.

Recmode

  Flag booléen, utilisé par `translatepaths()` pour une conversion récursive. Doit être %F pour convertir un seul M-file. Valeur par défaut : %F

only_double

  Booléen : S'il vaut %T, mfile2sci() considère que les fonctions et les opérateurs usuellement numériques sont utilisées uniquement avec des données numériques. Cela exclut par exemple les instructions telles que `"ab" + "cd"` (qui sera alors conservée en l'état, au lieu d'être traduite en `asciimat("ab") + asciimat("cd")`).

  Valeur par défaut = %F : toutes les conversions possibles sont réalisées.

verbose_mode

  règle mode d'affichage des informations de conversion :

  0 : | aucune information affichée
  1 : | les informations sont écrites comme commentaires du fichier Scilab.
  2 : | les informations sont écrites comme commentaires du fichier Scilab et dans le fichier log.
  [3] : | Les informations sont écrites comme commentaires du fichier Scilab, dans le fichier log et affichées dans la fenêtre Scilab. (Valeur par défaut).

prettyprintoutput

  Flag booléen, si il vaut %T le code généré est réarrangé. Valeur par défaut : %F

## Description

Le module M2SCI -- et en particulier mfile2sci() -- est un ensemble d'outils de conversion de fichiers.m écrits en Matlab, 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 fichier.m, entrer l'instruction Scilab : `mfile2sci(fichier)`

où `fichier` est une chaîne de caractère désignant le chemin et le nom du fichier.m.

`mfile2sci(..)` va générer trois fichiers dans le même répertoire :

<function-name>.sci | l'équivalent du fichier.m en langage Scilab
<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).

`mfile2sci()` appelée sans argument d'entrée ouvre une interface interactive permettant de sélectionner un fichier/dossier à convertir, et de configurer et lancer la conversion :

    mfile2sci()

## Exemples

    // Création d'un fichier .m simple
    rot90m = ["function B = rot90(A,k)"
        ""
        "%m2scideclare k|1 1|Double|Real"
        "if ~isa(A, ''double'')"
        "    error(''rot90: Wrong type for input argument #1: Real or complex matrix expected.'');"
        "    return"
        "end"
        "[m,n] = size(A);"
        "if nargin == 1"
        "    k = 1;"
        "else"
        "    if ~isa(k, ''double'')"
        "        error(''rot90: Wrong type for input argument #2: A real expected.'');"
        "        return"
        "    end"
        "    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"];
    mputl(rot90m, TMPDIR + "/rot90.m")

    // Conversion en Scilab
    mfile2sci(TMPDIR + "/rot90.m",TMPDIR)

    // Affichage du code
    mgetl(TMPDIR + "/rot90.sci")

    // Compilation dans Scilab
    exec(TMPDIR+'/rot90.sci')

    // Appel et usage
    m=rand(4,2);
    rot90(m,1)

## Voir aussi

- translatepaths

## Historique

6.0.2 L'option `only_double` est désormais %F par défaut.