我正在尝试使用带有峰值的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.
有什么主意吗?
谢谢。
答案 0 :(得分:0)
使用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);
这给了我以下情节: