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 :

Conversion petit code Python vers MATLAB


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 98
    Points : 37
    Points
    37
    Par défaut Conversion petit code Python vers MATLAB
    Bonjour,

    Pourriez-vous m'aider à convertir ce très petit code python en MATLAB?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    mes_copains = ['magali','michel','johana']
    le_nom=input("comment t'appelles-tu ?" )
     
    if le_nom in mes_copains:
     print 'Bonjour ' + le_nom
    else:
     print 'Tchao ' + le_nom
     
    print "c'est fini"
    Merci beaucoup

  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 166
    Points
    53 166
    Par défaut
    4 fonctions utiles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    doc input
    doc strcmp
    doc any
    doc disp
    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 98
    Points : 37
    Points
    37
    Par défaut
    Merci pour tes indications.

    Voici ce que j'ai fait, mais ça ne fonctionne pas.
    Aussi, j'ignore où placer "any".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    mes_copains={'magali','michel','johana'}
     
    le_nom=input('quel est ton nom ?')
     
    % comment mettre l'équivalent des " " de matlab pour que notre chaîne de
    % caractères puisse contenir une apostrophe ?
     
    if le_nom in mes_copains
        disp 'Bonjour ' + le_nom
    else 
        disp 'Tchao ' + le_nom

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,
    Citation Envoyé par recherche888 Voir le message
    comment mettre l'équivalent des " " de matlab pour que notre chaîne de caractères puisse contenir une apostrophe ?
    Il faut doubler le quote :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    le_nom=input('comment t''appelles-tu ?');
    Ensuite, "in" n'est pas une fonction matlab. Regarde ce que renvoie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcmp(mes_copains,le_nom)
    et any prends en entrée un tableau et renvoie 1 (vrai) si l'un au moins des éléments est élément est non nul, O (faux) sinon.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 98
    Points : 37
    Points
    37
    Par défaut
    Merci beaucoup pour ta réponse.

    Voilà ce que j'obtiens donc (un code qui ne fonctionne pas encore...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    mes_copains={'magali','michel','johana'}
     
    le_nom=input('quel est ton nom ?')
     
    if any(strcmp(mes_copains,le_nom)) = 1
        disp 'Bonjour ' + le_nom
    else
        disp 'Tchao ' + le_nom
    Comment puis-je rendre ce code fonctionnel ?

    Deux autres précisions svp :

    1) N'y a-t-il pas un moyen plus simple que "any(strcmp(mes_copains,le_nom)) = 1" de remplacer une ligne telle que "if le_nom in mes_copains" ?

    2) Quel est l'équivalent matlabien de "raw_input" ?

    Merci beaucoup ! (je débute... )

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par recherche888 Voir le message
    1) N'y a-t-il pas un moyen plus simple que "any(strcmp(mes_copains,le_nom)) = 1" de remplacer une ligne telle que "if le_nom in mes_copains" ?
    Oui: any(strcmp(mes_copains,le_nom)) sans le "= 1" Tu pourras pas trouver plus simple, la syntaxe du même style qu'avec le mot clé IN n'existe pas dans MATLAB.

    Citation Envoyé par recherche888 Voir le message
    2) Quel est l'équivalent matlabien de "raw_input" ?
    Ce n'est pas pour rien que l'on ajoute le mot doc devant une fonction que l'on indique à un membre c'est pour qu'il regarde sa documentation qui indique tous les usages possibles de la fonction concernée et en propose quelques exemples.
    Citation Envoyé par doc input
    user_entry = input('prompt', 's') returns the entered string as a text variable rather than as a variable name or numerical value.
    Pour la dernière partie du DISP, je te propose de regarder le tutoriel Gestion des matrices, en particulier la concaténation.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 98
    Points : 37
    Points
    37
    Par défaut
    Merci beaucoup !

    Peux-tu sinon m'indiquer comment arranger ce qui suit les "disp" pour que ce code devienne fonctionnel ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    mes_copains={'magali','michel','johana'}
     
    le_nom=input('quel est ton nom ?')
     
    if any(strcmp(mes_copains,le_nom))
        disp 'Bonjour' + le_nom
    else
        disp 'Tchao ' + le_nom
     
    end
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    quel est ton nom ?'michel'
     
    le_nom =
     
    michel
    ??? Error using ==> disp
    Too many input arguments.
    
    Error in ==> essai at 6
        disp Bonjour + le_nom
    EDIT : l'article sur la concaténation ne m'y a pas aidé, désolé.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par recherche888 Voir le message
    l'article sur la concaténation ne m'y a pas aidé, désolé.
    Et pourrait-on savoir ce que tu as essayé de faire, si ce n'est pas trop demandé ?
    Sauf erreur de ma part l'article que tu as si bien lu ne mentionne aucun opérateur +

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 98
    Points : 37
    Points
    37
    Par défaut
    Salut,

    Pour tester la fonction "disp" pour un affichage d'une chaîne de caractères + d'une variable (ce qui est bien ce que je souhaiterais faire : en python, print 'Bonjour' + le_nom), j'ai tenté ceci :

    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
    >> variable='verbe'
     
    variable =
     
    verbe
     
    >> disp(variable)
    verbe
    >> disp('Bonjour' + variable)
    ??? Error using ==> plus
    Matrix dimensions must agree.
     
    >> disp('Bonjour' variable)
    ??? disp('Bonjour' variable)
                       |
    Error: Unexpected MATLAB expression.
     
    >> disp('Bonjour')+disp(variable)
    ??? Error using ==> disp
    Too many output arguments.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 98
    Points : 37
    Points
    37
    Par défaut
    N'y a-t-il pas un moyen de contourner ici une lecture de la chose en terme de matrices, pour une saisie plus intuitive (ce que je cherche à faire étant très simple ) ?

    Désolé pour mon amateurisme...

  11. #11
    Invité
    Invité(e)
    Par défaut
    Dans ce cas je te conseillerais de RElire le tutoriel, ainsi que de revoir ma remarque:
    Citation Envoyé par Winjerome Voir le message
    Sauf erreur de ma part l'article que tu as si bien lu ne mentionne aucun opérateur +

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 98
    Points : 37
    Points
    37
    Par défaut
    Salut,

    J'ai bien lu le tutorial, mais peine malgré tout.

    Comment intégrer du texte au sein de ma matrice ?

    Aussi, comme précisé, "mat"lab utilise en permanence des matrices, mais n'est-il pas toutefois possible, avec un exemple aussi simple, de saisir des commandes plus intuitives (plus proches de celles acceptées en python) ?

    Merci

  13. #13
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    La concaténation est aussi valable pour des vecteurs de caractères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >> ['debut ' 'fin']
     
    ans =
     
    debut fin
    Pas besoin de signe plus mais il faut les crochets.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 98
    Points : 37
    Points
    37
    Par défaut
    Merci beaucoup !

    Voici donc mon premier "programme" matlab :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    mes_copains={'magali','michel','johana'}
     
    le_nom=input('quel est ton nom ?')
     
    if any(strcmp(mes_copains,le_nom))
        disp (['bonjour ' le_nom])
    else
        disp (['au revoir ' le_nom])
    end

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

Discussions similaires

  1. Conversion d'un code python vers du PHP
    Par coolhands dans le forum Langage
    Réponses: 12
    Dernier message: 09/11/2014, 09h38
  2. Conversion de code C# vers Java (unsigned)
    Par kraxdaz dans le forum Général Java
    Réponses: 1
    Dernier message: 12/09/2011, 14h43
  3. Conversion de code ruby vers C#
    Par Abalalojik dans le forum Ruby
    Réponses: 1
    Dernier message: 30/08/2011, 00h13
  4. [VB.net]problème de conversion de code c# vers VB.net
    Par cladsam dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/10/2005, 14h07

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