希望标题能够充分描述我的问题。基本上,我使用contourf(x,y,z)函数在MATLAB中生成等高线图,其中x和y是不同长度的向量,z是尺寸为x乘y的数据矩阵。 contourf图很好,但是,我希望用矩阵z的实际数据点覆盖这个图。我已经尝试过使用散点函数,但是我收到一条错误消息,告诉我X和Y必须是相同长度的向量 - 它们不是。还有其他方法可以达到这个目的吗?
提前感谢您的任何帮助/建议!
答案 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)
就可以了。虽然我的例子不是特别有趣,但这应该会让你开始朝着美学的方向前进。