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 :

Comment éffacer les éléments d'une matrice [Débutant]


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Comment éffacer les éléments d'une matrice
    Bonjour,

    Je cherche à m'entraîner avant mes partiel, mais je n'arrive pas à résoudre ce problème:

    Ecrire un code Matlab permettant d'effacer tous les éléments de la deuxième colonne de la matrice A (100 x 2). qui sont plus grands qu'une certaine valeur de seuil X.

    Merci pour ceux qui pourraient m'aider

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

    si tu n'est pas à l'aise avec matlab, regarde du côté de la commande find

    ca devrait déjà t'aider.

  3. #3
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    salut
    Citation Envoyé par Merel
    si tu n'est pas à l'aise avec matlab, regarde du côté de la commande find
    ou en l’occurrence de l'indexage logique

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Reponse à mon problème
    Bonjour,
    Merci pour vos réponses, je m'en suis servi pour faire quelque chose qui semble marché, je donne donc ma solution.
    Exemple pour une matrice A(7x2)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    A=[1 2 ; 3 4 ; 5 6 ; 7 8 ; 9 10 ; 11 12 ; 13 14]
    a=find(A(:,2)>5)%Recherche les éléments plus grands que x
    b=a(1)%Sort la première position >x
    c=7-b+1 %Définir le nombre de bouclages for pour respecter les dimensions
    %en connaissant le nombre de ligne ici 7
     
    for i=1:1:c %Boucle FOR
    A(b,2)=[0] %Mets à 0 la position A(x,1) dans la matrice
    b=b+1 %Incrémente la position
    end %Fin de la boucle FOR
    Voilà, je pense qu'il est possible de faire plus propre, mais dans mon cas ça me suffit.

  5. #5
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    salut
    tu te compliques bien la vie. aucun besoin d'une boucle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    A=[1 2 ; 3 4 ; 5 6 ; 7 8 ; 9 10 ; 11 12 ; 13 14];
    A(A(:,2)>5,2)=0
    ou en utilisant find (mais pas nécessaire ici)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A=[1 2 ; 3 4 ; 5 6 ; 7 8 ; 9 10 ; 11 12 ; 13 14];
    a=find(A(:,2)>5);
    A(a,2)=0
    c'est vraiment un problème d'indexage (LA chose à maitriser en Matlab)

    Edit : et ton code ne fonctionne que si ta deuxième colonne est triée
    essaye avec
    Edit2
    en connaissant le nombre de lignes
    sinon quelques remarques : tu peux remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    c=7-b+1;
    for i=1:1:c %Boucle FOR
    A(b,2)=[0] %Mets à 0 la position A(x,1) dans la matrice
    b=b+1 %Incrémente la position
    end %Fin de la boucle FOR
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i=b:1:size(A,1) %tu vires les commentaires du genre boucle for je crois que ça se voit non?
    A(i,2)=0; % toujours pas de commentaires ici, c'est des choses élémentaires du langage
    end %tu as déjà une variable qui incrémente, sert t'en !
    voilà pour les remarques sur ta boucle et je t'ajoute une version indexée
    là tu vois vraiment ce que ça fait : toutes les valeurs de la deuxième colonne à partir de la ligne b seront annulées

    et tu peux remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    a=find(A(:,2)>5)%Recherche les éléments plus grands que x
    b=a(1)%Sort la première position >x
    par
    bien lire l'aide des fonctions !

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Merci beaucoup
    Effectivement, je ne comprends pas très bien MATLAB et notre formation ne comporte que la fonction find. Maintenant que j'ai réfléchi à votre code et je comprends bien comment il fonctionne, si j'avais insisté au lieu de prendre la facilité je l'aurais peut-être trouvé lol.

    En tout cas merci pour la rapidité et les explications.

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

Discussions similaires

  1. Comment itérer les éléments d'une séquence ?
    Par N_BaH dans le forum Contribuez
    Réponses: 0
    Dernier message: 17/06/2010, 22h31
  2. Réponses: 3
    Dernier message: 18/03/2008, 22h55
  3. Travail sur les éléments d'une matrice.
    Par Jefeh dans le forum MATLAB
    Réponses: 6
    Dernier message: 12/11/2007, 16h10
  4. Comment récupèrer les éléments d'une JList
    Par Orian dans le forum Composants
    Réponses: 13
    Dernier message: 10/09/2006, 12h53
  5. Réponses: 3
    Dernier message: 15/05/2006, 17h09

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