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 :

matrice 'spdiags' matlab


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 29
    Points : 20
    Points
    20
    Par défaut matrice 'spdiags' matlab
    Salut à tous ,

    je suis debutant en matlab . Pouvez vous m'aider à comprendre ces deux matrices ( et surtout la matrice B )que je l'ai trouvé dans un code matlab et qui m'intersse pour mon travail.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A = spdiags(ones(n-2,1)*[1 2 1],-2:0,n,n-2);
     
    B = A(:,1:2:end);
    avec n entier quelconque.


    je vous remercie 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 316
    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 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Tu peux utiliser la fonction FULL si tu n'est pas à l'aise avec les matrices creuses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    >> n = 5;
    >> A = spdiags(ones(n-2,1)*[1 2 1],-2:0,n,n-2)
     
    A =
     
       (1,1)        1
       (2,1)        2
       (3,1)        1
       (2,2)        1
       (3,2)        2
       (4,2)        1
       (3,3)        1
       (4,3)        2
       (5,3)        1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >> full(A)
     
    ans =
     
         1     0     0
         2     1     0
         1     2     1
         0     1     2
         0     0     1
    et :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >> B = A(:,1:2:end)
     
    B =
     
       (1,1)        1
       (2,1)        2
       (3,1)        1
       (3,2)        1
       (4,2)        2
       (5,2)        1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >> full(B)
     
    ans =
     
         1     0
         2     0
         1     1
         0     2
         0     1
    Sinon un peu de lecture utile : Gestion des matrices

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 29
    Points : 20
    Points
    20
    Par défaut matrice 'spdiags' matlab
    Salut

    merci pour votre aide 'et pour la fonction FULL', en fait je veux construire la matrice suivante à 14 lignes et 6 colones:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
         1     0     0     0     0     0
         2     0     0     0     0     0
         1     1     0     0     0     0
         0     2     0     0     0     0
         0     1     1     0     0     0
         0     0     2     0     0     0
         0     0     1     0     0     0 
         0     0     0     1     0     0
         0     0     0     2     0     0
         0     0     0     1     1     0
         0     0     0     0     2     0
         0     0     0     0     1     1
         0     0     0     0     0     2
         0     0     0     0     0     1
    donc je peux commencer par

    A= spdiags(ones(2*n-2,1)*[1 2 1],-2:0,2*n,2*n-2) (avec n=7) ensuite je pose B = A(:,1:2:end)
    mais je ne trouve pas exactement la matrice voulu, en fait il faut une translation de ligne à partir de la 7ieme ligne alors comment je pourrrais le faire ??

  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 316
    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 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Citation Envoyé par amimou Voir le message
    je veux construire la matrice suivante à 14 lignes et 6 colones:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
         1     0     0     0     0     0
         2     0     0     0     0     0
         1     1     0     0     0     0
         0     2     0     0     0     0
         0     1     1     0     0     0
         0     0     2     0     0     0
         0     0     1     0     0     0 
         0     0     0     1     0     0
         0     0     0     2     0     0
         0     0     0     1     1     0
         0     0     0     0     2     0
         0     0     0     0     1     1
         0     0     0     0     0     2
         0     0     0     0     0     1
    Il y a une légère erreur (en rouge) non ?

    Dans ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    n = 7;
     
    A = repmat([1 2 1 zeros(1,2*n-1)],1,n-1);
    A = reshape(A(1:2*n*(n-1)),2*n,[])
    donne
    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
    A =
     
         1     0     0     0     0     0
         2     0     0     0     0     0
         1     1     0     0     0     0
         0     2     0     0     0     0
         0     1     1     0     0     0
         0     0     2     0     0     0
         0     0     1     1     0     0
         0     0     0     2     0     0
         0     0     0     1     1     0
         0     0     0     0     2     0
         0     0     0     0     1     1
         0     0     0     0     0     2
         0     0     0     0     0     1
         0     0     0     0     0     0

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 29
    Points : 20
    Points
    20
    Par défaut matrice 'spdiags' matlab
    Salut

    en fait, il n'y a pas d'erreur (c juste ce que vous l'avez mis en rouge) je cherche exactement cette matrice .
    merci

  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 316
    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 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Tu pourrais nous en dire un peu plus sur cette matrice ?
    Que représente-t-elle ?

    Comment déterminer la singularité que j'ai surligné en rouge ?

Discussions similaires

  1. Enregistrer une partie d'une grande matrice en matlab
    Par mihaispr dans le forum Images
    Réponses: 3
    Dernier message: 04/07/2009, 10h38
  2. programmer une matrice sur matlab
    Par suzanne1307 dans le forum MATLAB
    Réponses: 1
    Dernier message: 26/12/2008, 18h12
  3. matrice vecteurs matlab
    Par momo032114 dans le forum MATLAB
    Réponses: 10
    Dernier message: 14/08/2008, 12h17
  4. Problème d'affectation de matrice avec matlab
    Par bourdon_42 dans le forum MATLAB
    Réponses: 2
    Dernier message: 10/02/2008, 18h32
  5. [Débutant] Matrice sur Matlab
    Par Ptinéwik dans le forum MATLAB
    Réponses: 14
    Dernier message: 27/11/2007, 12h24

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