• 使用matlab产生二维动态曲线视频文件具体举例


    使用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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    三、 运行结果

    当编程完毕,点击matlab的运行按键,就可以进行动态曲线视频的生成,其中中间图像如图1所示。所生成的视频文件,如本博文附件。

    图1 动态二维曲线生成(中间过程)
    图1 动态二维曲线生成(中间过程)

    四、注意事项

    特别注意
    当重新运行时候,要避免刚才生成的视频文件,不要和新的文件名重名;否则,运行到后面,matlab会报错,而无法保存所生成的视频!

  • 相关阅读:
    傅里叶变换和其图像处理中的应用
    AOP到底是啥
    C/C++微实践 - 细胞计数
    融合多策略的萤火虫算法求解多目标优化问题(Matlab代码实现)
    JavaScript:实现AvlTree树算法(附完整源码)
    MySQL中SQL语句执行顺序分析
    被一位读者赶超,手摸手 Docker 部署 ELK Stack
    js 数组中去重的五种方法
    忘记压缩包密码?解决方法一键找回,省时又便捷!
    C++智能指针
  • 原文地址:https://blog.csdn.net/qq_18937049/article/details/133278781