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 :

surfm et les NaN


Sujet :

MATLAB

  1. #1
    Membre régulier Avatar de Flaherty Mc Coillean
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Décembre 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 108
    Points : 75
    Points
    75
    Par défaut surfm et les NaN
    Bonjour à tous !

    J'ai un petit soucis avec deux codes quasi identique qui ne donnent pas la même chose...

    Je souhaite utiliser surfm pour représenter mes données en projection Mercator dans mes matrices j'ai beaucoup de NaN car seules quelques données m'intéressent. J'aimerais que les NaN soient transparents, ça me le fait pour un des programmes mais pas pour l'autre...

    Cas n°1 : NaN->transparent :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    ...
     
    B=Temp;
    B(:)=NaN;
     
    ind=find(Temp>0);
    z=size(ind);
    for i=1:z(1)
        k=1;
        while Temp(ind(i))<temp(k)
            Tmax(i)=temp(k);
            Amin(i)=alt(k);
            k=k+1;
        end
        Tmin(i)=temp(k);
        Amax(i)=alt(k);
     
        a(i)=(Amin(i)-Amax(i))/(Tmin(i)-Tmax(i));
        b(i)=Amin(i)-(a(i)*Tmin(i));
        Alt(i)=a(i)*Temp(ind(i))+b(i);
     
        B(ind(i))=Alt(i);
    end
    load coastline_Etna.mat
    load lat_lon_Etna.mat
    scrsz=get(0,'ScreenSize');
     
    fig=figure('Position',[100 (scrsz(4)/2) (scrsz(3)/2) (scrsz(4)/2)]);
    axesm('MapProjection','mercator','Grid','on',...
        'MapLatLimit',[36 39], 'MapLonLimit', [13 17],...
        'PLineLocation',(36:1:39),'MLineLocation',(13:1:17),...
        'MeridianLabel', 'on','ParallelLabel', 'on',...
        'FontSize',12,'FontWeight','Bold');
    set(gca,'Visible','off')
    surfm(LAT,LON,B)
    colorbar('FontSize',12,'FontWeight','Bold');
    hold on
    plotm(lat,lon,'Color','Black','LineWidth',1)
     
    saveas(fig,'D:\Etna\hauteur.png','png')
    résultat à gauche sur l'imagette

    Cas n°2 : NaN->bleu marine :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    ...
     
    B=Temp;
    B(:)=NaN;
     
    ind=find(Temp>0);
    z=size(ind);
    for i=1:z(1)
        k=1;
        while Temp(ind(i))<temp(k)
            Tmax(i)=temp(k);
            Amin(i)=alt(k);
            k=k+1;
        end
        Tmin(i)=temp(k);
        Amax(i)=alt(k);
     
        a(i)=(Amin(i)-Amax(i))/(Tmin(i)-Tmax(i));
        b(i)=Amin(i)-(a(i)*Tmin(i));
        Alt(i)=a(i)*Temp(ind(i))+b(i);
     
        B(ind(i))=Alt(i);
    end
     
    load pix2latlon.mat
    LAT=latitude(3248:3598,1500:2400);
    LON=longitude(3248:3598,1500:2400);
     
    load coastline.mat
     
    scrsz=get(0,'ScreenSize');
     
    fig=figure('Position',[100 (scrsz(4)/2) (scrsz(3)/2) (scrsz(4)/2)]);
    axesm('MapProjection','mercator','Grid','on',...
        'MapLatLimit',[50 70], 'MapLonLimit', [-30 0],...
        'PLineLocation',(50:5:70),'MLineLocation',(-30:5:0),...
        'MeridianLabel', 'on','ParallelLabel', 'on',...
        'FontSize',12,'FontWeight','Bold');
    set(gca,'Visible','off')
    surfm(LAT,LON,B)
    colorbar('FontSize',12,'FontWeight','Bold');
    hold on
    plotm(lat,lon,'Color','Black','LineWidth',1)
     
    saveas(fig,'D:\Eyjaf\hauteur_Eyjaf.png','png')
    resultat à droite sur l'imagette...

    Comment faire pour avoir la même transparence des NaN dans les deux cas ?

    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    surfm(LAT,LON,B,'alphadata',~isnan(B))
    Mais ça efface toute la figure :/
    Images attachées Images attachées  
    C'est moi où il fait chaud là ?

  2. #2
    Membre régulier Avatar de Flaherty Mc Coillean
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Décembre 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 108
    Points : 75
    Points
    75
    Par défaut
    Bon j'ai fini par trouver...

    Il faut rajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    hS=surfm(LAT,LON,B)
    set(hS, 'AlphaData', double(~isnan(B)), ...
        'AlphaDataMapping','none', ...
        'FaceAlpha','texturemap');
    Mais ça n'explique pas pourquoi ça fonctionne dans le premier cas...
    C'est moi où il fait chaud là ?

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

Discussions similaires

  1. [image] Différencier les NaN
    Par thecrazydonut dans le forum Images
    Réponses: 2
    Dernier message: 02/10/2013, 17h26
  2. [Débutant] ne pas garder les NaN dans mon vecteur
    Par membreComplexe12 dans le forum MATLAB
    Réponses: 2
    Dernier message: 26/10/2011, 14h58
  3. Calculer la cross-covariance en ignorant les NaN ?
    Par helaaa dans le forum MATLAB
    Réponses: 1
    Dernier message: 24/08/2011, 11h16
  4. Réponses: 1
    Dernier message: 06/08/2008, 12h04
  5. Ignorer les NaNs dans norm()
    Par samplaid dans le forum MATLAB
    Réponses: 3
    Dernier message: 12/12/2006, 13h18

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