2011-11-25 4 views
0

대기열 버퍼를 생성했으며 시간이 지남에 따라 대기열에있는 패킷 수의 플롯을 생성해야합니다. 나는 초보자이며 while 루프를 실행 한 후에 매번 버퍼에 패킷 수를 저장하는 방법을 찾을 수 없으므로 프로그램을 실행할 때 루프 종료시 대기열에있는 패킷 수의 플롯을 제공합니다. 루프의 실행의 모든 ​​단계에서 시간이 지남에 따라 'Q'의 플롯을 얻는 방법을 제안 해 줄 수 있습니까? 아래 코드를 제공했습니다.생성 된 값을 사용하여 그래프 그리기

%Queue Buffer% 
Q=0;%queue length 
s=10;%Number of packets departing from queue at each time 
Q2=0;%New queue length 
Ti=0;%Number of times packets arrive 
while Ti<=20 
    Q=0+Q2; 
    a= randi(32,1,1); 
    a1=a-s; 
    a2=Q+a1; 
    Q2= max(0,a2); 
    Ti=Ti+1; 
end 
    t=0:1:100; 
    plot (t,Q,'o') 

답변

1

쉬운 방법

Q = []; 
%For loop start 
Q = [Q Q2]; 
%End for loop 

방법

Q = zeros(1,101); %Since you are plotting from 0:1:100. (Default step is 1, so 0:1:100 = 0:100) 
cnt = 1; 
%For loop start 
Q(cnt) = Q2; 
cnt = cnt + 1; 
%End for loop 
+0

이 어떻게 작동하는지 설명해 주시겠습니까 더 나은 ?? –

+0

쉬운 방법 (또는 잘못된 방법). Q = [] 인 경우 Q를 배열로 선언하고 Q = [Q Q2]는 Q의 새 값에 이전 배열과 Q2의 값을 더한 것을 의미하므로 Q가 각 회전마다 크기가 커집니다 (값 비싼 절차). Q = 0 (1,101)은 1 행 101 열의 0 배열 또는 열 벡터입니다. 그렇다면 Q (cnt) = Q2, 벡터 좌석 번호 cnt는 Q2 값을 포함합니다. 그리고 결국 그래프에서 x (0 : 100) 좌표와 y (Q) 좌표를 플롯하기 위해 플롯 기능을 사용합니다. MATLAB에서 Btw 배열 또는 벡터의 첫 번째 슬롯은 1이 아닙니다. 0 이것이 도움이되기를 바랍니다. –