quelques codes pour matlab et courbes 2D 3D image

xes abscisses d’un graphique ?

Les objets de type Axes ne possèdent pas de propriété permettant d’incliner les labels des repères de l’axe des abscisses d’un graphique.

Il existe néanmoins plusieurs contributions disponibles sur le File EXchange qui répondent à ce besoin :

—————

Comment mettre une étiquette à mes points ?

x=rand(3,1);
y=rand(3,1);

figure
plot(x,y,'r+');

str=num2str([1:numel(x)].','%1d'); % ATTENTION le premier argument de NUM2STR doit être un vecteur colonne
text(x+0.01,y+0.01,str) % Le décalage de 0.01 est arbitraire ici.
------------
omment tracer une ligne dont la couleur varie ?
x = rand(3,1);
y = rand(3,1);

figure
subplot(2,1,1)
plot(x,y)

subplot(2,1,2)

patch('xdata',[x;x(end:-1:1)],...
      'ydata',[y;y(end:-1:1)],...
      'facecolor','interp', ...
      'edgecolor','interp',...
      'facevertexcdata',[y;y(end:-1:1)])
-------------
omment animer le tracé d'une courbe ?
% Génération des données
th=0:0.02:10*pi;
y=sin(th);

% Création de l'objet Figure contenant les tracés
fig=figure;

% Première objet Axes  est tracée la courbe directe
subplot(2,1,1)
% Tracé de la courbe
plot(th,y,'r-')
% Ajustement des limites de l'objet Axes
xlim([min(th) max(th)])
ylim([min(y) max(y)])

% Second objet Axes  est tracée la courbe animée
subplot(2,1,2)

% Modification de la propriété DoubleBuffer de l'objet Figure pour
% éviter le clignotement de la fenêtre
% NECESSAIRE POUR TOUTE ANIMATION
set(fig,'doublebuffer','on')

% Tracé du premier point de la courbe
% et récupération de l'identifiant (handle) p de l'objet Line crée.
p=plot(th(1),y(1),'r-');
% Ajustement des limites de l'objet Axes
xlim([min(th) max(th)])
ylim([min(y) max(y)])

% On boucle sur le nombre de points à tracer. 
% On démarre à 2 puisque le premier est déjà tracé
for n=2:numel(th)

  % Ajout des points de la courbe au fur et à mesure
  % en utilisant la combinaison SET + identifiant (handle)
  set(p,'xdata',th(1:n),'ydata',y(1:n));
  % Forçage de l'affichage du tracé
  drawnow

end
-------------
Comment récupérer les valeurs de données tracées ?
Dans tous les cas, il faut utiliser la fonction FINDOBJ pour récupérer l'identifiant de l'objet dont on veut
		récupérer les données.

Pour les objets de type Line (nuage de points ou lignes), Surface ou Mesh, on récupère les propriétés XDATA, YDATA et ZDATA

Pour les objets de type Image, on récupère la propriété CDATA

Pour les objets de type Patch, on récupère, soit les propriétés XDATA, YDATA et ZDATA, soit les propriétés VERTICES et FACES


[X,Y,Z] = peaks(20)
surf(X,Y,Z);

h=findobj('type','surf');
xx=get(h,'xdata')
yy=get(h,'ydata')

zz=get(h,'zdata')
--------------------
Comment redimensionner une image ?
La première solution consiste à utiliser la fonction IMRESIZE contenue dans l'Image Processing Toolbox.

La deuxième solution utilise l'indexage des matrices. Puisqu'une
image est une matrice 2D ou 3D (RGB), il est très simple de diminuer la
taille d'une image en jouant sur l'indexage. Par exemple, pour diminuer
par deux la taille d'une image 2D, il suffit de ne conserver qu'un pixel sur deux


img=rand(150,200); % Une image 2D aléatoire
size(img)

ans =

   150   200

img=img(1:2:end,1:2:end);

size(img)

ans =

    75   100

--------Pour une image 3D (RGB), le code devient :
img=rand(150,200,3); % Une image 3D (RGB) aléatoire
size(img)

ans =

   150   200     3

img=img(1:2:end,1:2:end,:);

size(img)

ans =

    75   100     3
-----
On remarque que cette solution utilisant l'indexage se limite à des facteurs de réductions/agrandissement entier.

La troisième solution utilise les fonctions d'interpolation.

Soit INTERP2 pour diminuer par deux la taille d'une image 2D :
img = rand(150,200); % Une image 2D aléatoire
size(img)

ans =

   150   200

[c,r ] = size(img); % Récupération des 2 dimensions de l'image

[ci,ri] = meshgrid(1:2:r,1:2:c); % Génération de la grille d'interpolation

img = interp2(img,ci,ri); % Interpolation des valeurs des pixels

size(img)

ans =

    75   100

Soit INTERP3 pour diminuer par deux la taille d'une image 3D :
img = rand(150,200,3); % Une image 3D (RGB) aléatoire
 size(img)

ans =

   150   200     3

[c,r,p] = size(img); % Récupération des 3 dimensions de l'image

[ci,ri,pi] = meshgrid(1:2:r,1:2:c,1:p); % Génération de la grille d'interpolation

img = interp3(img,ci,ri,pi); % Interpolation des valeurs des pixels du plan R

size(img)

 ans =

ans =

    75   100     3

1 Response to “quelques codes pour matlab et courbes 2D 3D image”


  1. 1 soula amina 14 janvier 2011 à 1:18

    bonjour,
    a ce que si possible tracer des courbes de fonctions x, en matlab, mais la fonction x « ni pas défini » c’est a dire ne pas connu, mais on a les condition sur cette fonction


Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s




I MOVED THIS BLOG FROM WORDPRESS TO BLOGGER. Ce blog est à
ex-ample.blogspot.com

Blog Stats

  • 206,717 hits

localization

Flickr Photos

A bellezza di a natura (C☺rsica)

Plus de photos
juillet 2008
L M M J V S D
« Juin   Août »
 123456
78910111213
14151617181920
21222324252627
28293031  

%d blogueurs aiment cette page :