Разумное создание объекта

Объект наверху

Графические объекты являются комплексными структурами, которые хранят информацию (данные и характеристики объектов), прислушиваются к определенным событиям, чтобы произойти (свойства коллбэка) и могут вызвать изменения в других объектах разместить их существование (обновление пределов осей, и так далее). Поэтому создание объекта использует ресурсы.

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

Можно часто улучшать производительность следующим эти инструкции:

  • Не создавайте лишние объекты

  • Постарайтесь не искать иерархию объектов

Не создавайте лишние объекты

Ищите случаи, где можно создать меньше объектов и достигнуть тех же результатов. Например, предположите, что вы хотите построить 10 1000 массив точек, показывающих только маркеры.

Этот код создает 1 000 объектов линии:

x = rand(10,1000);
y = rand(10,1000);
plot(x,y,'LineStyle','none','Marker','.','Color','b');

Преобразуйте данные от 10 1000 до 10000 1. Этот код создает график, который выглядит одинаково, но создает только один объект:

plot(x(:),y(:),'LineStyle','none','Marker','.','Color','b')

Использование NaNs, чтобы моделировать несколько строк

Если координатные данные содержат NaNs, MATLAB® не представляет те точки. Можно добавить NaNs в данные о вершине, чтобы создать линейные сегменты, которые похожи на отдельные линии. Разместите NaNs в тех же местоположениях элемента в каждом векторе данных. Например, этот код, кажется, создает три отдельных линии:

x = [0:10,NaN,20:30,NaN,40:50];
y = [0:10,NaN,0:10,NaN,0:10];
line(x,y)

Изменение данных вместо того, чтобы создать новые объекты

Чтобы просмотреть различные данные по тому, что является в основном тем же графиком, более эффективно обновить данные существующих объектов (линии, текст, и т.д.) вместо того, чтобы воссоздать целый график.

Например, предположите, что вы хотите визуализировать эффект на своих данных различных определенных параметров.

  1. Установите пределы любой оси, которая может быть определена заранее или устанавливает режимы пределов по осям на manual.

  2. Повторно вычислите данные с помощью новых параметров.

  3. Используйте новые данные, чтобы обновить свойства данных линий, текста, и т.д. объекты, используемые в графике.

  4. Вызовите drawnow обновить фигуру (и все дочерние объекты в фигуре).

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

figure
z = peaks;
h = surf(z);
drawnow 
zlim([min(z(:)), max(z(:))]);
for k = 1:50
   h.ZData = (0.01+sin(2*pi*k/20)*z);
   drawnow
end