Lee*_*Lee 3 matlab visualization data-visualization surf matlab-figure
我从散乱的数据集中制作填充的轮廓或曲面图.
与其他Qs的主要区别在于数据不是凸的.
[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;
Run Code Online (Sandbox Code Playgroud)
内圈为空.
我用
tri = delaunay(x,y);
trisurf(tri,x,y,z); view(2); axis equal off;
Run Code Online (Sandbox Code Playgroud)
制作表面图.
但是,正如您所看到的,内圈被填充.
而不是使用导致凸包的Delaunay三角剖分,您将要使用一个alphaShape可以对结果曲面边长度施加限制的方法.
您可以指定Alpha属性(通过指定第三个输入),该属性是最大边长的倒数.对于你的例子,我选择了Alpha1.
A = alphaShape(x(:), y(:), 1);
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用对象的alphaTriangulation方法获得三角测量alphaSurface.
[faces, vertices] = A.alphaTriangulation();
zvalue = sum(vertices.^2, 2);
Run Code Online (Sandbox Code Playgroud)
或者您可以使用对象的plot方法alphaShape
plot(A, 'FaceColor', 'interp', 'CData', zvalue)
Run Code Online (Sandbox Code Playgroud)