IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Migration de MATLAB vers C++


Sujet :

MATLAB

  1. #1
    En attente de confirmation mail
    Inscrit en
    Juin 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 31
    Points : 11
    Points
    11
    Par défaut Migration de MATLAB vers C++
    J'utilise la commande suivante :
    mcc -l <nom de programme matlab>
    Puis je créer des fonctions generées par Matlab pour créer un fichier C++ qui utilise les fonctions initialise, terminate et mlf (nom de programme Matlab); puis j'exécute le programme.
    J'ai fait la même chose avec des petits programmes Matlab et ça fonctionne très bien mais, avec des grands programmes qui font appel à des autres fonctions, ils me donnent des erreurs qui se trouvent dans le fichier attaché au premier message.
    J'ai des soucis pour la fonction mean aussi utilisée dans mon programme Matlab. Vous trouverez ci-joint un petit programme qui utilise la fonction mean et compilée avec Microsoft VS 2003 sans le debug.

    Merci
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    tu as essayé avec mcc ? n'oublie pas les pragma si tu utilises des mfun.

  3. #3
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Il affiche une erreur et arrête l'exécution ? Quelle erreur ?

  4. #4
    En attente de confirmation mail
    Inscrit en
    Juin 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par stiko
    oui j utilise le :
    mcc -l <nom de programme matlab>
    puis je cré des fonction generé par matlab pour créer un ficjier C++ qui utilise les foction :initialise et terminate et mlf(nom de programme Matlab).
    pui s j execute le programme.
    j ai fai la meme chpose avec des petit programme matlab et ca fonctionne tres bien mais avec des grand programme qui fait appel a des autre fonction il me donne des erreurs quis etrouve ds le fichier attache au premier message.
    j ai de souci pour la fonction mean aussi utilisé dans mon programe matlab.vous trouvez ci joint iun petit programme qui utilise mean et compiler pour etre utioliser avec Microsoft VS 2003 sans le debug.

    merci

  5. #5
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    essaye de mettre dans ton code matlab

  6. #6
    En attente de confirmation mail
    Inscrit en
    Juin 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    si je met :
    function mean,
    et j execute ca sous matlab il va m afficher une erreur car Mean est une fonction propre a Matlab.

  7. #7
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    mets exactement, dans ton code matlab avant de le compiler et dis moi si ça marche.

  8. #8
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Tu mets ça dans ton script, tel que, avec le % et le #.
    Et après, tu compiles.
    Edit: zut, grillé

  9. #9
    En attente de confirmation mail
    Inscrit en
    Juin 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    j ai ajouté ce ke vous m avez dit et le code sera:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    %#function mean
    function mea
    a=[5 4 5 6 2 5];
    mean(a);
    mais il me donne des erreurs en executant ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >> mean
    ??? Attempt to execute SCRIPT mean as a function.
     
    Error in ==> mea at 4
    mean(a);

  10. #10
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    chez moi ça marche nickel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    %#function mean
    function test
    in = [1,2,3,4,5,6,7,9,10];
    mean(in)
    ensuite je suis la documentation...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >> mcc -vW main -T link:exe test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    Compiler version: 4.4 (R2006a) 
    Depfun main loop, iteration 1 
    Processing C:\Program Files\MATLABR14\toolbox\matlab\mcc.enc 
    1 item(s) added. 
    Processing C:\Program Files\MATLABR14\toolbox\optim\mcc.enc 
    Processing C:\Program Files\MATLABR14\toolbox\database\mcc.enc 
    1 item(s) added. 
    Processing dependencies... 
    0 item(s) added. 
    Depfun main loop, iteration 2 
    Processing dependencies... 
    0 item(s) added. 
    Processing include files... 
    2 item(s) added. 
    Processing exclude list... 
    0 item(s) excluded by M-file compilabilty rules. 
    Processing directories installed with MCR... 
    671 item(s) excluded because they ship with the MCR. 
    The file mccExcludedFiles.log contains a list of functions excluded from the CTF archive. 
    2 item(s) added. 
    Generating MATLAB path for the compiled application... 
    Created 36 path items. 
    Depfun main loop converged in 2 iterations, total number of files = 69 
    Begin validation of MEX files: Thu Jun 15 16:16:52 2006 
    Validating 'C:\Program Files\MATLABR14\toolbox\compiler\deploy\readline.mexw32'. 
    No conflicting M-file found. 
    End validation of MEX files: Thu Jun 15 16:16:52 2006 
    Deleting 1 temporary MEX authorization files. 
    Removing: 'C:\DOCUME~1\zozo_t\LOCALS~1\Temp\mathworks_tmp_5778.auth'. 
    Parsing file "C:\xwork\tests\ploum\test.m" 
    	(Referenced from: "Compiler Command Line"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\compiler\deploy\matlabrc.m" 
    	(Referenced from: "Compiler Command Line"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\compiler\dirname.m" 
    	(Referenced from: "Compiler Command Line"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\compiler\deploy\deployprint.m" 
    	(Referenced from: "Compiler Command Line"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\compiler\deploy\printdlg.m" 
    	(Referenced from: "Compiler Command Line"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\matlab\datafun\mean.m" 
    	(Referenced from: "C:\xwork\tests\ploum\test.m"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\compiler\deploy\hgrc.m" 
    	(Referenced from: "C:\Program Files\MATLABR14\toolbox\compiler\deploy\matlabrc.m"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\matlab\strfun\str2double.m" 
    	(Referenced from: "C:\Program Files\MATLABR14\toolbox\compiler\deploy\matlabrc.m"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\matlab\general\usejava.m" 
    	(Referenced from: "C:\Program Files\MATLABR14\toolbox\compiler\deploy\matlabrc.m"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\matlab\iofun\fileparts.m" 
    	(Referenced from: "C:\Program Files\MATLABR14\toolbox\compiler\dirname.m"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\matlab\timefun\datestr.m" 
    	(Referenced from: "C:\Program Files\MATLABR14\toolbox\compiler\deploy\deployprint.m"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\matlab\graphics\getappdata.m" 
    	(Referenced from: "C:\Program Files\MATLABR14\toolbox\compiler\deploy\deployprint.m"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\matlab\datatypes\isfield.m" 
    	(Referenced from: "C:\Program Files\MATLABR14\toolbox\compiler\deploy\deployprint.m"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\matlab\general\ispc.m" 
    	(Referenced from: "C:\Program Files\MATLABR14\toolbox\compiler\deploy\deployprint.m"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\matlab\uitools\msgbox.m" 
    	(Referenced from: "C:\Program Files\MATLABR14\toolbox\compiler\deploy\deployprint.m"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\matlab\timefun\now.m" 
    	(Referenced from: "C:\Program Files\MATLABR14\toolbox\compiler\deploy\deployprint.m"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\matlab\datatypes\num2cell.m" 
    	(Referenced from: "C:\Program Files\MATLABR14\toolbox\compiler\deploy\deployprint.m"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\matlab\strfun\num2str.m" 
    	(Referenced from: "C:\Program Files\MATLABR14\toolbox\compiler\deploy\deployprint.m"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\matlab\graphics\orient.m" 
    	(Referenced from: "C:\Program Files\MATLABR14\toolbox\compiler\deploy\deployprint.m"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\matlab\graphics\print.m" 
    	(Referenced from: "C:\Program Files\MATLABR14\toolbox\compiler\deploy\deployprint.m"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\matlab\strfun\str2num.m" 
    	(Referenced from: "C:\Program Files\MATLABR14\toolbox\compiler\deploy\deployprint.m"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\matlab\iofun\tempname.m" 
    	(Referenced from: "C:\Program Files\MATLABR14\toolbox\compiler\deploy\deployprint.m"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\matlab\general\path.m" 
    	(Referenced from: "C:\Program Files\MATLABR14\toolbox\compiler\deploy\printdlg.m"). 
    Parsing file "C:\Program Files\MATLABR14\toolbox\matlab\general\rmpath.m" 
    	(Referenced from: "C:\Program Files\MATLABR14\toolbox\compiler\deploy\printdlg.m"). 
    Generating file "test_main.c". 
    Generating file "test_mcc_component_data.c". 
    Executing command: mbuild -O -v -output "test" "test_main.c" "test_mcc_component_data.c" -link exe 
     This is mbuild Copyright 1984-2005 The MathWorks, Inc. 
     
    -> Default options filename found in C:\Documents and Settings\zozo_t\Application Data\MathWorks\MATLAB\R2006a 
    ---------------------------------------------------------------- 
    ->    Options file           = C:\Documents and Settings\zozo_t\Application Data\MathWorks\MATLAB\R2006a\compopts.bat 
    ->    COMPILER               = lcc 
    ->    Compiler flags: 
             COMPFLAGS           = -c -Zp8 -I"C:\Program Files\MATLABR14\sys\lcc\include" -noregistrylookup 
             OPTIMFLAGS          = -DNDEBUG 
             DEBUGFLAGS          = -g4 
             arguments           =  
             Name switch         = -Fo 
    ->    Pre-linking commands   =  
    ->    LINKER                 = lcclnk 
    ->    Link directives: 
             LINKFLAGS           = -tmpdir "." -L"C:\Program Files\MATLABR14\sys\lcc\lib" -libpath "C:\Program Files\MATLABR14\extern\lib\win32\lcc" 
             LINKFLAGSPOST       = mclmcrrt.lib 
             Name directive      = -o "test.exe" 
             File link directive =  
             Lib. link directive =  
             Rsp file indicator  = @ 
    ->    Resource Compiler      =  
    ->    Resource Linker        =  
    ---------------------------------------------------------------- 
     
     
    --> "lcc  -c -Zp8 -I"C:\Program Files\MATLABR14\sys\lcc\include" -noregistrylookup -FoC:\DOCUME~1\zozo_t\LOCALS~1\Temp\test_main.obj -I"C:\Program Files\MATLABR14"\extern\include  -DNDEBUG test_main.c" 
     
     
    --> "lcc  -c -Zp8 -I"C:\Program Files\MATLABR14\sys\lcc\include" -noregistrylookup -FoC:\DOCUME~1\zozo_t\LOCALS~1\Temp\test_mcc_component_data.obj -I"C:\Program Files\MATLABR14"\extern\include  -DNDEBUG test_mcc_component_data.c" 
     
        Contents of 7007_tmp.rsp: 
      C:\DOCUME~1\zozo_t\LOCALS~1\Temp\test_main.obj  C:\DOCUME~1\zozo_t\LOCALS~1\Temp\test_mcc_component_data.obj 
     
     
    --> "lcclnk -o "test.exe" -tmpdir "." -L"C:\Program Files\MATLABR14\sys\lcc\lib" -libpath "C:\Program Files\MATLABR14\extern\lib\win32\lcc"  @7007_tmp.rsp  mclmcrrt.lib" 
     
     
    --> "if exist C:\DOCUME~1\zozo_t\LOCALS~1\Temp_lib7007.def del C:\DOCUME~1\zozo_t\LOCALS~1\Temp_lib7007.def" 
     
     
    --> "if exist %LIB_NAME_stub.obj del %LIB_NAME_stub.obj"
    ensuite je teste sous la console...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    C:\>C:\xwork\tests\Thomas\test.exe
     
    ans =
     
        5.2222
    edit : 5.2222 parce que j'ai oublié le 8

  11. #11
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Citation Envoyé par stiko
    j ai ajouté ce ke vous m avez dit et le code sera:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    %#function mean
    function mea
    a=[5 4 5 6 2 5];
    mean(a);
     
    mais il me donne des erreurs en executant ca:
    >> mea
    ??? Attempt to execute SCRIPT mean as a function.
     
    Error in ==> mea at 4
    mean(a);
    1/
    2/
    3/ Tu as déjà utilisé matlab ?

    Tu souhaites compiler du code matlab vers du C++, tu vas donc avoir un code exécutable...
    Pas un script matlab, donc, tu ne l'exécute pas sous matlab, mais à part.

    Ca me parait tellement logique, que je me demande même si tu sais ce que tu essaies de faire
    Ce n'est pas méchant, je constate

  12. #12
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    surtout que ça fonction ne retourne rien et n'affiche rien...

  13. #13
    En attente de confirmation mail
    Inscrit en
    Juin 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    oui,
    je sais qu'il faut pas executer le code generé par matlab sous matlab mais il faut tout d'abord que le programme matlab fonctionne sous matlab.
    car meme avec le code que vous m'avez donné, il m'affiche des errur sous mlatlab.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    >> test
    ??? Attempt to execute SCRIPT mean as a function.
     
    Error in ==> test at 4
    mean(in)

  14. #14
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    je crois que j'ai pigé...

    tape ça pour voir : edit : et après tu réessayes...

  15. #15
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    attends une seconde, j'ai peur d'un coup...

    tu as bien mis la fonction dans un fichier <.m> de même nom ?
    Ce fichier est bien dans le path ?

  16. #16
    En attente de confirmation mail
    Inscrit en
    Juin 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    oui c est sur mais toujiours il m'affiche la meme chose.
    en effet le programme dont lequel j utlise mean.je doit l'utiliser apres sa conversion en C++ avec des autre programme C++ aussi c' est pourcela j'ai pas besoin de créer un fichier .exe pour ce programme seul.donc pourcle je fai seulement la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mcc -l  <nom de programe.m>
    et puis je crée deux nouveaux fichiers l'un .h et l'autre .cpp,
    j'ai fait une petite exemple pour la somme de 2 nombres que vous pouvez trouvez en pièce jointe.
    Fichiers attachés Fichiers attachés

  17. #17
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    Matlab ne traduit pas tout le code en C/C++ : il crée une coquille en C/C++ autour qui appelle l'interprêteur Matlab (une sorte de machine virtuelle).

Discussions similaires

  1. Migration de Octave vers MATLAB
    Par momoha2000 dans le forum Octave
    Réponses: 2
    Dernier message: 23/09/2010, 15h59
  2. Problème migration script matlab vers c
    Par flo-1987 dans le forum C
    Réponses: 4
    Dernier message: 19/12/2008, 14h30
  3. [Forms]migration forms 6 vers forms 8
    Par anthonychery dans le forum Oracle
    Réponses: 7
    Dernier message: 17/11/2004, 17h54
  4. Demande de conseil pour migration de lignes vers colonnes
    Par ririd dans le forum Administration
    Réponses: 6
    Dernier message: 04/11/2004, 17h02
  5. [SYBASE] migration ASE12.0 vers ASE12.5
    Par sybase dans le forum Sybase
    Réponses: 1
    Dernier message: 25/10/2004, 15h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo