MATLAB使用绘图plot制作动态GIF

文章目录

  • 1 前言
  • 2 Demo
    • Demo 1 - 不使用函数
    • Demo 2 - 使用函数

1 前言

在PPT展示或者博客创作中,有时需要插入动态图如GIF,来演示算法效果或者结果。在MATLAB中,可以通过一些代码,将绘图plot转化为动态的GIF。

其大致方法为,写一个循环,每个循环为一个帧,绘制该帧的内容,将此时figure的内容转化为一帧图像,定义两帧的间隔,然后添加到GIF中(第一帧和其他帧的处理方式不一样,详见代码)。

如果想将GIF插入到CSDN博客中,只需要点击工具栏中的图片,然后添加即可。
在这里插入图片描述
效果如下:
在这里插入图片描述

2 Demo

这里提供两个demo。

Demo 1 - 不使用函数

需要一个文件,create_gif_demo_1.m
需要修改的只有两处:

  • 文件名。这里文件名为animation.gif,注意不要漏了后缀。这样会在当前目录下,生成GIF文件。
  • 帧间隔。这里设置的时间间隔为0.1s,可以根据需要修改。
clear all
clc% Define the time steps for your animation
timeSteps = 0:0.1:2*pi;% Create a figure handle
figure;% Loop through each time step
for i = 1:length(timeSteps)% Generate your plot for each time stepx = linspace(0, 2*pi, 100);y = sin(x + timeSteps(i));% Plot customizationplot(x, y, 'LineWidth', 2);title('Sinusoidal Wave Animation');xlabel('X-axis');ylabel('Y-axis');% Capture the current frameframe = getframe(gcf);% Convert the frame to an image matriximg = frame2im(frame);[A,map] = rgb2ind(img,256);% Save the image as a GIF (adjust filename as needed)if i == 1imwrite(A,map, 'animation.gif', 'gif', 'Loopcount', inf, 'DelayTime', 0.1);elseimwrite(A,map, 'animation.gif', 'gif', 'WriteMode', 'append', 'DelayTime', 0.1);end% Pause to create a smooth animationpause(0.1);% For real-time viewing only, can be removed
end% Display a message indicating successful GIF creation
disp('GIF animation created successfully.');

Demo 2 - 使用函数

需要两个文件(放在同一目录下):create_gif.mcreate_gif_demo_2.m
不同于demo 1的地方在于,这里把和GIF相关的代码封装进一个函数里。
这样只需要传入参数:是否为第一帧的flag,帧与帧的时间间隔,GIF文件名称。

function [] = create_gif(flag,delay_time,name_of_the_file)% % Capture the current frameframe = getframe(gcf);% Convert the frame to an image matriximg = frame2im(frame);[A,map] = rgb2ind(img,256);% Save the image as a GIF (adjust filename as needed)if flag == 1 % flag == 1 means it's the first frameimwrite(A,map, name_of_the_file, 'gif', 'Loopcount', inf, 'DelayTime', delay_time);elseimwrite(A,map, name_of_the_file, 'gif', 'WriteMode', 'append', 'DelayTime', delay_time);end
end
clear all
clcdelay = 0.1; % delay between frames, 0.1s
file_name = 'gif_demo_2.gif'; % file name, careful about the .gif suffix% Define the time steps for your animation
timeSteps = 0:0.1:2*pi;% Create a figure handle
figure;% Loop through each time step
for i = 1:length(timeSteps)% Generate your plot for each time stepx = linspace(0, 2*pi, 100);y = sin(x + timeSteps(i));% Plot customizationplot(x, y, 'LineWidth', 2);title('Sinusoidal Wave Animation');xlabel('X-axis');ylabel('Y-axis');% Create GIFflag = i; % flag to indicate whether it's the first framecreate_gif(flag, delay, file_name);% Pause to create a smooth animationpause(0.1);% For real-time viewing only, can be removed
end% Display a message indicating successful GIF creation
disp('GIF animation created successfully.');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2804648.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【计网】TCP的三次握手四次挥手

🍎个人博客:个人主页 🏆个人专栏:JAVA ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 三次握手(Connection Establishment) 四次挥手(Connection Termination) 结语 我…

【安卓逆向】app防止截屏分析与去除

本次分析的app name为:5paH5qGI54uX 这款应用打开之后里面的内容是不允许截图的,防止截图分析:Android应用防止截屏_landroid/view/window;->setflags 0x2000-CSDN博客 App防止恶意截屏功能的方法:iOS、Android和鸿蒙系统的实…

linux监控系统资源命令

当前CPU内核版本 [rootVM-12-12-centos ~]# cat /proc/version Linux version 3.10.0-1160.11.1.el7.x86_64 (mockbuildkbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Fri Dec 18 16:34:56 UTC 2020 当前系统版本 [rootVM-12-1…

C++最佳实践之编译篇

