MATLAB:根据散点创建彩色表面

MATLAB: Create a colored surface based on scatter points

使用 [x,y,z,value] 格式的数据集,我可以创建如图所示的 3D 散点图,其中位置 (x,y,z) 处每个点的颜色基于 value.请注意,所有图像都属于同一图,只是来自不同的视图。它旨在成为球体八分圆的表面。

有没有一种方法可以在 3D 中对颜色进行插值,以便我们看到实体表面而不是单个点?我正在寻找与 imagesc 类似的东西,但在 3D 中。我尝试了各种各样的功能,包括 scatteredInterpolantpatchmeshsurf,但这些功能似乎无法像我那样在 3 维中工作我喜欢。

根据您的示例数据(具有多个 shell),我将此程序组合在一起。它使用 trisurf,因此不需要网格化数据。

function PlotColoredSpheres(x,y,z)
    tol = 0.01;

    r = sqrt(x.^2 + y.^2 + z.^2);
    data = num2cell(sortrows([r, x, y, z], [1,2,3,4]),1);
    [R, X, Y, Z] = data{:};

    figure(1)

    RUnique = uniquetol(r, tol);

    for Ru = RUnique(:)'
        j = abs(R - Ru) < tol;
        tri = delaunay(X(j),Y(j));
        trisurf(tri, X(j), Y(j), Z(j));
        lighting phong
        shading interp
        hold on
    end
    hold off
end