MATLAB couleurs graphes 3D

Résolu/Fermé
Irene_Adler Messages postés 129 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 9 juillet 2011 - 7 août 2008 à 17:08
Irene_Adler Messages postés 129 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 9 juillet 2011 - 7 août 2008 à 21:54
Bonjour,
J'ai créé deux surfaces dans un même graphe 3D sur MATLAB.
La premiere etant dans les echelles du metre et la seconde du centimètre, j'ai fixé l'échelle de sorte à avoir un zoom sur la petite surface et ne voir qu'une partie de ma grande surface.
Le problème est que du coup, ma petite surface ne s'affiche que d'une seule couleur, hors je veux qu'elle ait une echelle de couleurs (la grande surface ne servant que de repère et peut s'afficher de n'importe quelle couleur),
Avez-vous une idée?

Merci d'avance.

PS: je ne sais pas si c'est le bon forum... mais bon, je tente, sinon, merci de me rediriger...

Voici mon code:

function [X,Y,Z,A]=OpenFunwaveBinEtaxyWdepth(fnamedepth,fname,mx,ny,dx,dy)
%[X,Y,Z,A]=OpenFunwaveBin(fnamedepth,fname,mx,ny,dx,dy)
%        fname: eta(x,y) file name
%        fnamedepth: depth file name
%        mx and ny: number of nodes for x and y directions resp.
%        dx and dy: grid size in meters for x and y directions, resp.
%prints the eta(x,y) profile with surfc and, in another window, the contour of the eta(x,y) profile.
figure(1);
fid=fopen(fname);
A=fread(fid,[1,mx*ny],'float32=>double')';
k=max(A);
k=3*k;
for i=1:1:mx,
X(i)=i*dx;
for j=1:1:ny,
Z(i,j)=A((i-1)*ny+j,1);
end 
end 

fid2=fopen(fnamedepth);
Ad=fread(fid2,[1,mx*ny],'float32=>double')';

for i=1:1:mx,
for j=1:1:ny,
Zd(i,j)=Ad((i-1)*ny+j,1);
end 
end 
Y=[1:1:ny]*dy
surf(X,Y,Z',Z'); %petite surface
hold on;
surf(X,Y,-Zd'); %grande surface
zlim([-k  k]);
ylabel('y from 0 to ny*dy');
xlabel('x from 1 to mx*dx');
zlabel('z');
title(fname);
view(-360,0);
hold off;
return
A voir également:

1 réponse

Irene_Adler Messages postés 129 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 9 juillet 2011 18
7 août 2008 à 21:54
re-bonjour,
Quelqu'un m'a soufflé la (ou une) réponse, alors je vous en fait profiter ;) :
il suffit de faire:
surf(X,Y,Z',1000*Z'); %petite surface

et voila!

à plus!
-1