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 :

Former une Matrice diagonale [Débutant]


Sujet :

MATLAB

  1. #1
    Membre habitué Avatar de Youni92
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 178
    Points : 182
    Points
    182
    Par défaut Former une Matrice diagonale
    Bonjour, je ne parviens pas à former une matrice diagonale à partir de plusieurs autres matrices diagonal.

    Exemple simple de ce que je cherche à faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    A=[1 0;
       0 1]
    et
    B=[2 0;
      0 2]
     
    Je souhaite obtenir:
    C=[1 0 0 0;
       0 1 0 0;
       0 0 2 0;
       0 0 0 2]
    Quelqu'un pourait m'indiquer vers quelle fonction me diriger, en sachant que je n'y arrive pas avec la fonction " diag () "

    Le but final et de le faire automatiquement avec de matrices de tailles variables.
    Par exemple, une matrie A diagonale de taille 10*10, une matrice diagonale B de taille 4*4 et une matrice diagonale C de taille 7*7 .... Donnerai une matrice diagonale D de taille 21*21
    When you have eliminated the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

  2. #2
    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
    Salut,

    un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    diag([diag(A);diag(B)])
    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.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    tu peux regarder aussi ce tuto de Dut.

    gestion matrice

  4. #4
    Membre habitué Avatar de Youni92
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 178
    Points : 182
    Points
    182
    Par défaut
    Merci beaucoup !!
    When you have eliminated the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

  5. #5
    Membre habitué Avatar de Youni92
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 178
    Points : 182
    Points
    182
    Par défaut
    Je me suis un peu avancé, car les matrices que j'ai à utiliser ne sont pas toutes des matrices diagonales, elles sont parfois tridiagonales

    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
    A=[2 0 0;
       0 2 0,
       0 0 2];
    
    B=[1 0 1 0 0;
       0 1 0 1 0;
       1 0 1 0 1;
       0 1 0 1 0;
       0 0 1 0 1];
    
    => C=[2 0 0 0 0 0 0 0;
          0 2 0 0 0 0 0 0;
          0 0 2 0 0 0 0 0;
          0 0 0 1 0 1 0 0;
          0 0 0 0 1 0 1 0;
          0 0 0 1 0 1 0 1;
          0 0 0 0 1 0 1 0;
          0 0 0 0 0 1 0 1];
    et malheureusement, la méthode de Magelan ne ne marche plus, car si je créé une matrice diagonale avec les diagonales des matrices initiales, je perds les termes extérieurs.

    Une idée ?
    When you have eliminated the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

  6. #6
    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
    Il existe une fonction qui fait ce que tu souhaites. Il existe aussi des moteurs de recherche qui permettent de chercher ces fonctions. Aides-toi de ces mots-clés :
    matlab concatenate diagonal matrix

    (tu peux aussi chercher dans la doc de MATLAB)

    Bonne recherche
    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.

  7. #7
    Membre habitué Avatar de Youni92
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 178
    Points : 182
    Points
    182
    Par défaut
    Ohhhh MERCI pour tes mots clés.
    Je cherchais comme un fou à m'en sortir avec des enchevettrements de boucle "for", mais juste ces mots clé sur google et BINGO !

    La docs de Matlab ne m'aide jamais, elle donnes des explications sur le principe d'une fonction mais encore faut-il connaitre la fonction

    Pour ceux que ça intéresseraient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    M1=[2 0 0 0;
        0 2 0 0;
        0 0 2 0;
        0 0 0 2];
    M2=[3 0 5 0 0;
        0 3 0 5 0;
        5 0 3 0 5;
        0 5 0 3 0;
        0 0 5 0 3];
    M3=[1 0;0 1];
     
    C=blkdiag(M1,M2,M3)
    Merci encore
    When you have eliminated the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

  8. #8
    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


    Citation Envoyé par Youni92 Voir le message
    La docs de Matlab ne m'aide jamais, elle donnes des explications sur le principe d'une fonction mais encore faut-il connaitre la fonction
    Tu as aussi une zone de recherche par mots-clés dans la fenêtre help de MATLAB.
    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.

  9. #9
    Membre habitué Avatar de Youni92
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 178
    Points : 182
    Points
    182
    Par défaut
    Peut-être, mais faut être un grand dans le monde de Matlab pour sortir les mots clés que tu m'as donné, mais un jour petit scarabé sera grand
    When you have eliminated the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Nop, faut pas forcément être un grand. Juste savoir un peu parler anglais... Quand tu veux faire un truc, tu penses à tes mot clef en français que tu traduis.

    Tu voulais faire une concaténation de matrice diagonale avec matlab.

    Magelan t'as donné comme mot clef : concatenate, diagonal, matlab et matrix.

    C'est pas la fin du monde quand même

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

Discussions similaires

  1. Créer une matrice diagonale avec la boucle "for'
    Par SOSO1 dans le forum MATLAB
    Réponses: 1
    Dernier message: 03/05/2012, 13h54
  2. Créer une matrice diagonale par blocs
    Par antonb dans le forum MATLAB
    Réponses: 5
    Dernier message: 08/12/2011, 20h10
  3. [Débutant] Diagonale vide d'une matrice
    Par rob408231 dans le forum MATLAB
    Réponses: 6
    Dernier message: 13/11/2008, 22h13
  4. Mettre la diagonale d'une matrice à 0
    Par yous18 dans le forum x86 16-bits
    Réponses: 3
    Dernier message: 14/12/2007, 23h08
  5. Créer une matrice k-diagonale
    Par Mathusalem dans le forum MATLAB
    Réponses: 6
    Dernier message: 29/05/2006, 11h56

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