matlab - 具有 3 个向量的曲面图 Matlab

标签 matlab vector plot

我需要能够使用来自 3 个向量的数据绘制曲面图。我找到了类似的信息,但似乎没有方法适用于我的数据。我的 X 和 Y 列间隔均匀,但不是按升序排列。我尝试了不同的方法,但它们似乎都没有给我想要的东西,这是一个将近点连接在一起的简单曲面。我尝试了以下方法:

[X Y]=meshgrid(x,y);
Z=griddata(x,y,z, X,Y);
surf(X,Y,Z);

这不是我想要的,因为它在 z=0 处创建了一个曲面,并使它看起来更像是一个体积图,而不仅仅是一个曲面。它在我的电脑上运行也很慢(可能是因为创建了所有的网格点)。如果我能得到不需要那么多内存的东西,那将是理想的(我的向量每个都有大约 20k 个值),但这不是必需的。

***编辑:我还尝试使用找到的 scatteredInterpolant 方法 here , 但该函数似乎无法被 MATLAB 识别,我收到此错误:

Undefined function 'scatteredInterpolant' for input arguments of type 'double'.

这也是我的问题的图片: here

你可以看到我们看不到表面之下,有一些 z=0 平面挡住了它。

如果您有任何帮助,我们将不胜感激。

提前致谢。

**编辑 2:我添加了示例 vectors ,它们是我从左到右的 x、y 和 z 值。

***编辑 3:这是我得到的三角测量图像。如您所见,有些点由于某种原因被忽略了,这就产生了那些看起来又长又奇怪的蓝色三角形。

迈克

最佳答案

由于常规方法似乎失败了,我建议您手动进行。

  1. 创建 Z矩阵满NaN值。矩阵的大小应取决于您的 xy值(value)观。
  2. 遍历所有发生的x , y ,配对并把他们的(平均?)z值在您的 Z 的正确位置矩阵。
  3. 遍历所有NaN值并插入它们的值。也许使用 filter2 .
  4. 使用surf绘制生成的表面

关于matlab - 具有 3 个向量的曲面图 Matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20111381/

相关文章:

c++ - 如何隐藏控制台窗口并调出启动画面?

matlab - eps() 在 MATLAB 中是如何计算的?

c# - 如何在没有 MCR/MATLAB 的情况下在 C# 中使用 MATLAB 编译的 DLL?

c++ - 在列表中查找最常见的元素(C++ STL)?

function - 构造一个函数

c++ - 在 recvfrom 调用中使用时, vector 指向未初始化的字节

python - 3D 绘图纵横比 [matplotlib]

matlab - 不同大小颗粒的 3D MATLAB 散点图

r - 设置多边形的背景颜色

c++ - 在 C++ 中调试 sigtrap