C最佳实践之工程编译 在大型c/c工程开发中,往往会涉及多级CMakeLists.txt的调用,并且调用方式错综复杂,主要有以下两种方式: 1. 子目录中的CMakeList.txt独立生成目标,不作为主目标生成过程的依赖关系(比…

视频评论抓取软件|抖音数据抓取工具

最近我们推出了一款基于C#语言开发的工具。这款工具提供了丰富的功能,旨在帮助用户轻松获取抖音视频内容。让我们一起来详细介绍一下这款工具的主要功能模块: 1. 批量视频提取: 工具提供了便捷的批量视频提取功能,用户只需输入关…

挑战30天学完Python:Day16 日期时间

📘 Day 16 🎉 本系列为Python基础学习,原稿来源于 30-Days-Of-Python 英文项目,大奇主要是对其本地化翻译、逐条验证和补充,想通过30天完成正儿八经的系统化实践。此系列适合零基础同学,或仅了解Python一点…

Elasticsearch:基于 Langchain 的 Elasticsearch Agent 对文档的搜索

在今天的文章中,我们将重点介绍如何使用 LangChain 提供的基础设施在 Python 中构建 Elasticsearch agent。 该 agent 应允许用户以自然语言询问有关 Elasticsearch 集群中数据的问题。 Elasticsearch 是一个强大的搜索引擎,支持词法和向量搜索。 Elast…

深度学习中的样本分类:如何区分正样本、负样本、困难样本和简单样本?

深度学习中的样本分类:如何区分正样本、负样本、困难样本和简单样本? 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入…

Vue3 使用动态组件 component

component 标签&#xff1a;用于动态渲染标签或组件。 语法格式&#xff1a; <component is"标签或组件名">标签内容</component> 动态渲染标签&#xff1a; <template><h3>我是父组件</h3><component is"h1">动态…

Jmeter基础(3) 发起一次请求

目录 Jmeter 一次请求添加线程组添加HTTP请求添加监听器 Jmeter 一次请求 用Jmeter进行一次请求的过程&#xff0c;需要几个步骤呢&#xff1f; 1、添加线程组2、添加HTTP请求3、添加监听器&#xff0c;查看结果树 现在就打开jmeter看下如何创建一个请求吧 添加线程组 用来…

2024年数学建模美赛详细总结以及经验分享

前言&#xff1a; 本文记录与二零二四年二月六日&#xff0c;正好今天是数学建模结束&#xff0c;打算写篇文章记录一下整个过程&#xff0c;以及一些感受、还有经验分享。记录这个过程的原因就是我在赛前&#xff0c;在博客上找了很久&#xff0c;也没有像我这么类似记…

记一次:Python的学习笔记五(Django集成swagger)

上一篇集成在了gatway上了&#xff0c;但给别人使用swagger的时候还是没有文档&#xff0c;如何集成swagger呢&#xff1f; python版本&#xff1a;Python 3.11.5 Django版本&#xff1a;4.2.7 0、Swagger 文档介绍 Swagger 是一种用于 RESTful API 的开源框架&#xff0c;…

网络原理-UDP/TCP协议

协议 在网络通信中,协议是非常重要的一个概念,在下面,我将从不同层次对协议进行分析. 应用层 IT职业者与程序打交道最多的一层,调用系统提供的API写出的代码都是属于应用层的. 应用层中有很多现成的协议,但是更多的,我们需要根据实际情况来进行制作自定义协议. 自定义协议…

【行业会议】优积科技应邀参加住建部模块建筑企业2023年工作座谈会

2023年3月2日&#xff0c;优积建筑科技发展&#xff08;上海&#xff09;有限公司&#xff08;以下简称“优积科技”&#xff09;应邀参加由住房和城乡建设部科技与产业化发展中心&#xff08;以下简称“住建部科技与产业化中心”&#xff09;组织召开的模块建筑企业2023年工作…

linux0.11 源码阅读 head.s setup.s bootsect.s加载位置

从github上下载linux0.11源码 linux0.11源码 将0x10000处的代码往下复制到0开始的地址处。 移动后的内存布局如下 setup中存在gdt和idt的相关数据。此时需要用gdtr和idtr寄存器指向对应的数据。 实模式下&#xff0c;访问内存方式。最多访问1M内存。 分页模式下&…

在Linux操作系统的ECS实例上安装Hive

目录 1. 完成hadoop安装配置2. 安装配置MySql安装配置 3. 安装Hive4. 配置元数据到MySQL5. hiveserver2服务配置文件测试 1. 完成hadoop安装配置 在Linux操作系统的ECS实例上安装hadoop 以上已安装并配置完jdk、hadoop也搭建了伪分布集群 2. 安装配置MySql 安装 下下一步…

Vue 3.0中Tree shaking特性

在 Vue 3.0 中&#xff0c;引入了更好的 Tree shaking 特性&#xff0c;使得在使用 Vue 3 的项目中能够更加高效地进行代码精简和优化。 Tree shaking 是指在打包过程中通过静态分析&#xff0c;去除未使用的代码&#xff08;未被引用的模块或函数&#xff09;&#xff0c;从而…

【Vuforia+Unity】AR07-实现识别条码、二维码内容功能(Barcode Scanner)

Barcode Scanner in Unity | Vuforia Library官方教程&#xff0c;写的很详细&#xff0c;本教程主要参考对象&#xff01; 主要实现扫描生活中常见的二维码&#xff0c;然后弹出二维码链接&#xff0c;当然我们也可以再次回调自定义函数&#xff0c;弹出数字内容&#xff0c;…

鸿蒙LiteOS-M 内核初始化

目录 一、LiteOS-M 初始化内核二、LOS_KernelInit代码分析三、LOS_Start代码解析坚持就有收获 一、LiteOS-M 初始化内核 在LiteOS-M应用程序中&#xff0c;系统初始化如下&#xff1a; /*** brief This is the ohos entry, and you could call this in your main funciton af…

stm32利用CubeMX完成按键控制LED灯的点亮与熄灭

首先画电图&#xff0c;如下&#xff1a;&#xff08;会话最小系统后就可以不画了&#xff0c;如果要是画实物的话必须要有的&#xff0c;不能忘&#xff0c;模拟就无所谓了&#xff09; 然后是CubeMX设置时钟 这次使用的是内部8M时钟&#xff0c;这样能避免proteus闪退的情况&…