将Surf和Peaks用于非平方矩阵

时间:2019-03-23 19:10:37

标签: matlab matrix mesh surf

我正在尝试使用带有峰值的meshgrid。当我使用像这样的正方形矩阵时:

[x,y] = meshgrid(1:10,1:10)
z = peaks(10)
surf(x,y,z)

一切正常。

但是,当我使用非平方矩阵时:

[x,y] = meshgrid(-30000:500:0,10:500); 
z = peaks(?)
surf(x,y,z)

出现以下错误:

Data dimensions must agree.

有什么主意吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

使用surf绘制函数时,您传递的变量的大小必须全部相同。尽管您将xy矩阵更改为非平方矩阵,但您并未创建相应大小的z矩阵。如果您查看peaks的文档,就会发现tells you这个函数只能产生平方输出,这使事情变得有些复杂。我建议您尝试绘制其他示例函数。

如果绝对必须绘制peaks函数,则可以使用某种插值方法:

x = 1:10;
y = 1:10;
[x_mesh, y_mesh] = meshgrid(x,y);
z = peaks(10);

x2 = 1:0.1:10;
y2 = 1:0.5:10;
[x2_mesh, y2_mesh] = meshgrid(x2, y2);
z2 = interp2(x_mesh, y_mesh, z, x2_mesh, y2_mesh);

surf(x2_mesh, y2_mesh, z2);

这给了我以下情节:

Peaks Plot