1

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

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

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

我真的很感激任何想法和解决方案,因为我一直在阅读许多类似问题的评论(比如这个:如何在 MATLAB 中绘制 4D 等高线(XYZ-V)?)并且找不到任何解决方案。

提前谢谢你。

4

2 回答 2

1

我同意克里斯的回答。但是,提供一个关于如何使用的小例子可能是值得的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,所有散点大小相等。

于 2013-05-20T12:05:10.020 回答
1

我建议使用该scatter3功能。它是非常可定制的,可能正是您正在寻找的。

http://www.mathworks.com/help/matlab/ref/scatter3.html

于 2013-05-17T18:05:58.553 回答