【发布时间】:2015-06-15 21:12:52
【问题描述】:
所以我有 [x y z 强度] 形式的数据,我用 xyz 轴绘制在 scatter3 图上。数据的颜色用于指示强度值。问题是,使用散点图意味着数据点显示为离散点。我需要的是一个平滑的形状 - 所以我想我需要在点之间进行某种插值?
我尝试过使用 trisurf,但这个问题在于它会在不应该的点之间进行插值。因此,在我的表面应该有“间隙”的地方,它会连接边缘,以便填充间隙。请参阅随附的图片进行说明。
有人有什么建议吗?
我使用的代码如下(注释掉的scatter3是散点图,其余的是trisurf):
% Read in data
dataM = csvread('3dDispersion.csv');
% scatter3(dataM(:,1), dataM(:,2), dataM(:,3), 5, dataM(:,4),'filled');
% Plot
hold on;
x = dataM(:,1);
y = dataM(:,2);
freq = dataM(:,3);
tri = delaunay(x,y);
h = trisurf(tri, x, y, freq);
% Make it pretty
% view(-45,30);
view(3);
axis vis3d;
lighting phong;
shading interp;
【问题讨论】:
-
我不确定你是否真的可以这样做。希望你能找到答案。
-
你试过alpha-shapes吗?
-
@knedlsepp 我没试过。我并不过分乐观,因为我相信 trisurf 函数也使用 Delaunay 三角测量,这可能是行不通的事情 - 但由于我实际上不知道这是否属实,我会试试你的建议!
-
在某处上传
3dDispersion.csv。 -
我一直在努力解决同样的问题。 Matlab 似乎无法正确执行此操作。