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 :

MATLAB lent avec graphique scatter (matrice 8000 * 2000)


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Points : 2
    Points
    2
    Par défaut MATLAB lent avec graphique scatter (matrice 8000 * 2000)
    Bonjour au forum,

    J'utilise Matlab dans le domaine de l'océanographie depuis quelques mois. Mes connaissances sont donc limitées en programmation.

    Lorsque je trace une section (fonction scatter) d'une matrice de données de 8000 * 200, je n'arrive pas à sauvegarder ma figure (sous toutes les extensions imaginables (jpeg, png, tif, ai...). A vrai dire, MATLAB semble long lorsque je souhaite la redimensionner ou autre opération (même un déplacement simple de la fenêtre).

    Je précise que j'ai une machine possédant 16Go de RAM, Windows 64-bit. Pourtant la mémoire utilisée par Matlab semble faible (500Mo).

    Sauriez-vous comment faire pour sauvegarder ? ou simplement accélérer Matlab ?

    Merci par avance,
    Gaël.

  2. #2
    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 : 52 884
    Points
    52 884
    Par défaut
    La fonction scatter ne doit pas être utilisée avec un aussi grand nombre de données.

    En effet, elle crée autant d'objets graphiques Patch que de données à tracer, le rendu graphique est donc très lent.
    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)

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Merci.
    Merci DUT.
    Réponse rapide et claire.
    Je pense cependant que c'est très utile à savoir pour un débutant.
    Je m'en vais utiliser une fonction plus adaptée.
    Gaël.

  4. #4
    Membre confirmé
    Homme Profil pro
    Éternel universitaire
    Inscrit en
    Avril 2012
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Éternel universitaire

    Informations forums :
    Inscription : Avril 2012
    Messages : 421
    Points : 639
    Points
    639
    Par défaut
    Ma contribution : Je pense que tu peux substituer ta fonction scatter avec la fonction plot et modifier la propriété des lignes et ajouter des marqueurs. Je pense que tu n'utiliseras alors pas les patchs (à confirmer)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plot(ce_que_tu_veux,'LineStyle','none','Marker','.')

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Ok Merci DonutFou.
    Comme je l'ai dit je suis débutant en matière de programmation et cette fonction plot me gène car je n'arrive pas a attribuer un dégradé de couleur suivant ma variable Z...
    Par contre il est vrai que l'image s'affiche beaucoup plus vite, est "sauvegardable" voire éditable ... Donc c'est une bonne solution pour éviter d'utiliser la fonction scatter.
    Merci,
    G.


  6. #6
    Membre confirmé
    Homme Profil pro
    Éternel universitaire
    Inscrit en
    Avril 2012
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Éternel universitaire

    Informations forums :
    Inscription : Avril 2012
    Messages : 421
    Points : 639
    Points
    639
    Par défaut
    Ce que tu peux faire, c'est tracer chaque point dans une boucle qui va changer la couleur en fonction de ta valeur. Ça devient vraiment du bidouillage, ça sera plus long à tracer mais ta figure sera toujours exportable.
    Imaginons que tes coordonnées soient dans a et b et les z soient toujours compris entre 0 et 1 (sinon tu normalises)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    a=rand(1,20);
    b=rand(1,20);
     
    figure(1)
    scatter(a,b,20,abs(a-b),'o');
     
    figure(2)
    [sx,sy]=size(a);
     
    hold on 
    for i=1:sx*sy 
        plot(a(i),b(i),'Color',[abs(a(i)-b(i)) 1-abs(a(i)-b(i)) 1-abs(a(i)-b(i))],'marker','.')
    end
    Les deux figures sont équivalentes.
    Pour les couleurs, si tu veux autre chose, tu changes ce qu'il y a entre crochet. La gestion des couleurs ici

Discussions similaires

  1. Ouvrir matrice matlab[.txt] avec ImageJ
    Par hakimetudiant dans le forum ImageJ
    Réponses: 4
    Dernier message: 04/05/2015, 14h44
  2. problème avec graphique dans état access
    Par petitmic dans le forum Access
    Réponses: 5
    Dernier message: 07/09/2005, 14h55
  3. Impression très très lente avec Samba
    Par Daav dans le forum Réseau
    Réponses: 4
    Dernier message: 29/12/2004, 18h45
  4. Procedure stockée avec ntext dans SQL server 2000
    Par nagababa dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/11/2003, 20h46

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