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 :

MATLAB et la POO [Débutant]


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Points : 8
    Points
    8
    Par défaut MATLAB et la POO
    Bonjour,

    Je suis en train de développer un programme en matlab qui devient de plus en plus complexe. Pour palier à la complexité du programme j'ai commencé à utiliser des structures, mais ca ne me satisfait pas entièrement.
    Je commence à me dire que je devrais reprogrammer ce code en orienté objet pour le rendre plus clair et faciliter les futurs ajouts de fonctionnalités.

    Alors je me demandais: est-ce que matlab est bien fait pour faire de la POO?
    Un de mes soucis (mais c'est à la limite secondaire) concerne la rapidité de matlab en POO?

    Voilà, je me dis que si matlab n'est pas si bon que ca pour la POO et étant donné que je n'utilise pas beacuoup de fonction mathématique propre à matlab (sauf certaines manipulations sur des vecteurs et des matrices complexes), je me dis qu'une autre possibilité serait de passer en C#...

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Citation Envoyé par Pierrej Voir le message
    je me dis qu'une autre possibilité serait de passer en C#...
    Je ne connais (presque) rien à la programmation orientée objet, donc je ne peux pas parler des performances de MATLAB à ce niveau, mais pourquoi ne pas plutôt choisir Python à la place de C# ?

    (A moins que tu ne maitrise déjà le C# bien entendu)
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    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 618
    Points : 188 585
    Points
    188 585
    Par défaut


    Citation Envoyé par Pierrej Voir le message
    Alors je me demandais: est-ce que matlab est bien fait pour faire de la POO?
    Un de mes soucis (mais c'est à la limite secondaire) concerne la rapidité de matlab en POO?
    Tout dépend ce que tu appelles « bien fait » : MATLAB peut faire de la POO, on peut en exploiter beaucoup de ficelles (plus qu'en Python, par exemple, avec des attributs/méthodes protégés, mais avec certaines lacunes identiques, comme le manque de constructeur par copie). Le seul reproche que je lui fais à ce niveau, c'est qu'il est très verbeux : il faut définir un bloc de méthodes statiques, un autre de méthodes protégées, etc. Ça peut devenir très long à écrire.

    Niveau perfs, à ce que j'en ai constaté, les pertes ne sont pas énormes par rapport à un nombre de fonctions similaires en procédural pur. Si tu fais tout en C++ puis que tu importes dans MATLAB, évidemment, ça sera beaucoup plus rapide. La plus grande différence est qu'un code OO pourra être plus lisible, plus clair, le reste n'est pas vraiment influencé. Maintenant, je n'ai pas fait d'étude comparative, mais, si tu passes ton temps à créer des objets, là, tu perdras plus que si tu n'en instancies que ce qu'il faut (au lieu de créer des objets temporaires, plutôt regarder si ce n'est pas possible avec des méthodes statiques, par exemple).

    Maintenant, on peut trouver des topics sur le Web disant que la POO avec MATLAB, c'est extrêmement lent : http://stackoverflow.com/questions/1...omething-wrong. J'ai aussi vu sur les pages de présentation de MATLAB 2011a qu'ils remettaient la POO à l'avant-scène, je ne sais pas s'il y a beaucoup qui a changé depuis mes tests (2010a).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Point de vue du C#, c'est que j'ai une petite expérience en C et en C++.
    Je vais regarder pour les avantages/inconvénients par rapport au python (la non déclaration des variables, comme en matlab, me semble un peu dangereuse?).


    Les attributs et méthodes protégées est en effet quelque chose qui peu être intéressant.
    Désolé pour le terme "bien fait", n'étant pas un expert, il a des paramètres dont je n'ai pas connaissance.

    Ce qui me fait un peu peur pour l'OO de matlab c'est qu'il me semble qu'il y ait peu de doc.

    C'est évidement difficile de dire ce qui sera le plus avantageux à long terme (je devrai faire évoluer le programme pendant encore quelques années si tout va bien).

    Merci pour vos réponses.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    salut, moi je fais du C++ et c'est un langage orienté objet que je trouve pas mal du tout pour plusieurs raisons:

    => les commandes du C sont encore valables et il y en a beaucoup d'autres en plus
    => il y a des conteneurs standard type "vector" qui sont tres pratiques
    => l'exécution du programme est tres rapide
    => il y a une grosse communauté qui bosse en C++ et tu arrive à trouver de l'aide facilement
    => et surtout: tu peux utiliser le framwork "Qt" qui permet de faire des interfaces graphiques assez facilement et avec un super rendu!

    ps: je ne connais pas le C#, qu'es ce ? quelles sont les différences pas rapport au C++ ?

  6. #6
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    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 618
    Points : 188 585
    Points
    188 585
    Par défaut
    Citation Envoyé par Pierrej Voir le message
    Je vais regarder pour les avantages/inconvénients par rapport au python (la non déclaration des variables, comme en matlab, me semble un peu dangereuse?).
    C'est encore plus choquant quand tu vois que tu peux déclarer un attribut dynamiquement pour un objet. À une ligne, rien ne peut prédire que l'attribut existe ; à la suivante, il existe mais il faut le savoir pour y accéder. Par contre, il a une plus belle syntaxe que le C++ sur certains points (vive les compréhensions de listes) - ce n'est pas du fanatisme, c'est presque objectif.

    Citation Envoyé par Pierrej Voir le message
    Ce qui me fait un peu peur pour l'OO de matlab c'est qu'il me semble qu'il y ait peu de doc.
    Je te répondrai plutôt : que mettrais-tu d'autre comme doc ? Elle est déjà suffisamment extensive comme ça, à mon goùut (j'ai réussi à m'y mettre sans trop d'efforts).

    Citation Envoyé par 21did21 Voir le message
    salut, moi je fais du C++ et c'est un langage orienté objet que je trouve pas mal du tout pour plusieurs raisons:

    => les commandes du C sont encore valables et il y en a beaucoup d'autres en plus
    => il y a des conteneurs standard type "vector" qui sont tres pratiques
    => l'exécution du programme est tres rapide
    => il y a une grosse communauté qui bosse en C++ et tu arrive à trouver de l'aide facilement
    => et surtout: tu peux utiliser le framwork "Qt" qui permet de faire des interfaces graphiques assez facilement et avec un super rendu!

    ps: je ne connais pas le C#, qu'es ce ? quelles sont les différences pas rapport au C++ ?
    En gros, C# ~= Java.

    Ensuite, pour tes avantages, je marquerais plutôt le premier comme un désavantage : tu peux toujours faire des malloc, des free, des horreurs avec des « chaînes » de caractères, rien ne t'oblige à ne pas te faire profondément du mal, soit utiliser la STL.

    Pour Qt, par contre, !
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par dourouc05 Voir le message
    C'est encore plus choquant quand tu vois que tu peux déclarer un attribut dynamiquement pour un objet. À une ligne, rien ne peut prédire que l'attribut existe ; à la suivante, il existe mais il faut le savoir pour y accéder.
    Effectivement ca me semble scabreux.


    Citation Envoyé par dourouc05 Voir le message
    Par contre, il a une plus belle syntaxe que le C++ sur certains points (vive les compréhensions de listes) - ce n'est pas du fanatisme, c'est presque objectif.
    C'est-à-dire?

    Citation Envoyé par dourouc05 Voir le message
    Je te répondrai plutôt : que mettrais-tu d'autre comme doc ? Elle est déjà suffisamment extensive comme ça, à mon goùut (j'ai réussi à m'y mettre sans trop d'efforts).
    Oui c'est vrai, c'est plutôt au niveau de mise à disposition d'exemples (le malab central file exchange est pas top je trouve)

  8. #8
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    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 618
    Points : 188 585
    Points
    188 585
    Par défaut
    Citation Envoyé par Pierrej Voir le message
    C'est-à-dire?
    Exemple : comment faire un tableau des carrés de nombres ?

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    [x**2 for x in range(10)]

    En faire la somme ?

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    sum([x**2 for x in range(10)])

    Tu peux même mettre des conditions :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    sum([x**2 for x in range(100) if x != 42])

    Et ça peut encore se compliquer. En combien de lignes ferais-tu ça en C++ ? (En une ligne si tu maîtrises les for, en une ligne si tu mets tout dans une fonction ; sinon, ça commence à faire long pour très peu...).

    Citation Envoyé par Pierrej Voir le message
    Oui c'est vrai, c'est plutôt au niveau de mise à disposition d'exemples (le malab central file exchange est pas top je trouve)
    Tu n'as pas forcément besoin de beaucoup d'exemples dès que tu connais les principes de la POO, même si c'est plus rassurant. Tu as aussi quelques morceaux de code dans la FAQ : http://matlab.developpez.com/faq/?page=poo. Il est évidemment possible d'y ajouter de nouveaux éléments, il suffit de trouver quelqu'un qui en a les connaissances et le temps.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Salut!

    Finalement je m'y suis mis avec matlab (2010a).

    Comme tout mes objets dérivent de handle, je me rends compte que je manque d'un constructeur par copie. Est-ce que vous avez une astuce?

    Merci

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Yop, pour ceux que ca intéressent; j'ai trouvé la solution:

    http://www.mathworks.es/matlabcentra..._thread/257925

  11. #11
    Membre régulier
    Inscrit en
    Novembre 2009
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 94
    Points : 85
    Points
    85
    Par défaut
    perso,

    j'ai overloadé la fonction "deal" en créant une nouvelle instance de la classe à copier. Pour cela, le constructeur de la classe à copier s'accepte lui-même comme argument d'entrée.

    Sinon, en supprimant l'objet, héritant de la classe handle, après avoir copié ce même objet, la copie est un "handle" pointant vers rien du tout.

    cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] [POO] Erreur MATLAB "Improper index matrix reference"
    Par ghada97 dans le forum MATLAB
    Réponses: 26
    Dernier message: 18/09/2013, 14h42
  2. [Débutant] matlab et POO
    Par dorsaf2008 dans le forum Interfaces Graphiques
    Réponses: 0
    Dernier message: 09/05/2012, 22h26
  3. POO sous MATLAB 7
    Par tachmou dans le forum MATLAB
    Réponses: 5
    Dernier message: 13/02/2012, 11h35
  4. Matlab. Syntaxe POO
    Par bakaratoun dans le forum MATLAB
    Réponses: 0
    Dernier message: 03/11/2009, 12h14
  5. lier un cube à un objet (POO)
    Par Hypnos dans le forum OpenGL
    Réponses: 12
    Dernier message: 26/08/2003, 21h46

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