matlab中三维速度场的绘制

matlab中三维速度场的绘制,matlab,3d,Matlab,3d,我需要在3d中绘制一个球体上的彩色速度场。我正在寻找一个与此类似的函数: f(X,Y,Z,V)其中X,Y,Z表示三维坐标(使用meshgrid形成的三维矩阵),V是确定每个坐标的速度值的三维矩阵。结果应该是一个3d彩色绘图,根据每个坐标的V中的值改变颜色 我尝试使用等值面,但效果不好,因为我需要轮廓,我只需要每个坐标中的特定值。我使用了quiver3,它工作得很好,但我需要用颜色而不是箭头来映射绘图 我真的很感激任何想法和解决方案,因为我已经阅读了许多类似问题的评论(比如这个:),但找不到任何解

我需要在3d中绘制一个球体上的彩色速度场。我正在寻找一个与此类似的函数:

f(X,Y,Z,V)
其中
X
Y
Z
表示三维坐标(使用
meshgrid
形成的三维矩阵),
V
是确定每个坐标的速度值的三维矩阵。结果应该是一个3d彩色绘图,根据每个坐标的
V
中的值改变颜色

我尝试使用
等值面
,但效果不好,因为我需要轮廓,我只需要每个坐标中的特定值。我使用了
quiver3
,它工作得很好,但我需要用颜色而不是箭头来映射绘图

我真的很感激任何想法和解决方案,因为我已经阅读了许多类似问题的评论(比如这个:),但找不到任何解决方案


提前谢谢您。

我建议您使用
scatter3
功能。它是非常可定制的,并且可能正是您想要的


我同意克里斯的回答。但是,提供一个关于如何使用的小示例可能是值得的:

第一:

x = rand(1,100);     % x-coordinates
y = rand(1,100);     % y-coordinates
z = rand(1,100);     % z-coordinates
i = rand(1,100)*200;

% specify the indexed color for each point
icolor = ceil((i/max(i))*256);  

figure;
scatter3(x,y,z,i,icolor,'filled');
% if you omit the 'filled' option, you'll just get circles
第一个示例将根据变量
i
为您提供颜色和大小。如果你希望你的散乱点在一个颜色上取决于<代码> i < /代码>但是大小一致,考虑第二种方法:

x = rand(1,100);     % x-coordinates
y = rand(1,100);     % y-coordinates
z = rand(1,100);     % z-coordinates
i = rand(1,100)*200;

% specify the indexed color for each point
icolor = ceil((i/max(i))*256);  

% after setting the color based on i, reset i to be uniform
i = ones(size(i)).*100;

figure;
scatter3(x,y,z,i,icolor,'filled');

定义颜色后重置
i
,所有散射点大小相等

非常感谢你们两位的时间和努力。这个解决方案是可行的,尽管我在做了一些实验之后使用了“trisurf”和“convhull”命令;θ=0:b:2*pi;r=r1:c:r2;[φ,θ,R]=网格网格(φ,θ,R);[x,y,z]=sph2cart(θ,φ,R);x=x(:);y=y(:);z=z(:);M=convhull(x,y,z);trisurf(M、x、y、z、V、'facecolor'、'interp'、'EdgeColor'、'none')@如果你想给评论更多的空间,你可以回答你自己的问题。