fonction plot + vitesse d'execution
Bonjour,
J'ai en entrée une matrice (environ 2000*100) en niveaux de gris représentant une image echographique : je souhaite l'afficher 'en éventail' (représentation convexe) dans une premier temps : il y aura donc des 'trous'.
En gros on prend chaque ligne de la matrice d'entrée et on les mets cote a cote suivant un arc de cercle.
Voici une partie du code que j'utilise pour l'instant :
Code:
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
|
FinalMatrix=zeros(400,400);
alpha=60;
StartAngle=((270-alpha/2)*2*pi)/360;
EndAngle=((270+alpha/2)*2*pi)/360;
PixPerLine=2000;
NumberOfLines=100;
theta=linspace(StartAngle,EndAngle,NumberOfLines);
Circle1.x=150+50*cos(theta);
Circle1.y=130+50*sin(theta);
Circle2.x=150+30*cos(theta);
Circle2.y=130+30*sin(theta);
figure('Position',[500 200 800 800]),hold on,xlim([125 175]),ylim([75 105]);
colormap(gray);
image(FinalMatrix);
for i=1:size(theta,2)
StartPoint.x=Circle1.x(1,i);StartPoint.y=Circle1.y(1,i);
EndPoint.x=Circle2.x(1,i);EndPoint.y=Circle2.y(1,i);
LineTest{i}.x=linspace(StartPoint.x,EndPoint.x,PixPerLine);
LineTest{i}.y=linspace(StartPoint.y,EndPoint.y,PixPerLine);
tic
for j=size(LineTest{1}.x,2):-1:1
MyColor=StartMat(PixPerLine-j+1,i);
plot(LineTest{i}.x(1,j),LineTest{i}.y(1,j),'Color',[MyColor MyColor MyColor]);
end
toc
end |
Apres quelques tests avec 'tic toc' c'est la fonction plot qui rend l'execution longue (environ 2min pour la taille reelle de la matrice). Alors qu'avec image, imagesc ou imshow le resultat est intentanné pour le meme nb de ligne/pixel par ligne.
Y'a t-il un moyen plus efficace (=moins de temps) sous matlab pour construire plusieurs lignes avec une couleur différente pour chaque point?