J'espère que le titre donne une description adéquate de maproblème. Fondamentalement, je génère un tracé de contour dans MATLAB à l'aide de la fonction contourf (x, y, z), où x et y sont des vecteurs de différentes longueurs et z est une matrice de données de dimensions x x y. Le tracé de contour est correct, cependant, je cherche à superposer ce tracé aux points de données réels de la matrice z. J'ai essayé d'utiliser la fonction scatter, mais je reçois un message d'erreur m'informant que X et Y doivent être des vecteurs de même longueur - ce qu'ils ne sont pas. N'y a-t-il pas un autre moyen d'y parvenir?
Merci d'avance pour toute aide / suggestions!
Réponses:
1 pour la réponse № 1je pense meshgrid
devrait vous aider.
z = peaks; %// example 49x49 z data
x = 1:20;
y = 1:49;
z = z(y,x); %// make dimensions not equal so length(x)~=length(y)
[c,h] = contourf(x,y,z);
clabel(c,h); colorbar;
[xx,yy]=meshgrid(x,y); %// this is what you need
hold on;
plot(xx,yy,"k."); %// overlay points on contourf
Remarquer plot
suffit au lieu de scatter
. Si vous insistez, scatter(xx(:),yy(:),10)
, par exemple, fait le tour. Bien que mon exemple ne soit pas particulièrement intéressant, cela devrait, espérons-le, vous aider à vous lancer sur la voie esthétique.