У меня была аналогичная проблема: сначала я построил три набора экспериментальных данных, затем перешел к оценке параметров, чтобы смоделировать функцию, и хотел каждый раз отображать данные модели, сохраняя экспериментальные данные, но удаляя данные модели из предыдущего прогона. . И я хотел, чтобы легенда это показала. Я смог сделать это с комбинацией решений из разных вопросов.
Исходные команды (вверху моей основной)
close all
гарантирует, что ваш сюжет каждый раз будет начинаться заново
Первый участок (в моем основном)
plot(points,expdata1,'ro','DisplayName','Experimental, L= 0.1 m'); hold on
plot(points,expdata2,'bo','DisplayName','Experimental, L= 0.2 m');
plot(points,expdata3,'go','DisplayName','Experimental, L= 0.3 m');
legend('-DynamicLegend','Location','Best')
drawnow
h_old=plot(0,250);
drawnow
заставляет график рисоваться сразу, а h_old
— это просто «заполнитель», который я буду использовать позже. Я выбрал 0,250, потому что он находится в диапазоне данных (иначе он испортит ось).
Второй график (в вызываемой функции)
h(1)=plot(points,modeldata1,'r-','DisplayName','Model Data, L= 0.1 m');
h(2)=plot(points,modeldata2,'b-','DisplayName','Model Data, L= 0.2 m');
h(3)=plot(points,modeldata3,'g-','DisplayName','Model Data, L= 0.3 m');
delete(h_old);
h_old = h;
drawnow
Я удаляю h_old
и перезаписываю его новыми сюжетами, которые я создал. Таким образом, на второй итерации будет построен график со 2-й итерации, график с 1-й будет удален, и после этих операций я получаю отображение графика (опять же drawnow
).
person
laureapresa
schedule
15.12.2014