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 :

Création de Matrice 123. . . [Débutant]


Sujet :

MATLAB

  1. #1
    Membre habitué Avatar de Mat32
    Inscrit en
    Août 2009
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 243
    Points : 137
    Points
    137
    Par défaut Création de Matrice 123. . .
    Hello

    J'essaye de produire une fonction qui permet de créer une matrice dont les nombres se suivent. Mais mon code produit une matrice avec seulement le dernier nombre.
    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
     
    function [matrix123] = matrix123(ndepart,inc,lignes,colonnes)
    %
    %MATRIX123 fournit une matrice de numérique 
    %qui se suivent par incrément de 1
     
    nfinal=lignes*colonnes;
    matrix123=zeros(lignes,colonnes);
     
    for l=1:lignes
        for c=1:colonnes
            for i=ndepart:inc:nfinal*inc
            matrix123(l,c)=i;  
            end
        end
    end

    De plus mes variables lignes, colonnes, matrix123, nfinal ne sont pas réutilisables

    Et enfin ma matrice se stocke dans ans, comment faire pour enregistres dans une autre


    Merci de votre aide pour ces 3 problèmes
    Devise Shadoks : Il vaut mieux pomper d'arrache pied même s'il ne se passe rien que de risquer qu'il se passe quelque chose de pire en ne pompant pas

  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 : 52 882
    Points
    52 882
    Par défaut
    Quel est la but de tout ceci ?

    Pourquoi utiliser des boucles imbriquées pour remplir une matrice aussi simple avec MATLAB ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    M = zeros(lignes,colonnes);
    M(:) = 1:lignes*colonnes;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    M = 1:lignes*colonnes;
    M = reshape(M,lignes,[]);
    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
    Membre habitué Avatar de Mat32
    Inscrit en
    Août 2009
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 243
    Points : 137
    Points
    137
    Par défaut
    Ben je suis débutant et j'apprends...
    Sais-tu ce qui ne vas pas dans mon code ?
    Et peux-tu répondre aux deux autres question?

    Et que signifie la fonction

    M( : )=x:y
    Devise Shadoks : Il vaut mieux pomper d'arrache pied même s'il ne se passe rien que de risquer qu'il se passe quelque chose de pire en ne pompant pas

  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 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 : 52 882
    Points
    52 882
    Par défaut
    Citation Envoyé par Mat32 Voir le message
    Mais mon code produit une matrice avec seulement le dernier nombre.
    C'est normal vu que la boucle sur i écrase la valeur de matrix123(l,c) à chaque itération
    Citation Envoyé par Mat32 Voir le message
    De plus mes variables lignes, colonnes, matrix123, nfinal ne sont pas réutilisables
    Tu as crées une fonction.
    Seules les variables passées en argument de sortie sont utilisables une fois la fonction terminée.

    Citation Envoyé par Mat32 Voir le message
    Et enfin ma matrice se stocke dans ans, comment faire pour enregistres dans une autre
    Pour stocker le résultat dans une variable, il faut appeler la fonction comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    matrice = matrice123(1,1,2,3);
    Au passage, prend l'habitude de ne pas donner le même nom à une variable et à une fonction (ici matrice123)

    Citation Envoyé par Mat32 Voir le message
    Et que signifie la fonction

    M( : )=x:y
    => http://briot-jerome.developpez.com/m...tricesgestion/
    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)

  5. #5
    Membre habitué Avatar de Mat32
    Inscrit en
    Août 2009
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 243
    Points : 137
    Points
    137
    Par défaut
    Ok mais je ne voix pas pourquoi la valeur s'écrase.

    Dans l'idée ce serais M(l,c)=i

    => Mettre à la position l,c la valeur i
    reprendre la matrice et ajouter à la position suivante le i suivant


    Mais ça ne joue pas vraiment

    Ps: J'avais compris que M( : ) selectionne toute la matrice mais c'est "comme" une boucle, un élément après l'autre ?

    Et pour la variable et le nom de la fonction qui sont identique ben si je ne fait pas cela ML me donne un warning. Et meme la seul var passée en argument n'est pas réutilisable
    Devise Shadoks : Il vaut mieux pomper d'arrache pied même s'il ne se passe rien que de risquer qu'il se passe quelque chose de pire en ne pompant pas

  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 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 : 52 882
    Points
    52 882
    Par défaut
    Citation Envoyé par Mat32 Voir le message
    Dans l'idée ce serais M(l,c)=i

    => Mettre à la position l,c la valeur i
    reprendre la matrice et ajouter à la position suivante le i suivant
    signifie : "affecter la valeur courante de la variable i à l'élément du tableau M situé à la ligne l et à la colonne c"

    Donc si tu boucles sur i, seule la dernière valeur de i prendra place dans M(l,c)

    Citation Envoyé par Mat32 Voir le message
    Ps: J'avais compris que M( : ) selectionne toute la matrice mais c'est "comme" une boucle, un élément après l'autre ?
    Je ne comprends pas ta question...

    M(:) est un raccourci de M(1:end) où end est un mot-clé donnant directement l'indice du dernier élément de M. MATLAB est optimisé pour travailler directement avec des données sous forme de tableau et plus exactement sous forme de vecteur (tableau 1xN ou Nx1). Cela est dû à la représentation interne des données. Le "type" de base sous MATLAB est le mxArray mais on ne le manipule quasiment jamais (sauf avec les fichiers MEX)

    Citation Envoyé par Mat32 Voir le message
    Et pour la variable et le nom de la fonction qui sont identique ben si je ne fait pas cela ML me donne un warning
    Et pourtant, le code suivant fonctionne parfaitement :

    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
    function M = matrix123(ndepart,inc,lignes,colonnes)
    %
    %MATRIX123 fournit une matrice de numérique 
    %qui se suivent par incrément de 1
     
    nfinal = lignes*colonnes;
    M = zeros(lignes,colonnes);
     
    i = ndepart:inc:nfinal*inc;
     
    ki = 1;
    for l = 1:lignes
        for c = 1:colonnes
            M(l,c) = i(ki);  
            ki = ki+1;
        end
    end
    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)

  7. #7
    Membre habitué Avatar de Mat32
    Inscrit en
    Août 2009
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 243
    Points : 137
    Points
    137
    Par défaut
    Oui en effet merci...

    Mais je ne peux toujours pas utiliser M (la variable) ensuite, il n'est pas enregistré?
    Devise Shadoks : Il vaut mieux pomper d'arrache pied même s'il ne se passe rien que de risquer qu'il se passe quelque chose de pire en ne pompant pas

  8. #8
    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 : 52 882
    Points
    52 882
    Par défaut
    Tout dépend de ce que tu souhaites faire après...

    Si tu veux utiliser la variable immédiatement après la fin de la fonction matrice123 dans une autre fonction fun :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    M = matrice123(...);
    fun(M)
    Ou si tu souhaites l'enregistrer dans un fichier pour pouvoir l'appeler n'importe quand ultérieurement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    M = matrice123(...);
    save('M.mat','M')
    et pour la récupérer, tu as juste à faire :
    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)

  9. #9
    Membre habitué Avatar de Mat32
    Inscrit en
    Août 2009
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 243
    Points : 137
    Points
    137
    Par défaut
    Merci bien Dut
    Devise Shadoks : Il vaut mieux pomper d'arrache pied même s'il ne se passe rien que de risquer qu'il se passe quelque chose de pire en ne pompant pas

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

Discussions similaires

  1. Création image matrice niveau de gris
    Par juliefournet dans le forum Calcul scientifique
    Réponses: 5
    Dernier message: 03/05/2013, 18h01
  2. Création de Matrice dynamique
    Par cobra150 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 16/04/2012, 15h48
  3. création de matrice
    Par vanvan2583 dans le forum Fortran
    Réponses: 4
    Dernier message: 14/03/2012, 21h36
  4. Création de matrice.
    Par Lartiste007 dans le forum Débuter
    Réponses: 6
    Dernier message: 22/12/2008, 10h37
  5. Création de matrice
    Par bg56 dans le forum MATLAB
    Réponses: 3
    Dernier message: 19/11/2007, 11h16

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