2012-11-27 36 views
1

我正在使用一些MATLAB代码通过视频捕获来跟踪流体解决方案中的粒子。MATLAB - 根据可比较的z值绘制不同颜色的线

所有跟踪的粒子都存储在一个单元格阵列中(tr),每个单元格条目都是跟踪的不同粒子。然后单元格包含一个矩阵,其中每行包含该特定帧处的粒子参数(位置,大小,对比度等),N是粒子被跟踪的视频帧数。

每个单元格的第1列包含粒子x位置,每个单元格的第2列包含粒子y位置,每个单元格的第11列包含所有捕获帧(忽略所有其他列)的粒子平均速度。

用于粒子单元的一个例子:

Example of typical particle cell

现在通常超过我已经捕获我使用下面的代码中的视频的第一帧绘制这些轨迹:

image = read(mmreader([movie '.avi']), 1); %Loads the first frame of the avi file 
figure 
imshow(image); 
hold on 
for i = 1:length(tr) % Or choose which particle you want to show 
plot3(tr{i}(:,1),tr{i}(:,2),tr{i}(:,11),'r') 
end 

但我希望做的是绘制粒子,因为我会使用上面的代码,但粒子轨道的颜色取决于其平均速度的值(红 - 快,蓝 - 慢等)。我想也许最好的方法是将它绘制在3D中,并使用平均速度作为Z轴值?但我仍然不确定如何将颜色添加到绘图中并保持相对性,以便可以通过绘制颜色来比较不同粒子的速度。

任何帮助将不胜感激!

回答

1

我的建议是首先为每个轨道决定你想要的颜色范围。 (例如计算每个轨道的速度)

在此之后,您可以sort轨道让他们在正确的顺序。

然后你可以使用colormap来确保每一行都会得到正确的颜色。

1

您可能想看看FEX包cline

考虑这个例子(2D曲线,其颜色是由它的速度决定)

tt = 0:.1:5 

x_v = sin(tt);y_v = tt.^2;    % // my curve 

speed = sqrt(cos(tt).^2 + (2 * tt).^2); % // its local speed 
figure 
cline(x_v,y_v,speed); 

enter image description here

它支持3D也正因此你可以把speed作为第三坐标如自己所想的。

相关问题