MATLAB couleurs graphes 3D

Résolu
Irene_Adler Messages postés 136 Statut Membre -  
Irene_Adler Messages postés 136 Statut Membre -
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 136 Statut Membre 18
 
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