我试图使用带有峰值的网格。当我使用方形矩阵时:
[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.
知道如何让它工作吗?
谢谢。
使用surf
绘制函数时,传递的变量必须大小相同。虽然您正在将x
和y
矩阵更改为非方形矩阵,但您并未创建相应大小的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);
这给了我以下情节: