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 :

Passage du langage MATLAB à C ou Fortran [Débutant]


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    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
    Par défaut Passage du langage MATLAB à C ou Fortran
    Bonjour tous,

    Je me permets d'ecrire ce poste car j'espere que vous pourrez m'apporter diverses informations générales sur la programmation et sur plus particulierement le lien entre le langage matlab et le C ou fortran.

    Pendant plusieurs mois j'ai utilisé le langage matlab pour effectuer des programmes, à présent je vais devoir dans des travaux scolaires utiliser le C et/ou Fortran, je voudrais donc savoir plusieurs choses:

    1°) Il y a t il des changements fondammentaux entre la programmation sur matlab ou la programmation sur des langages plus classiques? si oui quels sont ils?

    2°) j'ai l'habitude d'utiliser des fonctions toutes pretes comme MAX, SORTROW, IMREAD et bien d'autres, en langage C ou fortran a t on acces a de telles fonctions ou doit on les reprogrammer à chaque fois?

    3°) J'ai entendu un peu parler de bibliotheques pour la programmation, où peut on en telecharger? existe t il des bibliotheques matlab qui permettent d'utiliser les fonctions matlab sous d'autres langages de programmation?

    Merci d'avance pour votre aide precieuse!

  2. #2
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    Il y a t il des changements fondammentaux entre la programmation sur matlab ou la programmation sur des langages plus classiques? si oui quels sont ils?
    Oui et non. La principale différence est que, dans Matlab, tu travailles sur des tableaux complets alors qu'en Fortran, c'est sur chaque terme d'un tableau. Ainsi, pour multiplier une matrice A par un vecteur B, tu tapes
    tandis qu'en Fortran, tu dois écrire explicitement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Do I=1,M
      X(I)=0.
      Do J=1,N
        X(I)=X(I)+A(I,J)*B(J)
      End Do
    End Do
    C'est certes un peu plus long à écrire, mais tu as plus de liberté (par exemple si la matrice A est triangulaire).

    j'ai l'habitude d'utiliser des fonctions toutes pretes comme MAX, SORTROW, IMREAD et bien d'autres, en langage C ou fortran a t on acces a de telles fonctions ou doit on les reprogrammer à chaque fois?
    Il y a quelques fonctions toutes faites, comme MAX, mais, les autres, tu devras les programmer.

    J'ai entendu un peu parler de bibliotheques pour la programmation, où peut on en telecharger? existe t il des bibliotheques matlab qui permettent d'utiliser les fonctions matlab sous d'autres langages de programmation?
    Il existe effectivement des masses de bibliothèques. Certaines sont payantes et d'autres gratuites. Pour le calcul numérique, je te recommande le site www.netlib.org.

    Si tu choisis le Fortran, nous aurons certainement l'occasion de nous retrouver sur le forum correspondant.
    Jean-Marc Blanc

  3. #3
    Membre éprouvé
    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
    Par défaut
    Bonjour tous et merci pour vos reponses,

    Citation Envoyé par FR119492 Voir le message
    tandis qu'en Fortran, tu dois écrire explicitement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Do I=1,M
      X(I)=0.
      Do J=1,N
        X(I)=X(I)+A(I,J)*B(J)
      End Do
    End Do
    Ah ok je vois, on utilise seulement la notation indicielle, pas tres grave...

    Citation Envoyé par FR119492 Voir le message
    Il y a quelques fonctions toutes faites, comme MAX, mais, les autres, tu devras les programmer.
    Par contre cela est genant car il y a des fonctions sur matlab qui a mon avis sont tres dure à programmer puis d'autre que je ne vois pas comment programmer (IMREAD)...

    Citation Envoyé par FR119492 Voir le message
    Il existe effectivement des masses de bibliothèques. Certaines sont payantes et d'autres gratuites. Pour le calcul numérique, je te recommande le site www.netlib.org.
    Merci beaucoup pour le lien, mais comment ne pas se perdre dans ces biblio? autrement dit il faudrait savoir leur contenu plus ou moins avant de les telecharger car les noms sont pas tres explicite.

    Citation Envoyé par FR119492 Voir le message
    Si tu choisis le Fortran, nous aurons certainement l'occasion de nous retrouver sur le forum correspondant.
    Jean-Marc Blanc
    oui je pense que je vais avoir besoin d'un peu d'aide ;-)

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Citation Envoyé par 21did21 Voir le message
    d'autre que je ne vois pas comment programmer (IMREAD)...
    Et comme on est gentil => OpenCV (par exemple)

  5. #5
    Membre éprouvé
    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
    Par défaut
    merci en tout cas pour toutes vos infos!!!

    je pense que l'on va bientot se revoir sur le forum de C ou fortran....


  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    MATLAB était à l'origine écrit en Fortran (par Cleve Moler).
    La première version commercialisée (en 1984) était ré-écrite en C.

    Fortran ou C sont des langages de bas niveau, à l'opposé de MATLAB qui est un langage de haut niveau. En plus de son langage propre, MATLAB utilise en interne C, C++, Fortran, Java ou encore Perl
    Citation Envoyé par Loren Shure
    You are correct that much of MATLAB is not written in Java. Primarily Java is used for the user interface, and occasionally some other tidbits, I think like using the serial port sometimes. The parser, interpreter, etc. — main guts, are in C and C++, linked with libraries that are sometimes Fortran for some of the math, though some of that is via vendor libraries and we might not know what language they are in — but most likely not Java.
    => http://blogs.mathworks.com/loren/200...#comment-16705

    De plus, MATLAB intègre des bibliothèques disponibles sur internet (LAPACK, FFTW, QHULL, UMFPACK, CGAL, ...). Voir le fichier acknowledgments.html dans le dossier d'installation de MATLAB.

    Pour ma part, les principales difficultés (sans parler des différences de syntaxe) quand on passe de MATLAB à C se situent surtout dans la gestion des types de variables, les allocations/désallocation de mémoire et les pointeurs pour les tableaux dynamiques. Viennent ensuite les problèmes de compilation et d'intégration de fonctions (bibliothèques) existantes... vaste programme

    Une des principales qualités de MATLAB (et des logiciels similaires) tient dans une prise en main très rapide pour de non-informaticiens. Le développement rapide d'algorithme était d'ailleurs le premier argument de vente de MATLAB

    A mon avis, une erreur serait d'apprendre le C (ou Fortran), en commençant par les fichierx MEX qui servent de passerelles.

    Il est préférable de commencer par des tutoriels d'initiation (C ou Fortran) et par se procurer les ouvrages de bases (C)

    Et comme le souligne Jean-Marc, il ne faut pas hésiter à venir demander de l'aide sur nos forums C ou Fortran.

    J'espère ne pas avoir écrit trop de bêtises et surtout... bon courage !

  7. #7
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    MATLAB intègre des bibliothèques disponibles sur internet (LAPACK,
    Pour des raisons pratiques, Matlab ne peut intégrer qu'une petite partie des ressources de LAPack. Par exemple, si tu veux résoudre un système dont la matrice est quelconque, tu utiliseras le sous-programme DGESV; mais si la matrice est symétrique définie positive, DPOSV est plus rapide, si elle est en forme de bande, ce sera DGBSV, si elle est tridiagonale, DGTSV, etc.
    Jean-Marc Blanc

  8. #8
    Membre éprouvé
    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
    Par défaut
    Citation Envoyé par Dut Voir le message
    MATLAB était à l'origine écrit en Fortran (par Cleve Moler).
    La première version commercialisée (en 1984) était ré-écrite en C.

    Fortran ou C sont des langages de bas niveau, à l'opposé de MATLAB qui est un langage de haut niveau. En plus de son langage propre, MATLAB utilise en interne C, C++, Fortran, Java ou encore Perl


    => http://blogs.mathworks.com/loren/200...#comment-16705

    De plus, MATLAB intègre des bibliothèques disponibles sur internet (LAPACK, FFTW, QHULL, UMFPACK, CGAL, ...). Voir le fichier acknowledgments.html dans le dossier d'installation de MATLAB.

    Pour ma part, les principales difficultés (sans parler des différences de syntaxe) quand on passe de MATLAB à C se situent surtout dans la gestion des types de variables, les allocations/désallocation de mémoire et les pointeurs pour les tableaux dynamiques. Viennent ensuite les problèmes de compilation et d'intégration de fonctions (bibliothèques) existantes... vaste programme

    Une des principales qualités de MATLAB (et des logiciels similaires) tient dans une prise en main très rapide pour de non-informaticiens. Le développement rapide d'algorithme était d'ailleurs le premier argument de vente de MATLAB

    A mon avis, une erreur serait d'apprendre le C (ou Fortran), en commençant par les fichierx MEX qui servent de passerelles.

    Il est préférable de commencer par des tutoriels d'initiation (C ou Fortran) et par se procurer les ouvrages de bases (C)

    Et comme le souligne Jean-Marc, il ne faut pas hésiter à venir demander de l'aide sur nos forums C ou Fortran.

    J'espère ne pas avoir écrit trop de bêtises et surtout... bon courage !
    merci pour tous les liens!!!

    en fait j'ai deja un peu programmer un C mais pas enormement donc les pointeurs je connais, ca ne possera pas de blem c'est plutot les fonctions de matlab qui vont me manquer

    Au fait quel est l'avantage des langage de bas niveau par rapport à ceux de haut niveau comme matlab car je ne vois pas du tout perso...

  9. #9
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    l'avantage des langage de bas niveau par rapport à ceux de haut niveau comme matlab
    Inconvénient:
    • C'est souvent plus long à programmer.


    Avantages:
    • Tu peux programmer des choses qui ne sont pas dans Matlab.
    • L'exécution est en général plus rapide.


    comment ne pas se perdre dans ces biblio?
    Dans www.netlib.org, pour les systèmes linéaires, je te recommande, pour commencer, LinPack qui est assez simple; tu pourras passer à LAPack, qui est plus performant mais aussi plus compliqué.

    Jean-Marc Blanc

  10. #10
    Membre éprouvé
    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
    Par défaut
    salut

    Citation Envoyé par FR119492 Voir le message
    Avantages:
    • Tu peux programmer des choses qui ne sont pas dans Matlab.
    • L'exécution est en général plus rapide.
    je trouve les avantages plutot faibles par rapport à matlab que j'ai l'habitude d'utiliser et où je n'ai jamais bloqué pour programmer quoi que ce soit, mais bon je vais pas avoir le choix je dois reprendre le travail de quelqu'un qui a programmer sous C ou fortran...

    Citation Envoyé par FR119492 Voir le message
    Dans www.netlib.org, pour les systèmes linéaires, je te recommande, pour commencer, LinPack qui est assez simple; tu pourras passer à LAPack, qui est plus performant mais aussi plus compliqué.
    Merci beaucoup pour le conseil, il y a néanmoins quelque chose que je ne saisi pas:
    ==> pour moi une bibliotheque est un "truc" qui me permet d'utiliser des fonctions (type MAX(...) ) deja preprogrammée.

    Donc je ne comprends pas qu'appel tu plus compliqué ou plus performant?
    (+ performant veux dire + de fonctions preprogrammée accessible? + compliqué veux dire quoi dans ce cas?)

  11. #11
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Citation Envoyé par 21did21 Voir le message
    Au fait quel est l'avantage des langage de bas niveau par rapport à ceux de haut niveau comme matlab car je ne vois pas du tout perso...
    Je dirais que l'avantage principale reste la rapidité d'exécution du code car plus le niveau est bas, plus la programmation se rapproche du langage machine.

    Il y a une autre différence entre MATLAB et C ou Fortran. MATLAB est un langage interprété, alors que le C et le Fortran sont des langages compilés.

    La compilation transforme un fichier texte C en un fichier binaire exécutable compréhensible par la machine. La compilation ne s'effectue donc qu'une seule fois.

    Sous MATLAB, lors de l'exécution d'un fichier .m, MATLAB lit le fichier texte et interprète les lignes de code les unes après les autres. Ceci à chaque exécution.

    Chacun ses avantages et ses inconvénients (code compilé plus rapide mais moins portable, par exemple)

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

Discussions similaires

  1. passage de paramètre d'une fonction fortran appelée depuis python
    Par Dreyliciouss dans le forum Interfaçage autre langage
    Réponses: 0
    Dernier message: 20/07/2010, 10h44
  2. probleme avec le langage matlab
    Par sousoi dans le forum Images
    Réponses: 2
    Dernier message: 04/07/2010, 09h50
  3. Problème de passage de tableau de Python vers Fortran 90
    Par P.Math dans le forum Interfaçage autre langage
    Réponses: 0
    Dernier message: 31/03/2010, 11h01
  4. [langage] Passage de parametre lors de l execution
    Par WetzlarMan dans le forum Langage
    Réponses: 4
    Dernier message: 16/03/2004, 13h28
  5. [langage] Passage de variables...
    Par martijan dans le forum Langage
    Réponses: 8
    Dernier message: 30/07/2003, 09h48

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