【发布时间】:2020-08-11 08:36:35
【问题描述】:
我有一组 n=8000 笛卡尔坐标 X、Y 和 Z 作为向量,还有一个相同大小的向量 V,我想将其用作在球体上创建热图的值。
我看到了这个链接 (visualization of scattered data over a sphere surface MATLAB),但我不明白如何将这组数据转换为网格网格以使用 surf 进行绘图。
我看到的几乎每个示例都使用网格网格。 现在,我正在绘制一个球体,然后使用 scatter3 将我的点绘制为大球,然后尝试平滑它们。我看起来像这样:
我想将该图作为该链接中示例的绘图,他在其中使用:
k = 5;
n = 2^k-1;
[x,y,z] = sphere(n);
c = hadamard(2^k);
surf(x,y,z,c);
colormap([1 1 0; 0 1 1])
axis equal
编辑:
(抱歉这么久才回复,电晕危机远离工作) 我实际上在做的是:
for i=1:numel(pop0n)
ori(i,:)=ori(i,:)/norm(ori(i,:));
end
x = ori(:,1);
y = ori(:,2);
z = ori(:,3);
%// plot
m=100;
[aa,bb,cc] = sphere(m);
surf(aa,bb,cc,ones(m+1,m+1)*min(pop0n))
hold on
colormap jet;
scatter3(x,y,z,400,pop0n/norm(pop0n),'filled');
colorbar
shading interp
数组 'ori' 是 8000x3,包含我要绘制的点的 x、y 和 z 坐标,pop0n 是一个 8000 大小的向量,其中包含每个坐标的强度。
我的主要问题是如何将作为向量的 x、y、z 和 pop0n 转换为 2D 数组 (meshgrid) 以使用 surf? 因为如果它们是向量,我不能简单地做 surf(x,y,z,pop0n)。
提前致谢
【问题讨论】:
-
不清楚您的问题与您链接的问题有何不同。你试过
griddata吗? -
我们应该假设您拥有的 x,y,z 是球体上的点?
-
不要使用
scatter3。使用surf并将您的向量V作为第四个参数发送(如您链接的示例中所示)。 -
Hoki:这就是我想做的,但不知道如何做... David:不同之处在于变量的形状以及如何从一个转换到另一个。我不熟悉网格数据。我会查一下。谢谢
-
是的,x,y,z 是球体上的点