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 :

Optimisation temps de calcul pour grandes quantités de données (vectorisation) [Débutant]


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur d'études Télécoms
    Inscrit en
    Mars 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur d'études Télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2009
    Messages : 31
    Points : 12
    Points
    12
    Par défaut Optimisation temps de calcul pour grandes quantités de données (vectorisation)
    Bonjour,

    J’ai un petit problème, en fait je travaille sur un programme écrit en matlab.
    Et je voudrai optimiser le temps de calcul qu’effectuent ces lignes de codes suivantes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while t<=length(x)
       tab=[tab (x(t)+y([1:length(y)]))'];
       t=t+1;
    end
    Concrètement j’ai deux tableaux d’entiers :

    Par exemple x = [1 2 6] et y = [2 1 5]
    Et le résultat qui sera dans Tab est [3 2 6 4 3 7 8 7 11].
    [3 2 6]= 1 + [2 1 5] et [4 3 7]= 2 + [2 1 5] et [8 7 11]= 6 + [2 1 5]
    C'est-à-dire qu’on prend chaque valeur de x, on le somme avec toutes les valeurs de y et le résultat est concaténé au fur et à mesure dans Tab.

    De plus le traitement de données que j’effectue s’effectue sur quelques dizaine de milliers de points. Par conséquent je voudrai que quelqu’un m’aide pour une vectorisation possible.

    Je vous remercie d’avance,

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Salut, tu peux déjà utiliser la préallocation de mémoire...

    preallocation

  3. #3
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab = repmat(y,length(x),1)+repmat(x(:),1,size(y,2))
    après il ne reste plus qu'à mettre le résultat dans un vecteur ligne.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur d'études Télécoms
    Inscrit en
    Mars 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur d'études Télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2009
    Messages : 31
    Points : 12
    Points
    12
    Par défaut Impécable
    Merci Magellan, cela m'a permis de reduire mon temps de calcul de plus de 10 sur de grandes séries de données.

    Bonne journée

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur d'études Télécoms
    Inscrit en
    Mars 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur d'études Télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2009
    Messages : 31
    Points : 12
    Points
    12
    Par défaut Nouvelle question
    Bonjour

    Au fait j'ai ce code ci-dessus et je voudrai le remplacer par une autre tournure en utilisant une méthode de vectorisation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i=1:length(Tab_u)
       index_valeurs=find(abs(tab-Tab_u(i))<eps);
       tabpr_U(i)=sum(tab_pr(index_valeurs));
    end
    En effet je veux récupérer les index des occurences de chaque élément de Tab_u dans tab.
    Par la suite ces index sont utilisés pour construire un autre vecteur (tabpr_U).

    Merci d'avance,

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    et avec l'exemple que je t'ai donné, ça ne te donne pas des idées?

    propose quelque chose (même si c'est faux), on t'aidera à le corriger.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Ingénieur d'études Télécoms
    Inscrit en
    Mars 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur d'études Télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2009
    Messages : 31
    Points : 12
    Points
    12
    Par défaut Toujours pas trouvé
    Bonjour,

    En effet je suis toujours bloqué sur le même probleme depuis vendredi et jusqu'à présent je suis ren réflexion. Si je n'y arrive pas, je vous ferai savoir par contre vous auriez pas une petite piste sans pour autant me donner la solution complete si vous l'avez.

    Merci

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/08/2014, 14h12
  2. Temps de calcul pour la fonction cos
    Par nexusflame dans le forum Débuter
    Réponses: 5
    Dernier message: 22/09/2010, 21h35
  3. Réponses: 3
    Dernier message: 11/10/2008, 03h29
  4. optimisation temps de calcul: appel à DLL
    Par oliv23 dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 11/03/2008, 13h18
  5. Amélioration du temps de calcul pour creer des figures
    Par comoliv02 dans le forum MATLAB
    Réponses: 2
    Dernier message: 17/10/2007, 11h23

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