注册 登录
编程论坛 Matlab

急问一个MATLAB动画错误!

coolhpas 发布于 2007-05-18 08:53, 1005 次点击

改了一个小程序:
speed=1000;
x=linspace(0,2*pi,speed);
y1=tan(sin(x))-sin(tan(x));
hold on
plot(x,y1);
y2=cos(x);
plot(x,y2);
y1H=line('LineStyle','o','LineWidth',5,...
'MarkerSize',25,'EraseMode','xor',...
'MarkerEdgeColor','b','MarkerFaceColor','r');
y2H=line('LineStyle','o','LineWidth',5,...
'MarkerSize',25,'EraseMode','xor',...
'MarkerEdgeColor','b','MarkerFaceColor','g');

n=length(x);
i=1;
set(gcf,'DoubleBuffer','on');
while 1
set(y1H,'XData',x(i),'YData',y1(i));
set(y2H,'XData',x(i),'YData',y2(i));
drawnow
i=i+1;
if i>n
i=1;
end
end

可以运行,但是有个错误,不知道如何修改?
肯请指教。对于这种多对象的动画应该怎么处理?
??? Invalid handle object.

Error in ==> test at 19
set(y1H,'XData',x(i),'YData',y1(i));

5 回复
#2
janicewei2007-05-18 09:21
我运行了你的程序,没有你说的错,只是有一个警告。
Warning: Setting marker type based on 'LineStyle' property
'Marker' and 'LineStyle' have been made separate properties
Use 'Marker' property to remove this warning.
#3
coolhpas2007-05-18 10:17
我用的是matlab7.0.0.19920 (R14)这个版本的。

请问一下你用的是6.5的么??
#4
janicewei2007-05-18 15:03
我用的是MATLAB7.1的
#5
zhangenter2007-05-20 20:35

这样写的,直接运行是没有错的,但是关闭界面的时候肯定会报错,你在循环里可以这么写
while 1
if ~ishandle(y1H) | ~ishandle(y2H)
break;
end
set(y1H,'XData',x(i),'YData',y1(i));
set(y2H,'XData',x(i),'YData',y2(i));
drawnow
i=i+1;
if i>n
i=1;
end
end

#6
coolhpas2007-05-22 10:20
谢谢
1