2012-11-27 48 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作爲第三座標如自己所想的。

相關問題