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 :

Comment rendre mes représentations graphiques moins lourdes pour Matlab ?


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Femme Profil pro
    Scientifique
    Inscrit en
    Février 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Scientifique

    Informations forums :
    Inscription : Février 2017
    Messages : 11
    Points : 10
    Points
    10
    Par défaut Comment rendre mes représentations graphiques moins lourdes pour Matlab ?
    Bonjour,
    J'ai une question assez ouverte, j'espère que vous aurez des éléments de réponses pour m'aider à améliorer mon code.
    Je représente des trajectoires de particules simulées avec un outil de modélisation lagrangien.
    Dans mon code, j'entre 2 fichiers, le premier est un fichier netcdf qui permet de (en gros) dessiner le trait de côte avec les bonnes longitudes/latitudes et le second est ma sortie de simulation qui me permet de dessiner les trajectoires (des particules sont lâchée en un point, elles bougent x jours en fonction des courants marins).
    Le code fonctionne bien mais bien sûr, plus il y a de particules, plus son exécution est longue (voire très longue), et il arrive parfois que matlab plante (ma config de pc est suffisante).
    Avez-vous des conseils sur comment améliorer le code pour qu'il soit moins lourd à éxecuter ?
    Est-ce qu'il existe un serveur sur lequel faire tourner des codes un peu lourds comme ça sur Matlab ?
    Merci pour vos conseils, en fonction des réponses et des besoins je vous copie mon code.
    Bonne journée !

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    Citation Envoyé par xcchaossx Voir le message
    Bonjour,
    et il arrive parfois que matlab plante (ma config de pc est suffisante).
    tu peux préciser
    quels plantages ? memoire ?
    quelle config ? (64 bits ? RAM ?)

  3. #3
    Membre à l'essai
    Femme Profil pro
    Scientifique
    Inscrit en
    Février 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Scientifique

    Informations forums :
    Inscription : Février 2017
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Bonjour,
    Aucun message d'erreur, mais une exécution extrêmement longue des scripts lourds.
    Ma config pc > 16Go de RAM et 64 bits
    Le truc c'est que j'ai des fichiers en input assez lourds (le plus lourd fait 5Go)

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    tu utilise les datastore et les tallarray ?
    ce sont des structures spécialement prévues pour gérer des big data

  5. #5
    Membre à l'essai
    Femme Profil pro
    Scientifique
    Inscrit en
    Février 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Scientifique

    Informations forums :
    Inscription : Février 2017
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Merci pour votre retour, je vais regarder cela,
    Voici mon code en attendant si vous avez des idées/conseils (je sais que les fichiers sont lourds/pas évident de les télécharger),
    Je précise que je ne souhaite pas faire de sous-échantillonnage pour ma trajectoire, je veux représenter toutes mes particules, c'est l'idée.

    https://drive.google.com/file/d/1VZJ...ew?usp=sharing
    https://drive.google.com/file/d/1sYm...ew?usp=sharing

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    %% fichiers entres
    %% premier fichier pour dessiner la carte de fond
    nest_filename='fichier_fond.nc';
    %% mon fichier de sortie qui va me permettre de dessiner les trajectoires
    traj_filename='exemple_trajectoire.nc';
     
    %% read in the nest data
    % open nestfile
    ncid = netcdf.open(nest_filename,'NC_NOWRITE');
    % Get the values of Longitude from the nestfile
    varidLon = netcdf.inqVarID(ncid,'Longitude');
    lonAxis = netcdf.getVar(ncid,varidLon);
    % Get the values of Latitude from the nestfile
    varidLat = netcdf.inqVarID(ncid,'Latitude');
    latAxis = netcdf.getVar(ncid,varidLat);
    % Get the values of U-velocity from the nestfile
    varidU = netcdf.inqVarID(ncid,'zu');
    uvel = netcdf.getVar(ncid,varidU);
    %close nestfile
    netcdf.close(ncid);
     
    %% draw the land
     
    %layer of depth. layer = 1 is the surface.
    layer=1;
    %divide velocities in land(value=1) and water(value=0)
    %velocity of land is 2^100
    mask=squeeze(uvel(:,:,layer,1));
    mask(mask<2^100)=0;
    mask(mask==2^100)= 1;
    %draw the land and water
    contourf(lonAxis,latAxis,mask',[0.5 0.5],'linestyle','none');
    %color of the land in rgb color model
    colormap([0.75 0.75 0.75])
     
     
    %% read in the trajectory data
     
    % open trajectory file
    ncid = netcdf.open(traj_filename,'NC_NOWRITE');
    % Get the values of time
    varidTime = netcdf.inqVarID(ncid,'time');
    time = netcdf.getVar(ncid,varidTime);
    % Get the values of Longitude
    varidLon = netcdf.inqVarID(ncid,'lon');
    lon = netcdf.getVar(ncid,varidLon);
    % Get the values of Latitude
    varidLat = netcdf.inqVarID(ncid,'lat');
    lat = netcdf.getVar(ncid,varidLat);
    % Get the values of depths
    varidDepth = netcdf.inqVarID(ncid,'depth');
    depth = netcdf.getVar(ncid,varidDepth);
    % Get the values of status
    varidStatus = netcdf.inqVarID(ncid,'exitcode');
    status = netcdf.getVar(ncid,varidStatus);
    % Get the values of release date (in julian)
    varidrel = netcdf.inqVarID(ncid,'releasedate');
    release = netcdf.getVar(ncid,varidrel);
    %close nestfile
    netcdf.close(ncid);
     
    lat(lat>999) = NaN;
    lon(lon>999) = NaN;
     
    %number of trajectories
    num_traj = size(lat,2);
     
    %different color for each trajectory
    colors=jet(num_traj);
     
    %% plot all the trajectories
     
    hold on;
    for i=1:num_traj
        plot(lon(:,i), lat(:,i),'color','red');
    end
    hold off;
     
    %print title
    title(['nb particules = ',num2str(num_traj),'titre']);
    axis equal;

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    Citation Envoyé par xcchaossx Voir le message
    je sais que les fichiers sont lourds/pas évident de les télécharger
    je confirme
    je ne vais pas télécharger 5 Go !
    tu pourrais pas montrer un exemple d'image obtenue plutôt ?

    Citation Envoyé par xcchaossx Voir le message
    j
    Je précise que je ne souhaite pas faire de sous-échantillonnage pour ma trajectoire, je veux représenter toutes mes particules, c'est l'idée.
    pourquoi ?
    une image pourrait peut être aider à comprendre

    de ce que j'ai compris les outils de big data que je te suggère précédemment vont automatiquement limiter le volume traiter / afficher en l'adaptant au besoin (en cas de zoom par exemple)
    (mais je ne les ai jamais utilisé)

    après je t'avoue avoir du mal à comprendre pourquoi vouloir mettre 5 Go de données sur un graphique (mais c'est peut être pas ça)

Discussions similaires

  1. Comment rendre mes dossiers non cachés ?
    Par tarbala dans le forum Windows XP
    Réponses: 5
    Dernier message: 29/12/2010, 13h01
  2. Réponses: 2
    Dernier message: 15/10/2007, 11h28
  3. programmer moins lourd pour le pross
    Par Isses dans le forum Flash
    Réponses: 2
    Dernier message: 08/08/2006, 11h35

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