Оперативный график в MATLAB

Я очень плохо знаком с MATLAB, и я пытался отобразить оперативный график некоторых вычислений. Я имею N размерный вектор и я работаем с m значения за один раз (говорят m = N/4), таким образом, я хочу вывести первое на печать m значения и затем как только второе m значения вычисляются, сделали, чтобы они заменили первый график.

Мой подход был следующие:

for i=1:N,
  ...
  //compute m
  ...
  plot(m);
end;

но это не удается обновить график в каждом цикле и ожидает всех циклов, чтобы закончить отображать данные на графике. Мой вопрос: Если я использую другую функцию вместо plot или я мог добавить некоторую задержку каждого цикла?

Я думаю, что должен быть способ, которым я не знаю для обновления графика вместо того, чтобы повторно вывести его на печать каждый раз.

12
задан gnovice 23 September 2017 в 17:30
поделиться

2 ответа

Вы можете добавить вызов DRAWNOW, чтобы заставить график обновляться. См. справочную страницу. Обратите внимание, что DRAWNOW вызывает очистку очереди графических событий, что может привести к выполнению обратных вызовов и т. д.

11
ответ дан 2 December 2019 в 03:28
поделиться

Как Эдрик упомянул , вы обязательно захотите включить команду drawow после вызова plot , чтобы принудительно обновить графику. Однако существует гораздо более эффективный и плавный метод анимации сюжетов, который не требует каждый раз воссоздавать весь сюжет. Вы можете просто инициализировать график, записать дескриптор объекта графика, а затем изменить свойства этого объекта в своем цикле с помощью команды set . Вот пример:

hLine = plot(nan);         % Initialize a plot line (which isn't displayed yet
                           %   because the values are NaN)
for i = 1:N                % Loop N times
  ...
  % Compute m here
  ...
  set(hLine, 'YData', m);  % Update the y data of the line
  drawnow                  % Force the graphics to update immediately
end

Кроме того, перед циклом и после вызова plot вы можете установить ряд свойств осей , например, пределы осей и т. д., если вы хотите, чтобы оси оставались фиксированными и не меняли свой внешний вид с каждым новым построенным вектором m .

32
ответ дан 2 December 2019 в 03:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: