객체 복사
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(hText
및 hMarker
)의 부모로 각각의 좌표축을 지정하여 해당 객체를 각 그래프로 복사합니다. text 및 marker 복사본에 대한 새 핸들을 반환합니다.
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);