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 :

Amelioration de programme


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 15
    Par défaut Amelioration de programme
    Bonjour a tous,
    J'ai fait un programme matlab qui permet de faire le graphe de gabriel sur des figures rentrées par un nuages de points ou par des coordonnées. J'aurais voulu savoir si ce programme vous parraissait juste et si c'est le cas si on ne peut pas l'ameliorer.
    Merci par avance pour votre aide.
    Je mets juste la fonction, si vous avez besoin du programme en entier demandez le, je vous le donnerais :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    function GG=GrapheGabriel(x,y,Triang)
     
    NbTr=size(Triang,1);
    MC=[];
    for l=1:NbTr
        Tr=Triang(l,: );
        i=Tr(1,1);j=Tr(1,2);k=Tr(1,3);
        MC=[MC;[i,j];[j,k];[k,i] ];   
    end;
    SML=sort(MC,2); % 
    SML=sortrows(SML);
    N=MC(1,: );
    n=size(MC,1);
    for i=2:n 
        if MC(i-1,: )==MC(i,: ) ;
        else N=[N;MC(i,: )]; end;
    end;  
     
    GG=[];
    n=size(MC,1);
    for k=1:n
        Cote=MC(k,: );i=Cote(1);j=Cote(2);
        n=numel(x);
        A=[x(i) y(i)]; B=[x(j) y(j)]; 
        M=1/2*(A+B);
        R=(1/2)*norm(B-A);
        Go=1;k=0;Bool=0;
        while Go
            k=k+1;
            if ismember(k,[i j]); 
            else
              C=[x(k) y(k)];d=norm(C-M);Bool=d<R; 
            end;    
            Go=not(Bool) & (k<n);
        end;    
        if not(Bool) GG=[GG;Cote];end;
    end;  
    clf;
    plot(x,y,'.r');
     
    n=size(GG,1);
    for k=1:n
        i=GG(k,1);j=GG(k,2);
        plot([x(i) x(j)],[y(i) y(j)],'-b');hold on;
    end;

  2. #2
    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
    Pour avoir une idée comment MATLAB te suggère de l'améliorer , tu peux utiliser le mlint (Check M-files for possible problems)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mlint('GrapheGabriel.m')
    Ce qui te donnera déjà des indications comme:

    L 8 (C 5-6): 'MC' might be growing inside a loop. Consider preallocating for speed.
    L 11 (C 1-3): The value assigned here to variable 'SML' might be unused.
    L 16 (C 10): 'N' might be growing inside a loop. Consider preallocating for speed.
    L 27 (C 10): Loop index 'k' is changed inside a FOR loop.
    L 29 (C 9): Loop index 'k' is changed inside a FOR loop.
    L 36 (C 18-19): 'GG' might be growing inside a loop. Consider preallocating for speed.
    L 36 (C 18): For better readability, use newline, semicolon, or comma before this statement.
    Tapes pour avoir plus de détails sur cette fonctionnalité.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 15
    Par défaut
    Merci beaucoup pour votre aide, j'ai fait quelques modifications, mais je me demandais pourquoi matlab ne m'a pas donné les mêmes indications que vous?
    Encore merci je ne connaissais pas cette fonction.

  4. #4
    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 clara1815 Voir le message
    je me demandais pourquoi matlab ne m'a pas donné les mêmes indications que vous?
    Les messages indiqués par le M-lint peuvent varier d'une version MATLAB à une autre. Moi j'ai utilisé la version actuelle de MATLAB la R2008b. De plus il faut savoir qu'on peut controler les parametres du Mlint dans les Preferences.
    En allant dans File-> Preferences -> M-Lint (depuis toutes les versions égales ou supérieures à la R2006b) tu verras qu'il y a une cinquante de cases que tu peux cocher ou décocher à ta guise.

Discussions similaires

  1. [OpenOffice][Tableur] Demande d'aide pour ameliorer un petit programme
    Par bordelaplage dans le forum OpenOffice & LibreOffice
    Réponses: 3
    Dernier message: 07/01/2014, 10h19
  2. problème de makefile et amelioration d'un programme
    Par rock_and_drink dans le forum C
    Réponses: 3
    Dernier message: 09/01/2013, 09h49
  3. Réponses: 2
    Dernier message: 21/12/2008, 22h57
  4. Ameliorer mon programme paint?
    Par pirlo07 dans le forum Delphi
    Réponses: 2
    Dernier message: 21/05/2007, 16h42

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