【问题描述】:当我们使用句柄来控制图形多个对象移动时,我们会对plot、fill、rectangle、patch等绘图函数做句柄,但是当我们对句柄的属性赋值的时候,却发现句柄被删除了,无法对句柄属性赋值,程序报错或者打不到你想要的结果。
代码如下
x=0:0.1:2*pi;
y1=sin(x);
y2=y1+1;
h1=plot(x,y1);
h2=plot(x,y2);
set(h1,'Xdata',x,'Ydata',y1-1);
set(h2,'Xdata',x,'Ydata',y2+1);
【解决方案】:我使用百度多次搜索都没有找到答案。于是,通过自己的不断尝试,在句柄前使用hold on,就可以解决该问题。
修改后的代码:
x=0:0.1:2*pi;
y1=sin(x);
y2=y1+1;
hold on; %图像保持,这样第2个plot就不会删除前一个图像和存在其中的图像句柄h1了
h1=plot(x,y1);
h2=plot(x,y2);
set(h1,'Xdata',x,'Ydata',y1-1);
set(h2,'Xdata',x,'Ydata',y2+1);
【运行成功】通过对象h1和h2移动曲线位置成功!!
没有报错句柄没有被删除,通过set改变h1和h2的数据值,让曲线上下移动。