【问题标题】:How do I make a 3D plot using evenly spaced values?如何使用均匀间隔的值制作 3D 图?
【发布时间】:2016-03-07 06:02:20
【问题描述】:

这是我的作业问题:

使用 500 个均匀分布的值创建 y = sin(2πx), y = cos(2πx)[0,π] 的 3D 图。

我不明白这个问题,因为它说要创建 y = sin(2*pi*x)y = cos(2*pi*x) 的 3D 图,但这两个函数都是 2D 图,而不是 3D。所以我要求提示。这些是我得到的提示:

第二个函数使用z = cos(2 pi x),而不是y = cos(2 pi x)

这仍然没有意义。 z不应该是xy的函数,如果我们要制作3D绘图,否则只能做成2D绘图?

她回答:

您必须使用 X 值创建 3d 图,您需要使用 linspace 命令创建,然后计算 Y 值 (sin) 和 Z 值 (cos)..plot xyz..

这是我尝试过的:

x = linespace(0, 500);
y = sin(2*pi*x);
z = cos(2*pi*x);
figure;
plot3(x, y, z);

这就是我得到的:

我不确定这是否是正确的方法。我是否正确回答了问题?

【问题讨论】:

  • 你所做的看起来是正确的。
  • 更正:x 只有 100 个值(不是 500 个)。要解决此问题,您需要使用 x=linspace(0, 4, 500);
  • @Aziz 为什么只有 100 个值?
  • linspace 采用 3 个参数:开始、结束和点数。如果不指定点数,则使用默认的 100。在您的代码中,您使用了linspace(0,500)(从 0 开始,在 500 结束)。

标签: matlab plot 3d


【解决方案1】:

您的困惑更多是关于表示您想要绘制的内容的不同方式。你可能想到的是一个有两个参数的函数,看起来像 f(x, y)=x+y,通常定义类似表面的东西。您收到的是parametric equation。这段代码的作用相同,只是重写以匹配 Wikipedia 使用的符号:

%parametric representation of a spiral
t = linspace(0, pi, 500); %correct use of linspace, see Felix's answer.
x = t;
y = sin(2*pi*t);
z = cos(2*pi*t);

也许让我改写一下我会如何问这个问题:

为 500 个均匀分布的 t 值创建参数方程 x=t, y=sin(2*pi*t), z=cos(2*pi*t) 的 3D 图。

你在调用linspace时也忽略了范围[0, pi],函数调用linspace,而不是linespace

【讨论】:

  • 谢谢。函数名是linspace 还是linespace?我尝试了linespace,但出现错误。
  • 是的,从您的问题中复制了它而没有注意到,它是linspace。也忘了设置正确的范围 0, felix 注意到的 pi。现在在答案中是固定的。
【解决方案2】:

您只想在 [0,pi] 上绘制而不是超过 0 到 500。

x = linespace(0, 500);

您创建了一个包含 100 个值的向量(这是函数 linspace 的默认编号),介于 0 和 500 之间。您要做的是:

x = linspace(0, pi, 500);

这会将 0 到 pi 的区间划分为 500 个值。

其余代码没问题。

【讨论】:

    猜你喜欢
    • 2014-08-22
    • 2019-10-10
    • 2015-06-08
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多