MATLAB 动画的制作与保存

matlab有三种方法来创建动画:

①以质点运动轨迹的方式来创建动画

theta=0:0.001:2*pi;
%定义圆的半径
r=10;
%生成圆上各点的横纵坐标
x=r*cos(theta);
y=r*sin(theta);
comet(x,y);

生成的动画效果如下 (其中的某一步)

最终结果如下

 

comet(x,y) 显示 y 对 x 的彗星图。 

comet3与comet的用法相似;

在绘图过程中不断抓取一系列的图片并保存,然后再在后台连续播放这些图片,这种方法称为“影片模式”

使用该模式生成动画,需要以下两个步骤

a.调用getframe函数抓取界面并保存为图像

b.调用movie函数连续播放保存的图像

clc;clear;
figure(1);
x=0:pi/50:2*pi;
y=sin(x);
h=plot(x,y);
%保存坐标值,使得所有的帧都显示在同一个坐标轴中
axesValue=axis;
%创建动画
for ii=1:10
    %在坐标轴中绘制曲线
    for jj=1:length(x)*ii/10
        set(h,'xdata',x(1:jj),'ydata',y(1:jj),'color','r');
        axis(axesValue);
    end
    %抓取界面图像,保存到矩阵A
        A(ii)=getframe;
end
%连续播放矩阵A中的图像两次
movie(A,2);

 

 

③擦除模式

 使用擦除模式来生成动画需要以下步骤

a.产生一个图形对象,将其EraseMode属性设置为xor;

b.在循环中改变对象的坐标值(XData,YData,ZData属性值),重新绘制图形

每次循环都调用drawnow命令刷新界面

figure(1);
x=0:pi/50:2*pi;
y=sin(x);
plot(x,y);
%产生一个红点在曲线上移动
h=line(0,0,'color','r','marker','.','markersize',40,'erasemode','xor');
%取得坐标轴的取值范围
axesValue=axis;
%创建动画,在曲线上移动红点
for jj=1:length(x)
    set(h,'xdata',x(jj),'ydata',y(jj),'color','r');
    %设置坐标轴的范围,以使所有图形的大小相同
    axis(axesValue);
    pause(0.2);
    drawnow;
end

 

 

猜你喜欢

转载自blog.csdn.net/yangSHU21/article/details/131343921