昨晚帮一个在日本读博的女学霸做的,感觉蛮有意思的。出于保留学习点点滴滴的目的,记录下过程。
保密的关系,生成数据的程序不能放上,只能展示下数据的结构:
动画的每帧是每次生成的数据绘制成的二维图,为了方便,我们把所有的数据存储到了一个X和Y中,如下图所示:
1 绘图
for a=1:80
clf
for it=1:12
plot(X(a,((it-1)*12+1):it*12),Y(a,((it-1)*12+1):it*12))
hold on
plot(X(a,it:12:end),Y(a,it:12:end))
hold on
if (it<=2)
plot(X(a,it:13:end),Y(a,it:13:end))
hold on
else
plot(X(a,it:13:end-13*(it-2)),Y(a,3:13:end-13*(it-2)))
hold on
end
plot(X(a,(12*it+1):13:end),Y(a,(12*it+1):13:end))
hold on
if it>=2
plot(X(a,it:11:end-13*(12-it)),Y(a,it:11:end-13*(12-it)))
hold on
end
plot(X(a,12*it:11:end),Y(a,12*it:11:end))
hold on
end
axis([-2 13 -1 13])
pause(0.1);
drawnow;
end
可惜不能放视频。。。截图:
根据动画,可以看出数据的变化情况。
2 avi视频
aviobj=VideoWriter('xiaoxiao.avi');
open(aviobj);
for a=1:80
clf
for it=1:12
plot(X(a,((it-1)*12+1):it*12),Y(a,((it-1)*12+1):it*12))
hold on
plot(X(a,it:12:end),Y(a,it:12:end))
hold on
if (it<=2)
plot(X(a,it:13:end),Y(a,it:13:end))
hold on
else
plot(X(a,it:13:end-13*(it-2)),Y(a,3:13:end-13*(it-2)))
hold on
end
plot(X(a,(12*it+1):13:end),Y(a,(12*it+1):13:end))
hold on
if it>=2
plot(X(a,it:11:end-13*(12-it)),Y(a,it:11:end-13*(12-it)))
hold on
end
plot(X(a,12*it:11:end),Y(a,12*it:11:end))
hold on
end
axis([-2 13 -1 13])
pause(0.1);
drawnow;
currFrame = getframe;
writeVideo(aviobj,currFrame);
end
close(aviobj); %关闭