matlab - 从不规则数据绘制表面

标签 matlab visualization data-visualization matlab-figure surf

我要根据分散的数据集制作填充等高线图或曲面图。

与其他 Q 的一个主要区别是数据不是凸的。

[r,th] = meshgrid(10:15,0:180);
[x,y] = deal(r.*sind(th), r.*cosd(th));
z = x.^2+y.^2;
scatter(x(:),y(:),[],z(:),'fill'); axis equal off;

内圈为空。

enter image description here

我用

tri = delaunay(x,y);
trisurf(tri,x,y,z);  view(2); axis equal off;

制作曲面图。

但是,如您所见,内圈已填充。

enter image description here

最佳答案

与其使用产生凸包的 Delaunay 三角剖分,不如使用 alphaShape您可以使用它来限制生成的曲面边的长度。

您可以指定 Alpha property (通过指定第三个输入)它是最大边长的倒数。对于您的示例,我选择了 1 的 Alpha

A = alphaShape(x(:), y(:), 1);

然后您可以使用 alphaTriangulation 得到三角测量结果alphaSurface 对象的方法。

[faces, vertices] = A.alphaTriangulation();
zvalue = sum(vertices.^2, 2);

或者你可以使用alphaShape对象的plot方法

plot(A, 'FaceColor', 'interp', 'CData', zvalue)

enter image description here

关于matlab - 从不规则数据绘制表面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43125475/

相关文章:

arrays - MATLAB 中的矩阵数组

wpf - 如何使用 WPF 可视化一个简单的二维世界( map 和元素)

python - 如何在 mayavi 中给定 mlab.view() 和 mlab.roll() 获取相机的当前偏航和俯仰轴(矢量)?

matlab - Octave 随机数

python - 实例化大型稀疏矩阵以进行赋值操作

javascript - 如何跟踪我的数据结构?

python - 绘制具有不同阵列长度的 3D Pandas 数据帧的光谱数据

python - 如何可视化大量 3 维数据

matlab - Matlab显示点的坐标

Emacs 下一个错误 (C-x `) 可视化