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 :

Précision sur pre-allocation mémoire et sum([C{1,:}])


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 38
    Points : 30
    Points
    30
    Par défaut Précision sur pre-allocation mémoire et sum([C{1,:}])
    Bonjour,

    Mon programme dispose d'une douzaine de tableaux de n cellules contenant des matrices de 576x576, des nombres réels et des NaN. Les tableaux possèdent une ligne et n colones.
    Je pensais qu'il était nécessaire de pré-allouer mes tableaux (définir le nombre de cellules de mes tableaux dès le début) afin de gagner en temps de calcul, mais le résultat est le même à la dizième de seconde près.

    Par exemple pour pré-allouer je réalise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wall = cell(1,numel(wall_list));
    Cela est-il différent entre une matrice et un tableau ou alors mon programme est trop petit pour s'apercevoir de la différence de temps.

    Un autre point que je voudrais éclaircir :
    Cette ligne ne fonctionne pas sur ma version de Matlab(7.6.0.324(R2008a)).
    Est-ce normal?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 58
    Points : 69
    Points
    69
    Par défaut
    Je pense que ton problème vient du fait que tu créer un tableau de cellules mais les cellules sont... vides.
    La matrice YxY que tu veux créer n'est pas dans ta cellule . Donc quand tu vas copier tes données dans ces cellules, il va étendre la matrice, d'où le même temps que sans allocation.

    Je pense que tu peux essayer qqch du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    wall = cell(1,numel(wall_list));
    for i =1:length(wall)
    wall{i}=ones(Y,Y)*NaN;
    end
    Avec ça tu remplis directement tes cellules avec une matrice. Accéder aux élément de chaque matrice pour les modifier est beaucoup plus rapide que d'étendre la matrice.


    Pour la deuxième partie, ça marche sur la 2010a et la 2009b...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 38
    Points : 30
    Points
    30
    Par défaut
    Merci pour tes réponses.
    je vais essayer

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

Discussions similaires

  1. Probléme étrange sur l'allocation mémoire
    Par yann458 dans le forum C++
    Réponses: 14
    Dernier message: 18/07/2014, 14h07
  2. pre allocation mémoire pour liste d'objet (poo)
    Par masson.cle dans le forum MATLAB
    Réponses: 0
    Dernier message: 19/05/2012, 22h26
  3. Réponses: 17
    Dernier message: 27/03/2009, 17h09
  4. Petite question rapide sur allocation mémoire
    Par adn013 dans le forum Langage
    Réponses: 5
    Dernier message: 11/06/2007, 16h10
  5. Question sur l'allocation de mémoire
    Par Fonzy007 dans le forum Linux
    Réponses: 8
    Dernier message: 26/12/2006, 09h29

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