• Matlab 将计算结果制作成 gif 动画


    Matlab 将计算结果制作成 gif 动画

    引言

    求解包含时间的偏微分方程 (组) 将得到随着时间变化的数值结果, 把这样的数据制作成 gif 动画并结合到幻灯片中, 在毕业答辩、小组讨论、课堂教学等场合有着广泛的应用。生动的彩色 gif 动画具有很强的表现力, 令人刮目相看, 大大提高了报告人所讲述理论结果的直观性、生动性、观赏性。

    函数介绍

    生成 gif 动画主要用到 4 4 4 个函数: getframeframe2imrgb2indimwrite

    1. getframe 函数的一般调用形式为: F=getframe(h), 其作用是截取句柄为 h 的窗口内的一帧图像。

    2. frame2im 函数的作用是把一帧截图转为图像数据。

    3. rgb2ind 函数的作用是将 RGB 图像转换为索引图像, 一般调用形式为: [X, map]= rgb2ind(RGB,n) 。其中, Xmap 分别为转换后的图像数据和颜色表数据, RGB 为转换前的图像数据, n 指定 map 中的颜色数。

    4. imwrite 函数的作用是将图像数据写入图像文件, 一般调用形式为: imwrite(X,map,filename,fmt,Param1,Val1,Param2,Val2...)。其中, Xmap 意义同上, filename 为文件名, fmt 为文件格式,Param1,Val1,Param2,Val2... 为若干可选参数及其取值。如:参数 LoopCount 为动画的循环播放次数, 这里设为 inf, 即无穷大。参数 DelayTime 为每帧间隔时间, 单位秒。参数 WriteMode 为写入文件的模式, 有覆盖 overwrite (默认) 和追加 append 两种选择。

    Matlab源代码

    生成 gif 动画的示例代码如下:


    clear
    clc
    close
    x=-1:0.02:1;y=x;
    [X,Y]=meshgrid(x,y);
    filename='test.gif';
    for a=1:10
        u=a*exp(-10*(X.^2+Y.^2));
        mesh(x,y,u),axis([-1 1 -1 1 0 10]),drawnow
        im=frame2im(getframe(gcf));
        [A,map]=rgb2ind(im,256);
        if a==1
            %先以覆盖模式写入指定的gif文件
            imwrite(A,map,filename,'gif','LoopCount',Inf,'DelayTime',0.1);
        else
            %再以追加模式将每一帧写入gif文件
            imwrite(A,map,filename,'gif','WriteMode','append','DelayTime',0.1);
        end
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    运行代码之后在当前目录下生成 gif 文件, 该动画显示了一个三维高斯函数的峰值逐渐增大的过程。

    test


    本人水平有限, 若有不妥之处, 恳请批评指正.

    作者邮箱: turingscat@126.com

  • 相关阅读:
    LevelSequence源码分析
    (PC+WAP)织梦模板冲压模具类网站
    【笔试强训选择题】Day36.习题(错题)解析
    2022年湖北建筑八大员报考条件和报名时间考试时间是什么时候呢?甘建二
    第一章 概述 | 计算机网络(谢希仁 第八版)
    2022下半年《软考-系统架构设计师》备考经验分享
    【ESD专题】静电防护物品、静电测试工具及防静电符号
    LeetCode每日一题——854. 相似度为 K 的字符串
    C++语言 青少年0基础可学习(3)
    【无标题】未完成
  • 原文地址:https://blog.csdn.net/qq_42818403/article/details/127841877