Построение графика с использованием сгенерированных значений

Я создал буфер очереди, и мне нужно построить график количества пакетов в очереди с течением времени. Я новичок и не могу найти способы хранить количество пакетов в буфере каждый раз после выполнения цикла 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')

person Community    schedule 25.11.2011    source источник


Ответы (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
person Stefan Gretar    schedule 25.11.2011
comment
Для легкого пути (или неправильного пути). С Q = [] вы объявляете Q как массив, а Q = [Q Q2] означает, что новое значение Q равно старому массиву плюс значение Q2, поэтому Q увеличивается в размере на единицу каждый ход (дорогая процедура ). Q = zeros(1,101) — это массив нулей из 1 строки и 101 столбца или вектор-столбец. Затем вы говорите Q(cnt) = Q2, номер векторного места cnt должен содержать значение Q2. И, наконец, вы используете функцию построения графика для построения координат x (0:100) и координат y (Q) на графике. Кстати, в MATLAB первый слот в массиве или векторе равен 1, а не 0. Надеюсь, это поможет. - person Stefan Gretar; 25.11.2011