不仅仅根据 z 定义曲面

Defining surfaces not just in terms of z

我有三个不同的表面,我想在一张图中显示所有的表面。

问题是,我有一个根据 z 定义的表面(意味着我有 x 和 y 值以及一个为每个组合指定 z 值的网格)和另外两个定义的表面的 x。这意味着一个 x,y 对存在各种 z 值。

我的想法是:

figure
surf(x,y,zgrid)
hold on
surf(x,ygrid,z)
surf(x,ygrid2,z)
hold off

我希望 MATLAB 能够自行管理它,但它没有。 您对如何获得想要的结果有任何想法吗?我想在一个图中显示所有这些以显示横截面。

这是一张大致应该是什么样子的图片:

如果有更漂亮的显示方法,请告诉我。

你没有具体说明到底出了什么问题,但我会冒险猜测你在尝试绘制第二个表面时遇到了如下错误:

Error using surf (line 82)
Z must be a matrix, not a scalar or vector.

我猜你的 xyz 变量是向量,而不是矩阵。 surf function allows for the X and Y inputs to be vectors, which it then expands into matrices using meshgrid。不过,它 不会 Z 输入执行此操作。

在我看来,最好的做法是无论如何都对所有输入使用矩阵。这是我这样做(使用 meshgrid)绘制立方体的三个表面的示例:

% Top surface (in z plane):
[x, y] = meshgrid(1:10, 1:10);
surf(x, y, 10.*ones(10), 'FaceColor', 'r');
hold on;

% Front surface (in y plane):
[x, z] = meshgrid(1:10, 1:10);
surf(x, ones(10), z, 'FaceColor', 'b');

% Side surface (in x plane):
[y, z] = meshgrid(1:10, 1:10);
surf(ones(10), y, z, 'FaceColor', 'g');
axis equal

剧情如下: