Bonjour à tous,

Je viens ici pour vous demander des conseils d'optimisation.

Mon objectif est de faire une figure qui me permet de comparer en un coups d'oeil les histogrammes de distribution d'une grande série de matrices. J'ai donc eu l'idée de créer une nouvelle matrice de taille n*m, ou 'n' correspond au nombre de classes de mon histogramme de distribution et 'm' correspond au nombre de matrices que je dois comparer.

Dans les fait voici la version 'générique' du bout de 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
16
17
18
 
clear all
close all
clc
 
GAMME_HISTO = 0:0.01:1;
HISTO = zeros(numel(GAMME_HISTO),2500);
 
wb = waitbar(0,'Please Wait...','Name','Work in progress...');
 
for n = 1: 2500
    waitbar(n/2500,wb,...
        sprintf('File number: %d/2500',n));
    A = rand(750,1000);
    HISTO(:,n) = histc(A(:),GAMME_HISTO);
end
close(wb)
imagesc(HISTO)
Ça fonctionne bien, ça répond à mon attente. Le soucis, c'est que lorsque je l'intègre à mon code le temps de traitement passe de 3-4 fichiers par secondes à 2-3 secondes par fichiers et lorsque l'on a entre 1000 et 15000 fichiers à traiter c'est long, très long...

Je voulais donc savoir, si vous connaissiez un moyen d'optimiser le temps de calcul, une fonction matlab existante peut être? (J'ai plusieurs toolbox dont image processing) Personnellement je ne vois pas trop comment, le code est déjà réduit à son strict minimum, mais on ne sait jamais! Et sinon tant pis, je ferais tourner mon programme sur une deuxième machine pour pouvoir faire autre chose pendant qu'il tourne...