3

我想用曲面图可视化 4 个分散数据向量。3个向量应该是坐标。此外,第 4 个向量应表示表面颜色。我的第一种方法是使用 (xk,yk,zk,ck) 绘制这些数据

scatHand = scatter3(xk,yk,zk,'*');    
set(scatHand, 'CData', ck);   
caxis([min(ck), max(ck)])

结果,我得到了不同颜色的散点。由于这些点位于半球的表面上,因此可以获得彩色面而不仅仅是点。我使用 griddata 将散点替换为曲面以首先构建近似值

xk2=sort(unique(xk));   
yk2=sort(unique(yk));   
[xxk, yyk]=meshgrid(xk2, yk2);   
zzk=griddata(xk,yk,zk,xxk,yyk,'cubic');  
cck=griddata(xk,yk,clr,xxk,yyk,'cubic');     
surf(xxk,yyk,zzk,cck);  
shading flat;

这已经几乎是我想要的了,只是半球的底部是衣衫褴褛的。当然,如果我增加插值点数,它会变得更好,但情节的处理也会变慢。所以我想知道是否有一种简单的方法可以强制插值函数进行明确的中断。此外,似乎参差不齐的边界是因为 zzk 的值在半球与 z=0 平面共享的圆之外得到“NaN”。 由分散数据构建的半球表面

顶部的红点是原始分散数据的前几个条目。

4

1 回答 1

2

您可以设置ZLim选项以在特定范围内对绘制的值进行切片。

set(gca, 'Zlim', [min_value max_value])

在此处输入图像描述

于 2014-09-17T15:53:10.553 回答