copyobjКопирование объектов из одного родителя в другой с помощью copyobj функция. Копия отличается от оригинала:
Parent теперь свойство является новым родителем.
Маркер перемещения скопированного объекта отличается от исходного.
copyobj не копирует свойства обратного вызова исходного объекта
copyobj не копирует данные приложения, связанные с исходным объектом.
Поэтому == и isequal возвращает значение false при сравнении исходного и нового дескрипторов.
Можно скопировать различные объекты в новый родительский элемент или один объект в несколько новых родительских элементов, если в результате сохраняются правильные отношения родителя и потомка. При копировании объекта, имеющего дочерние объекты, MATLAB ® также копирует все дочерние объекты .
Примечание
Нельзя копировать один и тот же объект несколько раз в один и тот же родительский объект в одном вызове copyobj.
При копировании одного объекта в несколько мест назначения новые дескрипторы возвращаются copyobj находятся в том же порядке, что и родительские дескрипторы.
h = copyobj(cobj,[newParent1,newParent2,newParent3])
Возвращенный массив h содержит новые дескрипторы объектов в указанном порядке:
h(1) -> newParent1 h(2) -> newParent2 h(3) -> newParent3
В этом примере показано, как скопировать несколько объектов в один родительский объект.
Предположим, что вы создаете набор подобных графиков и хотите пометить одну и ту же точку данных на каждом графике. Объекты текста и маркера, используемые для маркировки точки на первом графике, можно скопировать в каждый последующий график.
Создайте и пометьте первый график:
x = 0:.1:2*pi; plot(x,sin(x)) hText = text('String','\{5\pi\div4, sin(5\pi\div4)\}\rightarrow',... 'Position',[5*pi/4,sin(5*pi/4),0],... 'HorizontalAlignment','right'); hMarker = line(5*pi/4,sin(5*pi/4),0,'Marker','*');
Создайте еще два графика без меток:
figure x = pi/4:.1:9*pi/4; plot(x,sin(x)) hAxes1 = gca;
figure x = pi/2:.1:5*pi/2; plot(x,sin(x)) hAxes2 = gca;
Копировать текст и маркер (hText и hMarker) каждому графу, воспитывая их по соответствующим осям. Возврат новых дескрипторов для копий текста и маркера:
newHandles1 = copyobj([hText,hMarker],hAxes1); newHandles2 = copyobj([hText,hMarker],hAxes2);
Поскольку целью является копирование обоих объектов в каждую ось, вызовите copyobj дважды, каждый раз с одной осью назначения.
При звонке copyobj с несколькими объектами для копирования и несколькими родительскими адресатами, copyobj копирует соответствующие объекты в соответствующие родители. То есть, если h и p - массивы дескрипторов длины n, затем этот звонок на copyobj:
copyobj(h,p)
в результате создается поэлементная копия:
h(1) -> p(1);
h(2) -> p(2);
...
h(n) -> p(n);