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 et les boucles..


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 54
    Par défaut Matlab et les boucles..
    Bonjour,

    Je trouve que matlab est très mal adapté pour travailler avec de très longues boucles, rendant la compilation de certain programme très longue (quelques heures pour certain aglo), auriez vous une astuce pour éviter de perdre se temps précieux ?

    Merci

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Bonsoir,

    Il existe de nombreuses fonctions dans MATLAB qui permettent de se passer des boucles et d'optimiser le code, par contre il est difficile de définir un cas général, tu peux soit montrer un code pour qu'on puisse te dire ce qu'on en pense ou alors chercher sur le forum, de nombreux sujets traitent de ce genre de cas de figure.

    Duf

  3. #3
    Membre émérite Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Par défaut
    salut
    Citation Envoyé par mansgueg
    la compilation de certain programme
    Matlab ne compile pas mais est un interpréteur.
    sinon pour répondre à ta question, en effet Matlab est un langage de programmation matricielle et n'est pas du tout optimisé pour les boucles.
    il te faut donc bien construire tes matrices, utiliser les méthodes d'indexages (voir la FAQà ce sujet), ainsi que les fonctions FIND, REPMAT, RESHAPE qui sont souvent utiles.

    edit: tu as d'ailleurs ce tutoriel (en lien depuis la FAQ) qui explique la gestion des matrices.

  4. #4
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    Bonsoir,

    D'ordre général, pour optimiser son programme, passe par la vectorisation des boucles quand c'est possible.

    Mais avant tout, il faut connaitre la répartition du temps d'exécution du programme par instruction. Pour cela, on a recours le plus souvent au profiler.


  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 54
    Par défaut
    Mon code est tout simple pourtant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
         for i=1:1:nombre_echantillons_5cm
              profil(i,1)=interp1(distance_clio,profil_clio,0.05*i,'nearest');
     
         end;
    et cela prend 1 heure environs en sachant que nombre_echantillons_5cm peut valoir 500000 ...

  6. #6
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for i=1:1:nombre_echantillons_5cm
                   profil(i,1)=interp1(distance_clio,profil_clio,0.05*i,'nearest');
              end
    qui peut être écrit comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    i = 1:nombre_echantillons_5cm ;
    profil(:,1)=interp1(distance_clio, profil_clio, 0.05*i,'nearest');
    Et si ça prend énormément de temps c'est normal vu le nombre d'échantillons que tu as.

    Question, Pourquoi ne pas utiliser un pas de 10 par exemple d'un échantillons à un autre. la différence ne se voit pas à mon avis.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    i = 1:10:nombre_echantillons_5cm ;
    profil(:,1)=interp1(distance_clio, profil_clio, 0.05*i,'nearest');
    => temps/10

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 54
    Par défaut
    Ce paramètre est très important et me permet d'être justement précis, je vais prendre mon mal en patience et laisser tourner le PC 24h/24, merci de vos réponses

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

Discussions similaires

  1. Boucle matlab pour les dates : problème de format
    Par diego45 dans le forum MATLAB
    Réponses: 17
    Dernier message: 17/07/2014, 16h49
  2. Check Bound de Simulink arrête les boucles MATLAB
    Par Kickout26 dans le forum Simulink
    Réponses: 2
    Dernier message: 14/01/2014, 17h28
  3. [SQL - procStock ] optimisation du code (éviter les boucles)
    Par luimême dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/10/2005, 17h22
  4. [Tableaux] Problème avec les boucles
    Par speed_man002 dans le forum Langage
    Réponses: 4
    Dernier message: 21/09/2005, 15h42
  5. [C#] Comment eviter les boucles infinies ?
    Par Thomas Lebrun dans le forum C#
    Réponses: 12
    Dernier message: 09/06/2004, 00h04

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