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 de code


Sujet :

MATLAB

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Mai 2006
    Messages : 70
    Par défaut Optimisation de code
    J'ai cette commande Matlab à optimiser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    A(:,find(A(1,:)<=0))=[];
    où A est une matrice (3,n), et n est assez grand. Le but étant de retirer les colonnes de A dont le premier élément est nul. Cette instruction est répétée un très grand nombre de fois. Matlab me propose d'utiliser "logical" à la place, mais je ne vois pas trop comment. Que puis-je faire ?

    Merci !

  2. #2
    Membre émérite
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    A(:,A(1,:)<=0)=[];
    ou bien

  3. #3
    Membre émérite
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Par défaut
    La deuxieme est plus rapide que la premiere:
    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
     
    clc
    A=randn(3,10);
    b=A;
    tic
    for i=1:10000
        A(:,A(1,:)<=0)=[];
        A=b;
    end
    toc
    tic
    for i=1:10000
        A=A(:,A(1,:)>0);
        A=b;
    end
    toc
    clear
    ca donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Elapsed time is 0.451000 seconds.
    Elapsed time is 0.150000 seconds.
    >>

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Mai 2006
    Messages : 70
    Par défaut ok merci
    et pourquoi le A=b ?

  5. #5
    Membre Expert
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Par défaut
    Citation Envoyé par S4sha
    J'ai cette commande Matlab à optimiser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    A(:,find(A(1,:)<=0))=[];
    où A est une matrice (3,n), et n est assez grand. Le but étant de retirer les colonnes de A dont le premier élément est nul. Cette instruction est répétée un très grand nombre de fois. Matlab me propose d'utiliser "logical" à la place, mais je ne vois pas trop comment. Que puis-je faire ?

    Merci !
    Tu trouveras en plus du code précédent une solution relative aux boucle for et la notion de logical:
    http://www.mathworks.com/support/sol...ution=1-35LRTD

  6. #6
    Invité de passage
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1
    Par défaut Re: optimisation de code
    Bonjour,

    Une syntaxe différente pour optimiser X2 le temps d'exécution :

    Actuel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    A=2.458521*randn(3,6665535);
    tic
    A(:,find(A(1,:)<=0))=[];
    toc
    Proposition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    A=2.458521*randn(3,6665535);
    tic
    A=A(A(1,:)>0);
    toc
    Donne sur ma machine les temps d'éxécution suivants :

    elapsed_time =

    1.7030

    elapsed_time =

    0.8120
    Ce gain suffit-il à résoudre votre problème ?

    Bon courage
    Créativo

  7. #7
    Membre émérite
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Par défaut
    Citation Envoyé par S4sha
    et pourquoi le A=b ?
    Bonjour, le programme que je vous ai donné est seulement pour comparer entre les deux methodes en temps d'execution.

Discussions similaires

  1. optimiser le code d'une fonction
    Par yanis97 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/07/2005, 08h41
  2. Optimiser mon code ASP/HTML
    Par ahage4x4 dans le forum ASP
    Réponses: 7
    Dernier message: 30/05/2005, 10h29
  3. optimiser le code
    Par bibi2607 dans le forum ASP
    Réponses: 3
    Dernier message: 03/02/2005, 14h30
  4. syntaxe et optimisation de codes
    Par elitol dans le forum Langage SQL
    Réponses: 18
    Dernier message: 12/08/2004, 11h54
  5. optimisation du code et var globales
    Par tigrou2405 dans le forum ASP
    Réponses: 2
    Dernier message: 23/01/2004, 10h59

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