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 :

cherche la plus grande valeur dans une matrice


Sujet :

MATLAB

  1. #1
    Membre confirmé Avatar de thtghgh
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 221
    Par défaut cherche la plus grande valeur dans une matrice
    Bonjour,

    Je souhaite trouver dans une matrice A, la plus grande valeur (en valeur absolue) et avoir les coordonnée i et j de cette valeur.

    Ex :

    A=[1 2 3 ; 5 9 8; 11 -20 4]

    Alors la plus grande valeur est 20 et ses coordonées dans la matrice sont (3,2)

    Merci de votre aide

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

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    help max
     
    [m,i_vect]=max(abs(A))
    [m,j]=max(m)
    i=i_vect(j)
     
    %m max (i,j) coordonnées dans la matrice
    edit: valeur de i

  3. #3
    Membre confirmé Avatar de thtghgh
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 221
    Par défaut
    merci bien!

  4. #4
    Membre confirmé Avatar de thtghgh
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 221
    Par défaut
    J'ai une autre précision, il faut que la recherche se fasse dans toute la matrice sauf la diagonale (c'est a dire que je ne peux pas avoir les indices égaux)

    Merci de m'aider

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

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Par défaut
    ben tu mets tous tes termes diagonaux à 0.
    avec une boucle for c'est assez simple sinon il doit y avoir d'autres solutions
    au cas où en attendant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    B=A;
    for i=1:length(B)
    B(i,i)=0;
    end
    %suite code précédent mais sur B au lieu de A

  6. #6
    Membre confirmé Avatar de thtghgh
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 221
    Par défaut
    Merci j'avais trouvé une solution intermédiaire c'est d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [m,i_vect]=max(abs(A-diag(diag(A))))
    [m,j]=max(m)
    i=i_vect(j)

  7. #7
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Citation Envoyé par tubaas Voir le message
    ben tu mets tous tes termes diagonaux à 0.
    avec une boucle for c'est assez simple sinon il doit y avoir d'autres solutions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    B = A;
    B(1:size(B,1)+1:end) = -inf
    Avec -Inf, on est sûr d'éliminer les valeurs sur la diagonale

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Une autre solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    nA = numel(A);
    rA = size(A,1);
     
    idx = setdiff(1:nA,1:rA+1:nA);
     
    [m,i_vect] = max(A(idx))

  9. #9
    Membre confirmé Avatar de thtghgh
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 221
    Par défaut
    Et si je veux récupérer l'indice commen je peux faire?
    Et à quoi correspond i_vect?

  10. #10
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317

Discussions similaires

  1. [10g] Afficher la plus grande valeur dans une requête
    Par alexis trotta dans le forum SQL
    Réponses: 6
    Dernier message: 14/03/2014, 15h54
  2. Récupérer la 2ème plus grande valeur dans une variable
    Par lyonnaisdu26 dans le forum QlikView
    Réponses: 3
    Dernier message: 12/03/2012, 14h58
  3. recupérer la plus grande valeur dans une bdd
    Par djo007 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 30/01/2012, 22h15
  4. VBA_E : Selection des 5 plus grandes valeurs d'une colonne..
    Par VBBBA dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/09/2006, 18h39
  5. vba-Excel-Plus grande valeur d'une colonne
    Par VBBBA dans le forum Macros et VBA Excel
    Réponses: 33
    Dernier message: 08/08/2006, 11h50

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