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 :

Histogramme avec échelle logarithmique


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 74
    Par défaut Histogramme avec échelle logarithmique
    Bonjour la communauté,

    A partir d'un vecteur de départ Mat=[0.16;0.06;0.04;0.03;0.56;25.2;...], je cherche à connaître les effectifs de Mat par tranche [0.01,0.1,1,10,100]
    Et donc tracer un histogramme (données de Mat en Abscisse selon une échelle logarithmique, et effectif en ordonnée).
    J'ai cru comprendre que je pourrais m'en sortir avec hist ou histc et/ou bar? plus semilogx mais j'ai beau faire des essais, je n'arrive jamais avoir l'histogramme que je désire...
    un simple s'en rapproche...
    Des conseils?

    merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut Histogramme avec échelle logarithmique
    Bonjour,

    Un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Mat=[0.16;0.06;0.04;0.03;0.56;25.2;1.5;12;3;0.5];
    [n, xout] = hist(Mat);
    bar(Mat,n,'barwidth',3);
    set(gca, 'XScale', 'log')
    set(gca,'FontSize',15, 'XLim',[0.01,100]);
    grid

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 74
    Par défaut
    Merci phryte
    ça marche sur cet exemple mais pas sur ma matrice qui est beaucoup plus grande: taille: 21000*1
    puis vu que n et xout sont de taille 10, rale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Error using bar (line 172)
    X must be same length as Y.
     
    Error in Mafonction(line 76)
    bar(Mat,n);

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut Histogramme avec échelle logarithmique
    Bonjour,
    Un autre exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    clear
    nr=10000;
    Mat=10*rand(1,nr);
    [n,xout]=hist(Mat);
    %n=n/max(n);% Normalisation
    bar(xout,n)
    set(gca, 'XScale', 'log')
    set(gca,'FontSize',15, 'XLim',[0.01,100]);
    grid

  5. #5
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 885
    Par défaut
    salut

    je ferais plutôt qqch comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    histogram(Mat,[1e-2 1e-1 1e0 1e1 1e2])
    set(gca, 'XScale', 'log')
    Fabien

  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 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 légère amélioration au dernier code donné par Fabien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    histogram(Mat, logspace(-2, 2, 5))
    ou encore mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    histogram(Mat, 10.^(-2:2))
    Et pour obtenir directement les bornes min et max en fonction des valeurs contenues dans Mat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    e(1) = floor(log10(min(Mat(:))));
    e(2) = ceil(log10(max(Mat(:))));
     
    histogram(Mat, 10.^(e(1):e(2)))

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/07/2014, 13h09
  2. graphe 3D avec échelle logarithmique
    Par adila34 dans le forum MATLAB
    Réponses: 2
    Dernier message: 19/04/2013, 18h09
  3. découpage avec échelle logarithmique
    Par sluke dans le forum Mathématiques
    Réponses: 4
    Dernier message: 27/08/2012, 16h40
  4. Histogramme avec une échelle continue
    Par Vorillyan dans le forum Excel
    Réponses: 12
    Dernier message: 09/10/2007, 10h48
  5. Colormap/colorbar avec échelle logarithmique
    Par florence.g dans le forum MATLAB
    Réponses: 1
    Dernier message: 28/03/2007, 13h19

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