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 3 axes [Débutant]


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : janvier 2017
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Histogramme avec 3 axes
    Bonjour,

    je cherche a faire la meme chose que ce code mais en histogramme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    x=0:0.1:4*pi;
    h=plotyy(x, sin(2*x), x, exp(x), ...
             'plot', 'semilogy');
    grid('on')
    xlabel('axe X')
    hy1=get(h(1),'ylabel');
    hy2=get(h(2),'ylabel');
    set(hy1,'string','fonction 1');
    set(hy2,'string','fonction 2');
    je souhaite avoir 3 axes. De plus, mes données seront sous cette forme :
    H0 : 73x37x247 (ici des coordonnées GPS contenant les données sur la hauteur des vagues)
    et mon t : 247x1 (le temps)

    Mon code de base qui trace un histogramme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    filename='2016_03.nc';
     
    long=ncread(filename,'longitude');    %réccupération de la matrice des longitudes
    lat=ncread(filename,'latitude');
    H0=ncread(filename,'VHM0');
    Tp=ncread(filename,'VTPK');      %Peak period
    t=ncread(filename,'time');
     
    % h=histogram(H0,20,'Normalization','probability')
    Mon soucis c'est que je souhaite "combiner" les 2 codes afin d'avoir un histogramme avec à la fois les données normalisées pour avoir la frequence sur la hauteur des vagues et une courbe sur la frequence cumulée (0 à 100%).

    ca donnerait ca :

    Nom : vagues.JPG
Affichages : 16
Taille : 27,0 Ko

    Merci d'avance pour votre aide.

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

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

    Informations forums :
    Inscription : mars 2005
    Messages : 1 742
    Points : 3 153
    Points
    3 153
    Par défaut
    salut

    si tu as matlab 2016a ou plus, tu as la fonction yyaxis

    sinon tu peux utiliser la fonction plotyy et afficher presque rien sur le premier axe (le point 0,0 par exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    figure
    histogram(X);
    hold on
    plotyy(0,0,x,y);

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : janvier 2017
    Messages : 9
    Points : 7
    Points
    7
    Par défaut reponse
    salut,

    Merci,

    maintenant j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    h=histogram(H0,20,'Normalization','probability')
    % S=sum(h.Values)
    figure(1)
    hold on
    plotyy(0,0,x,y);
    mais comment je remplace x et y pour avoir la courbe en rouge sur l'image plus haut avec le cumule de mes probabilité ?
    merci d'avance :

    j'ai ceci en remplacant x et y par 0 :

    Nom : histo.JPG
Affichages : 13
Taille : 24,5 Ko

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

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

    Informations forums :
    Inscription : mars 2005
    Messages : 1 742
    Points : 3 153
    Points
    3 153
    Par défaut
    comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    % comptage sur 100 casiers
    [N,edges]  = histcounts(data,100);
     
    % valeur moyenne des casiers
    edges = (edges(1:end-1)+edges(2:end))/2
     
    % N en cumulé et pourcentage
    N = cumsum(N)/sum(N)*100;
     
    % affichage
    plotyy(0,0,edges,N)

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : janvier 2017
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merciiiiii beaucoup pour votre aide!!

    cela fonctionne tres bien mais j'ai encore 2 petites questions,

    [N,edges] = histcounts(H0,100); pourquoi 100? sachant que je fais 20 "batons" h=histogram(H0,20,'Normalization','probability')
    et quand j'ecris 20, il y une une petite difference sur les courbes.

    Ensuite, est-il possible de connaitre la valeur sur l'axe des x correspondant à 50% sur la courbe?

    merci encore pour votre aide rapide et efficace

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

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

    Informations forums :
    Inscription : mars 2005
    Messages : 1 742
    Points : 3 153
    Points
    3 153
    Par défaut
    pourquoi pas 100 ?
    c'est totalement arbitraire
    par contre je pense que c'est mieux que la courbe soit plus échantillonnée que l'histogramme

    pour connaitre la valeur de x pour laquelle la probabilité est de 50, quelque chose comme interp1(N, edges, 50) devrait marcher

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/02/2015, 14h47
  2. Réponses: 1
    Dernier message: 21/10/2010, 11h46
  3. Réponses: 0
    Dernier message: 10/10/2008, 12h02
  4. Réponses: 2
    Dernier message: 02/06/2006, 21h17
  5. [TChart] comment remplir un histogramme avec du rouge strié.
    Par :GREG: dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/08/2002, 10h37

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