函数名称
copyobj
函数功能
复制图形对象及其后代,可以用来
- 利用复制副本的方式调用已创建的坐标轴区图像;
- 将多张figure中的图像合并到一张figure中进行对比;
官方介绍
new_handle = copyobj(h,p)
关于上面这行代码,官方的解释为:
复制 h 标识的一个或多个图形对象并返回新对象句柄或新对象数组。新图形对象是 p 指定的图形对象的子级。
通俗的讲,也就是:
将句柄h对应的图形对象(子级)复制到p(父级)中,而输出的new_handle则是p的子级。
使用时必须注意父级与子级的关系。
Figure > Axes > Line
Line是Axes的子级。
Axes是Figure的子级。
使用示例
将多张 figure 中的图像合并到一张 figure 中进行对比,以及将 figure 中的图像复制到 UIAxes 中
clc,clear,close all
x = linspace(0,2*pi,100);
y1 = sin(x);
y2 = cos(x);
y3 = sin(2*x);
F1 = figure(1);
L1 = plot(x,y1,'LineWidth',1.3,'Color','r');
F2 = figure(2);
L2 = plot(x,y2,'LineWidth',1.3,'Color','g');
F3 = figure(3);
L3 = plot(x,y3,'LineWidth',1.3,'Color','b');
Fig = figure;
Ax = axes;
% 方式1:直接利用Axes和Lines的父子关系,将figure(1)中的图像复制到figure中
L1_new = copyobj(L1,Ax);
set(L1_new,'Color','k')
% 方式2:利用Figure和Axes的父子关系,再利用Axes和Lines的父子关系,将figure(2)中的图像复制到figure中
L2_new = copyobj(F2.Children.Children,Ax);
set(L2_new,'LineStyle','--')
% 方式3:使用get函数获取Figure的子级和子级的子级,将figure(3)中的图像复制到figure中
L3_new = copyobj(get(get(F3,'Children'),'Children'),Ax);
set(L3_new,'Marker','o')
legend('line1','line2','line3')
% 将figure中的图像复制到Ui坐标区中
Ui_Ax = uiaxes;
copyobj(Fig.Children(2).Children,Ui_Ax)