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

在MATLAB中,将构成等高线图矩阵的数据点叠加在同一个图上,matlab,plot,matlab-figure,contour,contourf,Matlab,Plot,Matlab Figure,Contour,Contourf,希望标题能充分描述我的问题。基本上,我在MATLAB中使用contourf(x,y,z)函数生成一个等高线图,其中x和y是不同长度的向量,z是x乘以y的数据矩阵。轮廓图很好,但是,我希望用矩阵z的实际数据点覆盖该图。我尝试过使用散射函数,但是我收到一条错误消息,告诉我X和Y必须是相同长度的向量,而它们不是。有没有其他方法可以做到这一点 提前感谢您的帮助/建议 我认为meshgrid应该对你有所帮助 z = peaks; %// example 49x49 z data

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


提前感谢您的帮助/建议

我认为
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)
就是一个例子。虽然我的例子并不特别有趣,但这应该能让你开始从美学角度出发