Main Content

객체 복사

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

여러 객체 복사

이 예제에서는 여러 객체를 단일 부모에 복사하는 방법을 보여줍니다.

유사한 그래프를 여럿 생성한 후 각 그래프에서 동일한 데이터 점에 레이블을 지정한다고 가정하겠습니다. 이 경우, 첫 번째 그래프에서 점에 레이블을 지정하는 데 사용한 text 객체와 marker 객체를 후속 그래프에 각각 복사할 수 있습니다.

첫 번째 그래프를 생성하고 레이블을 지정합니다.

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;

text 및 marker(hTexthMarker)의 부모로 각각의 좌표축을 지정하여 해당 객체를 각 그래프로 복사합니다. text 및 marker 복사본에 대한 새 핸들을 반환합니다.

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);