2

希望标题能充分描述我的问题。基本上,我使用 contourf (x,y,z) 函数在 MATLAB 中生成等高线图,其中 x 和 y 是不同长度的向量,z 是维度为 x 乘以 y 的数据矩阵。轮廓图很好,但是,我希望用矩阵 z 中的实际数据点覆盖这个图。我曾尝试使用 scatter 函数,但我收到一条错误消息,通知我 X 和 Y 必须是相同长度的向量 - 但事实并非如此。有没有其他方法可以实现这一目标?

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

4

1 回答 1

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)例如,如果您坚持,则可以解决问题。虽然我的例子不是特别有趣,但希望这能让你开始追求美学上的目标。

轮廓上的点

于 2016-05-20T18:24:48.153 回答