Drawnow on Matlab: в нем хранится фигура или хранится переменная?

Можете ли вы помочь мне по вопросу о DRAWNOW в Matlab?

Когда мы используем drawnow в Matlab, что происходит внутри?

Он хранит фигуру предыдущего графика, затем строит следующую часть графика на том же рисунке?

ИЛИ он забывает весь предыдущий граф и строит график фактического нового графика (как с предыдущей, так и со следующей частью)?

Оба метода показывают один и тот же эффект: динамический график. Но я хочу точно знать, что происходит внутри.

Спасибо!

1 ответ

Решение

drawnow удостоверяется, что MATLAB прекращает делать все, что делает, и рисует на экране.

Если вы делаете

hold on
for ii=1:1000
   plot(ii,rand(1)); % assume complicated maths here
end

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

Если вы делаете

hold on
for ii=1:1000
   plot(ii,rand(1));
   drawnow; % Take a break, draw everything that you must before continuing
end

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

drawnow не имеет никакого влияния в том, что фигура хранится или нет, это работа hold on,

Если вы беспокоитесь о перерисовке всего этого, то убедитесь, что вы посмотрите на set а также get методы для графики. С ними вы можете get xdata, измените его и set это снова, гарантируя, что графический движок не перерисовывает / перевычисляет что-либо еще.


Документация для hold функция:

https://uk.mathworks.com/help/matlab/ref/hold.html

Другие вопросы по тегам