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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 é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.

  6. #6
    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 : 46
    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

  7. #7
    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

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