Animation: (1) animatedline

示例1:显示线条动画

%创建初始动画线条对象。
%然后,通过循环向线条中添加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 = [1 2];
y = [1 2];
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([1 7 3 11 4]);
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; %重置
    end
end

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值