使用matlab产生二维动态曲线视频文件举例
在进行有些函数变化过程时候,需要用到直观的动态显示,本博文将举例说明利用Matlab编程进行二维动态曲线的生成视频文件。
一、问题描述
利用matlab编程实现 y 1 = s i n ( t ) , y 2 = c o s ( t ) , y 3 = s i n ( t ) ∗ c o s ( t ) y1=sin(t),y2=cos(t),y3=sin(t)*cos(t) y1=sin(t),y2=cos(t),y3=sin(t)∗cos(t),其中 t ∈ [ 0 , 2 π ] t \in [0,2\pi ] t∈[0,2π],生成 y 1 , y 2 , y 3 y1,y2,y3 y1,y2,y3随时间 t t t变化的动态曲线视频文件。
二、编程
具体程序和步骤见如下程序:
clc
clear all
close all
%% 1. 产生数据
t=0:.01:2*pi;
y1=sin(t)+1;
y2=cos(t)+2;
y3=sin(t).*cos(t)+3;
%% 2.打开图,并创建一个坐标系,并绘制数据,生成视频
figure
axes;
%
% 2.1 步骤1: 创建并打开视频对象
my_video = VideoWriter('moiveplot0.avi');
open(my_video);
%
% 2.2 循环数据,并生成视频
for i=1:length(t)
% (1)绘制数据
h(1)=plot(t(i),y1(i),'o','markerfacecolor','b','markersize',15);
h(2)=plot(t(i),y2(i),'o','markerfacecolor','r','markersize',10);
h(3)=plot(t(i),y3(i),'o','markerfacecolor','g','markersize',5);
hold on
plot(t(1:i),y1(1:i),'b','lineWidth',4)
plot(t(1:i),y2(1:i),'r','lineWidth',2.5)
plot(t(1:i),y3(1:i),'g','lineWidth',1.5)
set(gca,'xlim',[0 2*pi],'ylim',[-2 5])
% (2)获取当前帧
currFrame = getframe;
% (3)将当前帧写入视频对象中
writeVideo(my_video,currFrame);
% (4) 删除当前绘制的帧
delete(h)
end
%
%% 3. 关闭和保存视频对象
close(my_video);
三、 运行结果
当编程完毕,点击matlab的运行按键,就可以进行动态曲线视频的生成,其中中间图像如图1所示。所生成的视频文件,如本博文附件。
图1 动态二维曲线生成(中间过程)
四、注意事项
特别注意:
当重新运行时候,要避免刚才生成的视频文件,不要和新的文件名重名;否则,运行到后面,matlab会报错,而无法保存所生成的视频!