【问题标题】:how to plot 3D surface from a data file in Matlab如何在 Matlab 中从数据文件中绘制 3D 曲面
【发布时间】:2010-12-24 01:00:07
【问题描述】:

我有一个包含 3 列 x、y、z 的数据文件 我想做一个 3D 绘图来可视化表面。

我本可以使用网格网格,但问题是我只有 y

一个例子:

xyz ============= 1 1 0.5 2 1 0.3 2 2 1.2 3 1 1.1 3 2 8.0 3 3 1.4 =============

【问题讨论】:

    标签: matlab


    【解决方案1】:

    在许多情况下,一个简单的解决方案是使用 trisurf。比如……

    x = [1, 2, 2, 3, 3, 3];
    y = [1, 1, 2, 1, 2, 3];
    z = [0.5, 0.3, 1.2, 1.1, 1.8, 1.4];
    
    tri = delaunay(x,y);
    trisurf(tri,x,y,z)
    

    【讨论】:

    • 注意:我认为 8 是这些数字中的拼写错误,所以我输入了 1.8。此外,如果 (x,y) 平面中的数据不代表凸区域,则 delaunay 仍将强制其为凸区域。这可能会在边缘周围引入插值伪影。
    【解决方案2】:

    您可以确定性地填充缺失值,只需一个包含两个嵌套循环的小脚本即可用于xy

    否则,请再次查看 MATLAB 文档中的函数 meshgrid。在那里你看到See Also 部分。无意中列出了一个函数griddata。这就是你需要的!我也可以推荐gridfit 更好。

    【讨论】:

      【解决方案3】:

      您可以通过已有的点拟合曲面,然后绘制曲面。我喜欢使用 x2fx 函数生成一个完整的二次模型,然后使用 \ 运算符将数据拟合到模型中。您对要绘制的表面的基本性质有任何想法吗?你的数据有很多噪音吗?那个 8.0 看起来有点不合适,是异常值还是正确的数据?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多