Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Português - 日本語

Please note that the recommended version of Scilab is 6.0.0. This page might be outdated.
See the recommended documentation of this function

Aide Scilab >> Aide à la conversion Matlab vers Scilab > mfile2sci

mfile2sci

Fonction de conversion de M-file Matlab vers Scilab

Séquence d'appel

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

Paramètres

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

Flag booléen, si il vaut %T mfile2sci considère que les fonctions de calcul numériques ont été utilisées uniquement avec des données numériques (Aucune fonction de surcharge Scilab est requise). Valeur par défaut : %T

verbose-mode

mode d'affichage des information de conversion

0

aucune information donnée

1

les ionformations sont écrites comme commentaires du fichier Scilab

2

les ionformations sont écrites comme commentaires du fichier Scilab et dans le fichier log

3

les ionformations 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

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.

Exemples

// Création d'un fichier .m simple
rot90m = ["function B = rot90(A,k)"
    "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")

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

// Exécution du code
m=rand(4,2);
rot90(m,1)

Voir aussi

  • translatepaths — convertit un ensemble de répertoires contenant des M-files vers Scilab

Auteurs

  • V. Couvert
  • S. Steer

Comments

Author : Adrien Granger posted the 08/03/2013 11:20
la fonction mfile2sci bloque sur une instruction cell2mat et refuse de convertir.. or pourtant la fonction cell2mat est identique entre matlab et scilab, je suppose qu'en mettant l'instruction bloquante en commentaire et en la réactivant après cela fonctionne mais peut être que quelque chose m'a échappé, étant particulièrement novice sur ces questions.
Cdt
Reply to this comment
Please login to comment this page


Add a comment:
Please login to comment this page.

<< matfile2sci Aide à la conversion Matlab vers Scilab sci_files >>

Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Wed Oct 05 12:11:04 CEST 2011