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 :

Probleme creation figure: Error using ==> figure


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 25
    Points : 11
    Points
    11
    Par défaut Probleme creation figure: Error using ==> figure
    Bonjour a tous,

    Je cherche a créer une carte de valeur de réflectance mesurée par le satellite MODIS au Nord de l'Australie. Pour cela je veux utiliser un pcolor en lisant tout simplement 3 fichier texte contenant:
    - des latitude
    - des longitudes
    - et des valeurs de réflectance correspondant aux couples de lat, long

    La zone à cartographier est immense donc les fichiers txt sont lourds: 50 871 ko chacun.. et mon ordi est vieux et peu puissant.

    Quand je lance MATLAB(7.0), j'ai l'erreur suivante:
    ??? Error using ==> figure
    Attempt to write a locked object.
    Est ce que quelqu'un a déjà eu ce genre de problème et est ce que c'est une erreur liée aux capacités de mon ordi?
    Est-ce que les fichiers à lire sont particulièrement lourds pour un pcolor?

    Merci d'avance pour toute aide!

  2. #2
    Invité
    Invité(e)

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Merci Winjerome pour ta réponse.
    Oui, j'ai essayé de tapper feature('usegenericopengl',1), mais cela n'a rien changé à mon probleme: j'obtient une erruer de type : "Attempt to write a locked object" à chaque fois...

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Essaie en diminuant la quantité de données à afficher en prenant un point sur cinq, voire sur dix ou sur cent.
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Merci Dut. Il y a t'il une façon simple de sélectionner les données tous les 1/10 ou 1/1000 ou est ce que je dois créer une boucle for -- end?

    Voila mon code actuel pour créer les cartes:

    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
        Lon=load([rep 'Longitude.txt']);
        Lat=load([rep 'Latitude.txt']);  
        CN=load([rep 'sur_refl_b01_1.txt']);  
        ReflB1=CN/10000/pi; % reflectance
     
        %Grid data
        nlon=1;
        for t=2:size(Lat)
            if(Lat(t)~=Lat(t-1)), break; end;
            nlon=nlon+1;
        end
        nlat=length(Lat)/nlon;
        Xp=zeros(nlat,nlon); 
        Yp=zeros(nlat,nlon);
        RB1=zeros(nlat,nlon);
     
        for j=1:nlat
            Xp(j,1:nlon)=Lon((j-1)*nlon+1:j*nlon);
            Yp(j,1:nlon)=Lat((j-1)*nlon+1:j*nlon);
            for i=1:nlon
                ReflB1t=ReflB1((j-1)*nlon+i);
                RB1(j,i) =ReflB1t; % reflectance à cartographier
            end       
        end
     
         fig=figure(1);clf %% Polynomiale - Turb
         set(fig, 'visible', 'off')
         pcolor(Xp,Yp,RB1); shading interp; 
         caxis([0 0.05]) ; axis equal tight ; colormap(jet2);colorbar('FontSize',20,'Fontweight','bold');
         saveas(gcf,[rep 'RB1_Insitu_Prof.png'],'png');
    Merci d'avance,
    Caroline

  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 302
    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 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Quelles sont les dimensions des variables Xp, Yp et RB1 ?

    Si ce sont des matrices MxN, tu peux faire ceci juste avant le code correspondant à l'affichage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Xp = Xp(1:100:end,1:100:end);
    Pareil pour les deux autres variables.
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  7. #7
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Merci Dut pour ta réponse,

    Entre temps mon boulot m'a payé un ordi plus puissant et le code fonctionne maintenant. C’était donc bien un problème de mémoire de mon ancien ordi.

    Une autre question: est t'il possible de lancer le même programme plusieurs fois en même temps. Je m'explique: je dois traiter des milliers d'images satellites avec le même programme et je voudrais gagner du temps.
    Est ce que je peux ouvrir 4 fenetres matlab en même temps et lancer le même programme (expl: traitement image(rep).m) sur differents dossiers: (rep1 contenant les images 1à500, 2: 500 à 1000, 3: 1000 à 1500 et 4: 1500 à 2000):

    traitementImages(rep1)
    traitementImages(rep2)
    traitementImages(rep3)
    traitementImages(rep4)

    merci bcp,
    Caro

  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 302
    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 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Théoriquement, tu devrais pouvoir lancer 4 fois MATLAB et faire exécuter 4 fois le même script sur 4 jeux de données différents.

    Par contre, il y a quelques limitations

    Ces différentes sessions ne pourront pas communiquer entre-elles (du moins pas de façon simple à ma connaissance).

    La quantité totale de mémoire disponible sera moins importante car chaque session de MATLAB à besoin d'une quantité significative de mémoire. Par exemple, dans les 200Mo avec la R2009a sous Windows 7. Donc si tu lances 4 sessions de MATLAB, tu as déjà pratiquement 1 Go de mémoire en moins. On peut diminuer la taille d'une session MATLAB en utilisant l'argument -nodesktop ou -nojvm selon l'utilité de Java ou non (respectivement 35 et 70 Mo avec la même configuration que citée précédemment)

    Les sessions seront aussi en concurrence pour l'attribution des blocs de mémoires disponibles. Si chaque session a besoin de stocker des grosses matrices, l'erreur "Out of Memory" risque fort de survenir.
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  9. #9
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    Merci Dut,

    J'ai essayé et cela ne me fera pas gagner du temps.
    Les 4 programmes tournent en même temps mais les taches/fonctions s'effectuent les unes après les autres et non simultanément sur chacune des sessions matlab ...

    Donc il n'y a plus qu'à prendre mon mal en patience!

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

Discussions similaires

  1. probleme de réseau windows linux et figure matlab
    Par clement.rey dans le forum Windows XP
    Réponses: 1
    Dernier message: 22/07/2008, 19h18
  2. Newbie PgSQL->Probleme Creation de table avec FOREIGN KEY
    Par ralkif dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 07/03/2006, 21h59
  3. probleme creation setup
    Par asiatik91 dans le forum Installation, Déploiement et Sécurité
    Réponses: 5
    Dernier message: 19/11/2005, 21h53
  4. access2000, probleme creation relations de tables
    Par nono_60 dans le forum Access
    Réponses: 2
    Dernier message: 12/09/2005, 22h50
  5. probleme creation projet
    Par choupinet612 dans le forum XMLRAD
    Réponses: 2
    Dernier message: 05/11/2004, 10h11

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