3d速度场绘图在matlab中

时间:2013-05-17 15:07:09

标签: matlab 3d

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

f(X, Y, Z, V)其中XYZ代表三维坐标(使用meshgrid形成的三维矩阵)和V是一个三维矩阵,确定每个坐标的速度值。结果应该是一个三维彩色图,根据V中每个坐标的值,颜色会发生变化。

我尝试使用isosurface,但由于我需要轮廓,因此效果不佳,我只需要在每个坐标中都有特定的值。我使用quiver3并且效果很好但是我需要用颜色而不是箭头来绘制地图。

我非常感谢任何想法和解决方案,因为我一直在阅读许多类似问题的很多评论(例如:How to plot 4D contour lines (XYZ-V) in MATLAB?)并且找不到任何解决方案。

提前谢谢你。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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,所有散点都具有相同的大小。