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 :

remplacer des valeurs d'une matrice


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 40
    Points : 27
    Points
    27
    Par défaut remplacer des valeurs d'une matrice
    Bonjour,
    Ayant deux vecteurs l'un contenant la valeur de l'élément à changer dans une matrice et l'autre le nombre de fois qu'il y a cet élément dans la matrice,


    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     M=[ 1 2 2;  4 5 6; 7 7 7]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    V1=[1; 2; 4; 5; 6; 7]
    V2=[1; 2; 1; 1; 1; 3]
    Toutes les valeurs éléments de la matrice doivent être changés par le nombre d'éléments qu'ils sont.

    Voici ce que je fait mais qui créé une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    X(X==X(V1(1:length(V1))))=V2.

    Merci de m'éclairer

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    Une idée,

    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
    M=[ 1 2 2;  4 5 6; 7 7 7]
    Size_M = size(M) ; %garde la taille originel de M
    
    % tu aplatis ta matrice en vecteur
    M=M(1:numel(M)) 
    
    % tu fais ton calcul
    N = zeros(size(M));
    for ii = 1:length(M)
    N(ii) = sum(M==M(ii));
    end
    
    % tu reformes ta matrice de la même taille qu'au début
     N=reshape(N,Size_M(1),Size_M(2))
    de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    M =
     
         1     2     2
         4     5     6
         7     7     7
    ça te donne directement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    N =
     
         1     2     2
         1     1     1
         3     3     3
    pas besoin de V1 et V2.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 40
    Points : 27
    Points
    27
    Par défaut
    Merci de la réponse,

    cependant n'y aurait-il pas une réponse sans for?

    Merci d'avance!

  4. #4
    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
    Bonjour,

    Une version en une ligne à partir de M:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    arrayfun(@(x) nnz(x==M(:)), M)
    Duf

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 40
    Points : 27
    Points
    27
    Par défaut
    Super!! Exactement ce que je cherchais^^ Bonne soirée!

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

Discussions similaires

  1. Supprimer aléatoirement des valeurs d'une matrice
    Par MATLAB2008 dans le forum MATLAB
    Réponses: 6
    Dernier message: 30/04/2008, 19h29
  2. Modifier des valeurs dans une matrice
    Par m4tl4b dans le forum MATLAB
    Réponses: 4
    Dernier message: 04/04/2008, 16h51
  3. Réponses: 2
    Dernier message: 09/03/2008, 07h45
  4. Extraire des valeurs d'une matrice
    Par Kcyril dans le forum MATLAB
    Réponses: 4
    Dernier message: 23/04/2007, 14h59
  5. tri des valeurs d'une matrice
    Par suzanne loubert dans le forum Langage
    Réponses: 2
    Dernier message: 07/12/2005, 03h47

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