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 :

Extraction dans une matrice à l'aide d'un index


Sujet :

MATLAB

  1. #1
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut Extraction dans une matrice à l'aide d'un index
    Bonjour,

    J'ai un tableau I, (I comme index), qui me dit quelle ligne je dois extraire dans chaque colonne d'une matrice M. ci-dessous mon code (qui marche).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    M = magic(5)
    I = [1, 1, 2, 5, 4] ;
    R = zeros(1,5) ;
     
    for i=1:5
        R(i) = M(I(i), i) ;
    end
     
    disp (R) ; % 17    24     7     2     3
    Je me demande s'il est possible de faire la même chose directement, sans boucle. (souci d'optimisation pour code qui s'annonce gourmand)

  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 318
    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 318
    Points : 52 922
    Points
    52 922
    Par défaut
    Il suffit de passer par l'indexage linéaire => http://briot-jerome.developpez.com/m...sgestion/#LIII
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [r,c] = size(M);
    idx = (0:c-1)*r+I;
     
    R = M(idx)
    ou en utilisant la fonction SUB2IND :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [r,c] = size(M);
    idx = sub2ind([r c],I,1:c);
     
    R = M(idx)
    La seconde solution sera moins rapide mais plus robuste à cause de la batterie de tests effectués au début de la fonction SUB2IND

  3. #3
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Moi j'en ai un aussi mais il semblerait que ca ne fait pas gagner de temps

  4. #4
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    J'y crois pas Vous êtes vraiment les meilleurs !!!

    adressage linéaire : la seule chose que je savais faire (mais zut)
    diag : c'est beau ! rien que pour ça, merci !
    sub2ind, c'est ce qu'il me faut.

    Bravo à vous deux et ...

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

Discussions similaires

  1. Extraction des composantes des pixels dans une matrice
    Par hanane78 dans le forum Images
    Réponses: 7
    Dernier message: 11/03/2007, 23h12
  2. [Débutant] extraction dans une cellule
    Par KOFJCH dans le forum Access
    Réponses: 5
    Dernier message: 22/12/2005, 12h06
  3. chercher un tableau dans une matrice
    Par devdébuto dans le forum C
    Réponses: 12
    Dernier message: 11/12/2005, 02h26
  4. angles possibles dans une matrice
    Par bigbill dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 05/05/2005, 18h08
  5. extraction dans une date
    Par HULK dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/11/2003, 09h42

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