在MATLAB中在同一图上叠加构成等高线图矩阵的数据点

时间:2016-05-20 15:00:36

标签: matlab plot matlab-figure contour contourf

希望标题能够充分描述我的问题。基本上,我使用contourf(x,y,z)函数在MATLAB中生成等高线图,其中x和y是不同长度的向量,z是尺寸为x乘y的数据矩阵。 contourf图很好,但是,我希望用矩阵z的实际数据点覆盖这个图。我已经尝试过使用散点函数,但是我收到一条错误消息,告诉我X和Y必须是相同长度的向量 - 它们不是。还有其他方法可以达到这个目的吗?

提前感谢您的任何帮助/建议!

1 个答案:

答案 0 :(得分:1)

我认为meshgrid可以帮到你。

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

请注意plot,而不是scatter。如果你坚持,例如,scatter(xx(:),yy(:),10)就可以了。虽然我的例子不是特别有趣,但这应该会让你开始朝着美学的方向前进。

dots over contour