%创建初始动画线条对象。%然后,通过循环向线条中添加1000个点。%在添加每个新点后,使用drawnow在屏幕上显示该新点。
h = animatedline;axis([0,4*pi,-1,1]);
x =linspace(0,4*pi,100);
y =sin(x);for k =1:length(x)addpoints(h,x(k),y(k));
drawnow;%要加快渲染速度,可在每次遍历循环时向线条中添加多个点或使用drawnow limitrate。end%查询线条中的点。%[xdata,ydata] = getpoints(h);%清除线条中的点。%clearpoints(h);%drawnow;
示例2:指定动画线条颜色
%将动画线条的颜色设置为红色并将其线宽设置为3磅。
x =[12];
y =[12];
h =animatedline(x,y,'Color','r','LineWidth',3);
示例3:指定日期时间和持续时间值
%要绘制非数值点,如日期时间和持续时间值,请先用要绘制的类型的值初始化动画线条。%您可以指定绘图中的第一个点或占位符值,如NaT或NaN。%例如,在x轴上绘制日期时间值,在y轴上绘制持续时间值(分钟)。%用NaT值和minutes(NaN)值初始化动画线条。%然后创建一个日期时间向量(x)和持续时间向量(y),并将这些向量中的点添加到动画线条中。
an =animatedline(NaT,minutes(NaN),"Marker","o");
x =datetime(2018,5,1:5);
y =minutes([173114]);addpoints(an,x,y);
示例4:设置最大点数
%将动画线条中的点数限制为100个。%通过循环一次向线条中添加一个点。%当线条包含100个点时,向线条添加新点会删除最旧的点。
h =animatedline('MaximumNumPoints',100);axis([0,4*pi,-1,1])
x =linspace(0,4*pi,200);
y =sin(x);for k =1:length(x)addpoints(h,x(k),y(k));
drawnow;end
示例5:批量添加点以生成快速动画
%通过循环向动画线条中添加10000个点。%由于点的数目很大,因此每次通过循环向线条中添加一个点可能很慢。%改为每次通过循环向线条中添加100个点以产生更快的动画。
h = animatedline;axis([0,4*pi,-1,1]);
numpoints =10000;
x =linspace(0,4*pi,numpoints);
y =sin(x);for k =1:100:numpoints-99
xvec =x(k:k+99);
yvec =y(k:k+99);addpoints(h,xvec,yvec);
drawnow;end
示例6:使用drawnow limitrate创建快速动画
%通过循环向动画线条中添加10000个点。%由于点的数目很大,因此通过drawnow显示更改可能很慢。%改用drawnow limitrate可以产生更快的动画。
h = animatedline;axis([0,4*pi,-1,1]);
numpoints =10000;
x =linspace(0,4*pi,numpoints);
y =sin(x);for k =1:numpoints
addpoints(h,x(k),y(k));
drawnow limitrate;end
示例7:定时更新屏幕以提高效率
%在屏幕上绘制更新之前先运行动画循环的多个迭代。%在drawnow太慢或drawnow limitrate太快时可以使用此技术。%例如,每1/30秒更新一次屏幕。%使用tic和toc命令可跟踪屏幕更新间经过的时间。
h = animatedline;axis([0,4*pi,-1,1]);
numpoints =100000;
x =linspace(0,4*pi,numpoints);
y =sin(x);
a = tic;%开始计时for k =1:numpoints
addpoints(h,x(k),y(k));
b =toc(a);%结束计时if b >(1/30)
drawnow;
a = tic;%重置endend