2016-03-15 19 views
0

使用格式爲[x,y,z,value]的數據集,我可以創建一個3D散點圖,如圖所示,其中位置(x,y,z)上的每個點的顏色基於value。請注意,所有圖像都是相同的圖,只是從不同的角度。它的目的是成爲球體八分之一的表面。MATLAB:根據散點創建一個彩色表面

enter image description here enter image description here

有沒有辦法,我可以做顏色的內插在3D空間中,我們看到了一個固體表面,而不是單獨的點?我正在尋找沿imagesc,但在3D中的東西。我嘗試了各種各樣的功能,包括scatteredInterpolant,patch,meshsurf,但這些功能似乎並不按照我想要的方式在三個維度上工作。

+0

爲什麼'surf(x,y,z,c)'不起作用? – user1543042

+0

我得到錯誤「Z必須是矩陣,而不是標量或矢量。」我不知道如何將位置矢量轉換爲矩陣 –

+0

您可以發佈一些示例數據嗎? – user1543042

回答

0

根據您的示例數據(使用多個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 
+0

這應該是一個很好的起點;謝謝! –