【问题标题】:Plot surface on Matlab using n Z-Coordinate Points and mxn (X & Y points)使用 n 个 Z 坐标点和 mxn(X 和 Y 点)在 Matlab 上绘制曲面
【发布时间】:2014-07-15 21:47:13
【问题描述】:

我有一个问题,我将数据格式化为在 Z 轴上有 n 个数据点,并且每个 Z 数据点都有 m 个对应的 x 和 y 点。我本质上想要有 n 个 2D m 点图,但合并到一个曲面中。

我的数据采用以下形式:

z = [0 1 2 3]

data(:, :, 1) = [0 1 2; 2 2 2] (the first row corresponds to the x points, second to the y; the page (the 1) corresponds to the respective z point at which I am plotting said x and y points)

所以基本上,在z(i),我想绘制data(:, :, i)。然后最后全部合并成一个表面。我将如何做到这一点?

一个可能有助于想象这种情况的示例是,如果所有idata(:, :, i) 是均匀的,就像上面的示例一样,那么将绘制一个立方体表面(体积为12)。

【问题讨论】:

  • 上下文中的一些代码确实有助于澄清您的问题。谢谢!
  • 如果您可以显示一些数据,并且可能是您期望输出的示例图像,那也会有所帮助。我无法想象这个

标签: matlab plot 3d surface


【解决方案1】:

所以本质上,在 z(i) 处,我希望绘制 data(:, :, i)。然后最后全部合并成一个表面。我将如何做到这一点?

使用scatter3 绘制3-D scatter plot,对于具有一组x、y、z 值的每个点。

或者,使用plot3make 3-D line plot。请注意参数格式。

你可以使用类似的代码

for ii = 1:length(z)
    x = data(1, :, ii);
    y = data(2, :, ii);
    scatter3(x, y, z*ones(1, length(x));
end

最后,rotate your angle of view 使用view([0,0,-1]) 指向面向z 轴的方向。这样,所有不同 z 值的层都被压缩到一层。

如果你真的想忽略 z 值,但只想看到所有点的叠加图,

for ii = 1:length(z)
    x = data(1, :, ii);
    y = data(2, :, ii);
    scatter(x, y);
end

一个可能有助于想象这种情况的示例是,如果所有 i 的 data(:, :, i) 是均匀的,就像上面的示例一样,那么将绘制一个立方体表面(体积 12)。

正如@rayryeng 评论的那样,我发现这很难想象。 “体积 12 的立方体表面”是什么意思?这部分看起来与上面的描述不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 2014-12-02
    • 2013-09-20
    • 2018-11-10
    • 1970-01-01
    相关资源
    最近更新 更多