繁体   English   中英

在Matlab中绘制3D云的表面

[英]Draw surface of 3D cloud in matlab

我有3D点云。 我需要将它们绘制为表面。 我尝试使用meshedrid,griddata,分散Interpolant,trisurf-delaunay的变体。 什么都没有。 我知道这个问题已经讨论了很多,但是似乎我不明白一些重要的细节。 我现在拥有的代码:

load('coords.mat')
figure()
subplot(1,2,1)
plot3(x,y,z,'.')
axis off
view(3)

subplot(1,2,2)
C=gray(numel(x)); % unsuccessful attempt
[~,idx]=sort(z);  %      to have 
C=C(idx,:);       %    illumination
scatter3(x,y,z,50,C,'filled')
axis off
view(3)

产生以下图像: 在此处输入图片说明

你可以帮帮我吗:

1)找到一种使用曲面功能绘制它的方法。

而且表面上可能有一些点(可能是我的问题)

2)如何去除“隐形”点?

我需要针对不同情况的解决方案,图片和数据仅作为示例。

Mat文件可以在这里下载。

PS

如果很重要–我获得这些点的坐标作为随机贝塞尔曲线的旋转。

UPDATE

如果上面的数据太大,我将生成另一个包含较少点的集合:

在此处输入图片说明

坐标在这里

您从哪里获得这些数据? 它表示为矢量,但是如果将其整形为矩阵,则可以使用surf函数。 试试这个代码:

z=reshape(z,100,100);
y=reshape(y,100,100);
x=reshape(x,100,100);
surf(x,y,z)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM