Ответ 1
Вы можете добавить вызов DRAWNOW
, чтобы заставить график обновляться. См. Справочную страницу . Обратите внимание, что DRAWNOW
вызывает сброс очереди графических событий, что может вызвать выполнение обратных вызовов и т.д.
Я очень новичок в MATLAB, и я пытался отобразить график в реальном времени некоторых вычислений. У меня есть вектор размера N
, и я работаю со значениями m
за раз (скажем m = N/4
), поэтому я хочу построить первые значения m
, а затем, как только будут вычислены значения второго m
замените их первым.
Мой подход был следующим:
for i=1:N,
...
//compute m
...
plot(m);
end;
но он не обновляет график в каждом цикле и ждет завершения всех циклов для построения данных. Мой вопрос: следует ли использовать другую функцию вместо plot
или я могу добавить некоторую задержку в каждом цикле?
Я думаю, что должен быть способ, которым я не знаю, для обновления сюжета, а не для повторного отображения его каждый раз.
Вы можете добавить вызов DRAWNOW
, чтобы заставить график обновляться. См. Справочную страницу . Обратите внимание, что DRAWNOW
вызывает сброс очереди графических событий, что может вызвать выполнение обратных вызовов и т.д.
Как Эдрик упомянул, вы обязательно захотите включить drawnow
после вызова plot
, чтобы принудительно обновить графику. Тем не менее, существует гораздо более эффективный и более плавный способ анимации сюжетов, который не предполагает воссоздания всего сюжета каждый раз. Вы можете просто инициализировать свой сюжет, захватить handle в объект сюжета, а затем изменить свойства этого объекта в своем цикле с помощью 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
вы можете установить ряд свойств осей, например, axes limits и т.д., если вы хотите, чтобы оси оставались фиксированными и не меняли свой внешний вид с каждым новым вектором m
, который нанесен на график.