/ / Superposez les points de données qui composent une matrice de courbes de niveau sur la même courbe dans MATLAB - matlab, plot, matlab-figure, contour, contourf

Superposer les points de données qui composent une matrice de tracé de contour sur le même tracé dans MATLAB - matlab, plot, matlab-figure, contour, contourf

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 № 1

je 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.

points sur contour