2014-03-05 56 views
0

請幫我解決這個問題。該圖給出正在移動的移動用戶。現在,我試圖在圖中添加一些常數點。就像移動用戶的基站一樣。我想爲每個基站說一個'#',並把它們放在10個左右。編輯一個恆定節點的隨機航點移動性matlab

function test_Animate(s_mobility,s_input,time_step) 

v_t = 0:time_step:s_input.SIMULATION_TIME; 

for nodeIndex = 1:s_mobility.NB_NODES 
    %Simple interpolation (linear) to get the position, anytime. 
    %Remember that "interp1" is the matlab function to use in order to 
    %get nodes' position at any continuous time. 
    vs_node(nodeIndex).v_x = interp1(s_mobility.VS_NODE(nodeIndex).V_TIME,s_mobility.VS_NODE(nodeIndex).V_POSITION_X,v_t); 
    vs_node(nodeIndex).v_y = interp1(s_mobility.VS_NODE(nodeIndex).V_TIME,s_mobility.VS_NODE(nodeIndex).V_POSITION_Y,v_t); 

end 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 

figure; 

hold on; 

for nodeIndex = 1:s_mobility.NB_NODES 
    vh_node_pos(nodeIndex) = plot(vs_node(nodeIndex).v_x(1),vs_node(nodeIndex).v_y(1),'*','color',[0.3 0.3 1]); 
end 
title(cat(2,'Simulation time (sec): ',num2str(s_mobility.SIMULATION_TIME))); 
xlabel('X (meters)'); 
ylabel('Y (meters)'); 
title('Random Waypoint mobility'); 
ht = text(min(vs_node(1).v_x),max(vs_node(1).v_y),cat(2,'Time (sec) = 0')); 
axis([min(vs_node(1).v_x) max(vs_node(1).v_x) min(vs_node(1).v_y) max(vs_node(1).v_y)]); 
hold off; 
for timeIndex = 1:length(v_t); 
    t = v_t(timeIndex); 
    set(ht,'String',cat(2,'Time (sec) = ',num2str(t,4))); 
    for nodeIndex = 1:s_mobility.NB_NODES 
          set(vh_node_pos(nodeIndex),'XData',vs_node(nodeIndex).v_x(timeIndex),'YData',vs_node(nodeIndex).v_y(timeIndex)); 
    end 

    drawnow; 
    end 

的這個完整的提交可以在The MathWorks公司的網站上得到。 http://www.mathworks.in/matlabcentral/fileexchange/30939-random-waypoint-mobility-model

請幫我一把。

+0

我是否錯過了某些明顯的東西?因爲你的觀點正在移動的唯一原因是他們被'set'改變了,所以沒有什麼能阻止你添加一組你不更新的固定位置。 – nkjt

+0

確切的,但我在哪裏添加該設置?因爲,我試着在幾個地方添加它,我觀察到所有的點都不動。你能告訴我,我可以在哪裏添加套餐? – user3222664

+0

根本不需要添加'set' - 僅在代碼中使用'set'來移動點。你需要第二個'plot'命令來添加固定點。我會用最小的繪圖示例來回答。 – nkjt

回答

0

這是基本的想法。在下面,fixed_xfixed_y是等長的向量,給出了你的固定點的位置。 moving_xmoving_y是大小爲t×n的矩陣,其中t是時間步數,n是點數。

%plot the fixed points 
plot(fixed_x,fixed_y, 'p'); 
hold on 
%plot the first set of moving points 
h = plot(moving_x(1,:),moving_y(1,:),'r*'); 

然後,移動點,我們用手柄移動點,h設置XDataYData值。這將是一個循環,n是時間步:

set(h, 'XData',moving_x(n,:),'YData',moving_y(n,:)); 
%may need drawnow; 

如果你希望能夠看到點移動,你可能需要添加一些pause命令 - 否則它可能通過更新循環週期,因此很快你就不會看到除了最後一組職位之外的任何東西。另一方面,在用set移動點或將其作爲幀添加到電影等之後,您可以將圖形保存爲圖像文件。

+0

感謝您的回答!它的工作就像一個魅力!我現在有兩個疑問。 1)假設,如果我必須添加多個不動點。以上只允許一個固定點。請幫忙。 2)爲了跟蹤節點的x和y座標,我使用vs_node(nodeIndex).v_x(timeIndex)和vs_node(nodeIndex).v_y(timeIndex)。我在最裏面的for循環中放了一個if else,用於檢查值是否在極限內,其他情況根本沒有執行。我是否需要從其他地方獲取價值觀?請幫助我。 – user3222664

+0

'fixed_x,fixed_y'可以包含多個點 - 您只需確保它們長度相同並且linestyle格式(在本例中爲'p')是繪製標記而不是線條的東西。另一方面,我不知道你設置了什麼樣的「其他」情況,或者你爲什麼需要檢查限制,所以不能發表評論,但是如果不在這裏使用結構,你會使生活更輕鬆。 – nkjt

+0

非常感謝。兩者都很完美。對此,我嘗試在這個圖上疊加一個極座標圖,我可以通過節點動畫實現它。但是我必須放置不止一個這樣的情節。用這些方程得到極座標圖。 theta = 0:pi/1000:5 * pi; en = cos(pi/2 * cos(theta))* cos(pi。* cos(theta)); polar(theta,en);我想把這些極地圖中的一些4或5放在具有移動節點的同一地塊上。劇情可以在隨機/固定的地方。請求真正的幫助。 – user3222664