这几天做会议用的PPT,突然,发现需要做一些动态的图去展示工作。因此,学习了一些有关利用MATLAB做动态的技巧。这里和大家分享一下。
1、坐标不同型(类似于gif文件)
要想达到gif的动态效果,那么需要在你画第i个点时,前(i-1)个点的画图过程要首先展现出来。因此,只要我们记录画过的每一个点图像,然后依次快速移动这些图片,我们就可以达到这种目的了。在Matlab中提供了getframe和movie 来完成这个过程。代码如下:
clc;
closeall;
x1 = 0; s=0.1; %确定起始点和增量
numberaction=45; %确定总动画帧数
for k=1:numberaction
x1=x1+s; %确定画图时的横坐标终止值x1
x=0:0.01:x1;
y=sin(x);
plot(x,y);
axis([0 2*pi -1.8 1.8]); %坐标轴的范围
m(k)=getframe; %将当前图形存入矩阵m中
end
movie(m,2) %重复2此播放动画
2、坐标动(先画图,然后移动坐标轴)
%%
t=0:0.01:50*pi;
m=sin(t);
plot(t,m);
x=-2*pi;
axis([x,x+4*pi,-2,2]);
grid on
while 1
if x>max(t)
break;
end
x=x+0.1;
axis([x,x+4*pi,-2,2]);
pause(0.3);
end
3、利用line()函数画动态图.
clear all;
x=1:1:50;
y=x.^5+x.^4+4*random('Normal',0,1,1,length(x));
for i = 1:49
t=i+1;
line([x(i),x(i+1)],[y(i),y(i+1)]);
pause(0.5);
end
4、利用comet(),comet3()画质点动态图
comet(y)的图像显示质点绕向量y,comet(x,y)的图像显示质点绕向量y与x,comet(x,y,p),下面以comet(x,y)为例进行说明:
平抛运动
vx =50;
t =0:0.01:10;
x = vx*t;
y =-9.8*t.^2/2;
comet(x,y)
匀速圆周运动
sita =0:0.001:2*pi;
r = 9;
x=r*cos(sita);
y=r*sin(sita);
comet(x,y)