对非方矩阵使用Surf和Peaks

问题描述 投票:0回答:1

我试图使用带有峰值的网格。当我使用方形矩阵时:

[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.

知道如何让它工作吗?

谢谢。

matlab matrix mesh surf
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.