动态图关键的两个函数 set()和drawnow
第一步,先表示出静态图
第二步,循环来画出更新后的图像,用set()来更新数据,用drawnow来更新图像
例子一,
%第一步%
x= 0:pi/50:2*pi;
y=sin(x);
h=plot(x,y)
%第二步%
while true
x=x+0.1;
y=sin(x);
set(h,'XData',x,'YData',y);
drawnow;
end
例子2
%第一步%
theat=0:pi/50:8*pi;
x=cos(theat);
y=sin(theat);
z=0:400;
h=plot3(x,y,z);
%第二步%
axis([-1,1,-1,1,0,400]); %设置x,y,z轴的取值范围%
while true
for i =1:100
z=0.98*z;
set(h,'XData',x,'YData',y,'ZData',z);
drawnow;
end
for i=1:100
z=z/0.98;
set(h,'XData',x,'YData',y,'ZData',z);
drawnow;
end
end
会像弹簧一样伸展
例子3
%第一步%
theta=0:pi/100:2*pi;
x=cos(theta);
y=sin(theta);
plot(x,y);
axis equal;
hold on; %两个plot共存在一个图里%
lineX=[0,1];
lineY=[0,0];
h=plot(lineX,lineY);
%第二步%
org=0;
while true
org=org+0.01*pi;
lineX(2)=cos(org);
lineY(2)=sin(org);
set(h,'XData',lineX,'YData',lineY);
drawnow;
end
线会绕圆心旋转
例子4
%第一步%
x=-10:0.1:10;
y=-10:0.1:10;
[X,Y]=meshgrid(x,y);
Z=sin(X)+sin(Y);
h=surf(X,Y,Z);
axis([-10,10,-10,10,-2,2])
%第二步%
while true
for i=1:100
Z=Z*0.98;
set(h,'XData',X,'YData',Y,'ZData',Z);
drawnow;
end
for i=1:100
Z=Z/0.98;
set(h,'XData',X,'YData',Y,'ZData',Z);
drawnow;
end
end
波浪形