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 du Club
    Inscrit en
    Septembre 2009
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 343
    Points : 44
    Points
    44
    Par défaut optimisation de code
    Je débute en Matlab et j’ai un problème d’optimisation de code:
    J’utilise ce code la :
    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
     
    load('netHSV.mat');
    ImageReel0  = imread('5.jpg');
    Imagesortie=zeros(512,384);
    ImageReel1=imresize(ImageReel0,[512 384],'nearest');
    ImageReel=rgb2hsv(ImageReel1);
     
    tic
    for i=1:512%parcour row
    for j=1:384%parcour col
        H=double(ImageReel(i,j,1)*1000);
        S=double(ImageReel(i,j,2)*1000);
        V=double(ImageReel(i,j,3)*1000);
        p=[H S V]';
        Imagesortie=(sim(net,p)>=0.6);
    end
    end
    toc
     figure, imshow(Imagesortie)
    Mais il me pose un problème de temps (il est trop gourmand en temps de calcul). J’ai essayé de proposer une solution pour m’optimiser du temps qui permet d’éviter les deux boucles et voila le code que j’utilise :
    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
     
    load('netHSV.mat'); 
    ImageReel0  = imread('5.jpg');
    Imagesortie=zeros(512,384);
    %For each Image (Original and Masque):
    ImageReel1=imresize(ImageReel0,[512,384],'nearest');
    ImageReel=rgb2hsv(ImageReel1);
     tic;
        H=double(ImageReel(:,:,1)*1000);
        S=double(ImageReel(:,:,2)*1000);
        V=double(ImageReel(:,:,3)*1000);
        p=[H S V]';
        Imagesortie=(sim(net,p)>=0.6);
        figure, imshow(Imagesortie)
        toc
    mais il me lance cet erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ??? Error using ==> network.sim at 178
    Inputs are incorrectly sized for network.
    Matrix must have 3 rows.
    Pouvez-vous m’aidez à corriger cet erreur ou bien à proposer une autre solution afin d'optimisez le code afin de gagner du temps ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    C'est normal dans ton premier code, H, S et V sont de simples scalaires, et donc p=[H S V]'; est un vecteur colonne de trois valeurs.
    Mais dans ton deuxième, ce sont des matrices 512x384, et donc p=[H S V]'; n'a plus 3 lignes, mais 1152.
    Donc essai plutôt p = [H(:) S(:) V(:)].';puis pour obtenir ta matrice Imagesortie, tu pourra utiliser reshape.

    Petite remarque: dans ton premier code, ce serait plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Imagesortie(i,j)=(sim(net,p)>=0.6);

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