主要内容

复制对象

复制对象CopyObj

使用一个父亲将对象从一个父母复制到另一个父CopyObj功能。副本与原始副本不同:

  • 父母属性现在是新父母。

  • 复制的对象的手柄与原件不同。

  • CopyObj不复制原始对象的回调属性

  • CopyObj不复制与原始对象关联的任何应用程序数据。

所以,==是平等的比较原始和新手柄时返回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;图(x,sin(x))htext = text('细绳',,,,'\ {5 \ pi \ div4,sin(5 \ pi \ div4)\} \ rightarrow',,,,...'位置',[5*pi/4,sin(5*pi/4),0],,...'水平对齐',,,,'对');hmarker = line(5*pi/4,sin(5*pi/4),0,,“标记”,,,,'*');

创建两个没有标签的图形:

图x = pi/4:.1:9*pi/4;图(x,sin(x))haxes1 = gca;
图x = pi/2:.1:5*pi/2;图(x,sin(x))haxes2 = gca;

复制文本和标记(htextHmarker)通过将它们养育到各个轴上,来到每个图。返回文本和标记副本的新手柄:

newhandles1 = copyObj([[htext,hmarker],haxes1);newhandles2 = copyObj([[htext,hmarker],haxes2);

因为目标是将两个对象复制到每个轴,请致电CopyObj两次,每次都有一个目标轴。

将多个对象复制到多个目的地

你打电话时CopyObj有多个对象要复制和多个父级目的地,CopyObj将各个对象复制给各自的父母。也就是说,如果Hp是长度的手柄阵列n,然后打电话给CopyObj

copyObj(h,p)

结果逐元副本:

h(1) - > p(1);h(2) - > p(2);...h(n) - > p(n);