在MATLAB中绘制x=y平面

3

我不知道如何在一个2x2x2的空间中绘制x=y平面。

我创建了一个2x2的网格

[X,Y]=meshgrid(-1:0.1:1,-1:0.1:1);

然后我开始定义Z - 我卡住了

我的想法如下:

  1. 我需要为Z创建一个21x21的数组(我使用surf函数..并且X、Y、Z的维度必须匹配。对吗?)。
  2. 我只需要填充那些遵循x==y的Z值。
  3. 现在对于每个这样的点,即x==y,Z将会变化-1:0.1:1。这是否要求我再次迭代x==y,并使用-1:0.1:1中的值绘制Z?

我正在正确地绘制这个平面吗?请帮帮我。

2个回答

9

您只需要定义XZ,因为按照定义,Y等于X

[X Z] = meshgrid(-1:.1:1,-1:.1:1);
figure;
surf(X,X,Z);xlabel('x');ylabel('y');zlabel('z');

使用结果
在此输入图片描述


1
你实际上在三维环境中尝试做二维的事情。
有点不直观,但这并不意味着不能实现,例如:
[X,Y]=meshgrid(-1:0.1:1,-1:0.1:1);
Z = zeros(size(X)); % Perhaps you want NaN rather than zeros
idx = X==Y;
Z(idx)=X(idx).^2+Y(idx)  % Of course identical to X(idx).^2+X(idx)
surf(Z)

请注意,这会在X == Y平面上绘制某些内容,而不仅仅是平面本身。 - Dennis Jaheruddin
这看起来很酷。idx似乎存储了一个逻辑比较操作X==Y(我们称这样的变量为什么?),然后你只在x==y点绘制(x,y,X^2+y)。我理解得对吗? - vyi
@vvy,没错,idx被称为逻辑索引。 - Dennis Jaheruddin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接