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

Discussion :

Conversion de code MATLAB en Qt

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2012
    Messages : 6
    Points : 0
    Points
    0
    Par défaut Conversion de code MATLAB en Qt
    Bonjour à tous je suis nouvelle et ne maitrise pas vraiment Qt, je souhaiterai savoir si il est possible de convertir un code écrit sous Matlab vers Qt . Merci

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 669
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 669
    Points : 188 655
    Points
    188 655
    Par défaut


    Si tu cherches un compilateur qui va produire un joli code utilisant Qt, non. Par contre, tu as des compilateurs vers du C++ (regarde du côté de MATLAB Compiler) ; avec le code généré, il doit être possible d'interfacer une GUI, ce que tu souhaites probablement. Si tu le fais à la main, c'est évidemment à 300 % faisable.

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2012
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Merci dourouc05 donc en gros il faut que je réécrive tout le code Matlab sous Qt? le problème c'est que je ne sais pas comment faire

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 669
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 669
    Points : 188 655
    Points
    188 655
    Par défaut
    Ce que tu dis n'a pas grand sens. Tu peux réécrire ton code MATLAB en C++ puis l'utiliser avec Qt, ce pour quoi des outils peuvent t'aider.

    Si tu n'as pas le compilateur, alors il faudra tout réécrire : tu pars d'une fonction, tu la codes en C++, tu vérifies que ça fonctionne (avec l'écriture de tests, si le cœur t'en dit : QtTest), puis tu pars sur une autre fonction. Tente de d'abord t'occuper de fonctions qui n'ont pas de dépendance, c'est beaucoup plus simple de détecter les erreurs (tu ne dois pas attendre d'avoir tout porté avant de remarquer qu'il y a un truc qui foire). Si tu utilises des fonctions de MATLAB (genre ode45), il faudra les réimplémenter toi-même ou utiliser une bibliothèque qui le fait (NT2, par exemple).

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2012
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    D'accord je vais essayer de faire ce que tu me proposes et je te dirai ce que ça donne

  6. #6
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2012
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Bonjour dourouc05, j'ai essayé de codé en c++ la fonction Matlab et je ne comprend pas les erreurs.
    Je t'explique, dans le cadre d'un projet je dois retranscrire un code Matlab ( que je n'ai pas codé et que je ne comprend pas) sous Qt.
    Je n'ai pas de Matlab compiler, j'ai donc comme tu me l'avais recommandé, codé en c++. Le problème c'est que je ne comprend pas mes erreurs, et pourtant je sais que c'est un truc tout simple. Si tu peux m'aider stp voici les codes:

    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
    function J=chirpfunction6(n,m,z,lambda)
    %chirpfunction:fonction à variation linéaire de fréquence
    %[n,m]:taille de l'image de départ 
    %z:scalaire,distance à l'image
    %lambda:scalaire,longueur d'onde
     
    taillen=n;
    taillem=m;
    pas=1e-5;%taille d'un pixel
     
     
    for xi=1:n;
        for eta=1:m;
    IIz(xi,eta)=exp(i*pi*(((xi-taillen/2)*pas)^2+((eta-taillem/2)*pas)^2)/(lambda*z));
        end 
    end
    J(:,:)=IIz(:,:);
    end
    ce que j'ai fait en c++:

    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
    #include <iostream>
    #include <math.h>
    using namespace std;
     
     
     
     
     
    double ** chirpfonction(void){
     
     
    	double z;
    	double lambda;
     
    	int pi=3,14;
    	double pas=1e-5;    //taille d'un pixel
     
     
    	int tailleLig;
    	int tailleCol;
    	double **tab=new double*[tailleLig];
    	for (int i=0; i<tailleLig; i++)
    		tab[i]=new double [tailleCol];
     
     
      for( int i=0 ; i < tailleLig ; i++ )
        for( int j=0 ; j < tailleCol ; j++)
          tab[i][j]=exp(i*pi*(((i-tailleLig/2)*pas)^2+((j-tailleCol/2)*pas)^2)/(lambda*z));
    int i, j;
     
     
    for (int i=0; i<tailleLig; i++)
    delete tab[i];
    delete tab;
     
      return  tab[i][j] ;
    }
     
    int main(){
     
     
    }
    En fait ça c'est une fonction en fonction de ce que tu vas modifier je pourrai l'appliquer aux autres fonction. Merci

  7. #7
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 669
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 669
    Points : 188 655
    Points
    188 655
    Par défaut
    Première étape : indenter le code.
    Deuxième étape : réfléchir un peu. Un problème m'est vite apparu : tu supprimes tab... puis tu veux y accéder ! Vu le code MATLAB, autant retourner le tableau ainsi créé.

    En C++, tu n'incluras pas les en-têtes C (ce sera plus <cmath> que <math.h>, à moins d'avoir une bibliothèque standard des années 1990). Tu n'as pas non plus d'opérateur d'exposant (tu calcules un XOR), il faut utiliser pow (toujours dans cmath).

    Il pourrait rester des erreurs, mais je n'ai pas mis ton code dans un compilateur (n'oublie pas de copier-coller les messages d'erreur, sinon c'est chercher une aiguille dans une meule de foin..).

  8. #8
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2012
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    J'ai fait ce que tu m'as dit et pour l'instant je n'ai plus d'erreurs merci encore

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Quelques remarques sur le code MATLAB :
    • Pense à pré-allouer la mémoire de la variable IIz.
    • Cette ligne J(:,:)=IIz(:,:); peut se simplifier en J = IIz. Mais cette copie est inutile : tu peux directement retourner IIz.

    @dourou05 : le MATLAB Compiler sert à créer un exécutable du code MATLAB. C'est la toolbox MATLAB Coder (versions 2011a et +) qui permet cela.

    Pour ce qui est du code C++, outre les remarques déjà faites, je rajouterais la ligne int pi=3,14; : le séparateur décimal est le point, et il serait plus judicieux de le déclarer de type double ainsi que de rajouter quelques décimales.

Discussions similaires

  1. Conversion d'un code MATLAB en C
    Par jmour dans le forum Débuter
    Réponses: 5
    Dernier message: 04/02/2012, 01h05
  2. Conversion petit code Python vers MATLAB
    Par recherche888 dans le forum MATLAB
    Réponses: 13
    Dernier message: 30/11/2011, 10h34
  3. [Débutant] Conversion code MATLAB en code Python 2.6
    Par frisou65 dans le forum MATLAB
    Réponses: 1
    Dernier message: 28/09/2011, 19h52
  4. Conversion d'un code Matlab .m en code Cpp
    Par MDiabolo dans le forum C++
    Réponses: 5
    Dernier message: 10/03/2010, 13h04
  5. conversion de code vers MATLAB
    Par respobds dans le forum MATLAB
    Réponses: 0
    Dernier message: 14/05/2009, 08h27

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