matlab画动态简单轨迹,MATLAB中绘制质点轨迹动图并保存成GIF

工作需要在MATLAB中绘制质点轨迹并保存成GIF以便展示。

绘制质点轨迹动图可用comet和comet3命令,使用例子如下:

t = 0:.01:2*pi;

x = cos(2*t).*(cos(t).^2);

y = sin(2*t).*(sin(t).^2);

z = t;

comet(x,y,0.1);  %绘制二维

%comet3(x,y,z,0.1);  %绘制三维

这有一个问题在于comet或comet3无法控制绘制的动画的速度,为了实现这一点,一个可行的方法是重写comet和comet3,在每一个for循环中增加:

pause(interval)

其中interval可以是用户输入的每帧的时间间隔。

为了实现一边绘制动图,一边保存成GIF动画,我的实现方法是重写comet和comet3,具体如下:

在每个for循环的末尾增加:

frame = getframe(gcf);

im = frame2im(frame);

[imind,cm] = rgb2ind(im,256);

if GifImCount == 1;

imwrite(imind,cm,filename,'gif','DelayTime',interval, 'Loopcount',inf);

else

imwrite(imind,cm,filename,'gif','DelayTime',interval, 'WriteMode','append');

end

GifImCount = GifImCount + 1;

其中GifImCount在程序初始设为0,filename为要存储的gif文件的名称。原先for循环中的drawnow语句可以去掉,因为getframe本身就会调用drawnow函数。

但是这样有一个问题,就是这样只能获取当前帧的动画,尾迹消失了,即无法得到连续的动画效果。这个问题我初始想肯定是getframe里面某处擦除了图形,可以通过修改getframe来解决,但是还是没有解决。最后找到一个权宜之计,那就是重写comet和comet3函数时,不进行原先的body和tail的分别绘制,将comet和comet3中的“% Grow the body”和“% Clean up the tail”两部分去掉,只留“% Primary loop”部分,并稍做如下修改:

% Primary loop

for i = 1:m

set(head,'xdata',x(i),'ydata',y(i))

set(tail,'xdata',x(1:i),'ydata',y(1:i))

frame = getframe(gcf);

im = frame2im(frame);

[imind,cm] = rgb2ind(im,256);

if GifImCount == 1;

imwrite(imind,cm,filename,'gif','DelayTime',interval, 'Loopcount',inf);

else

imwrite(imind,cm,filename,'gif','DelayTime',interval, 'WriteMode','append');

end

GifImCount = GifImCount + 1;

end

大意是每次绘制都重绘从1到i的点。通过以上的修改,大致能够实现在MATLAB中绘制质点轨迹动图并保存成GIF的效果。

下面是效果:

c3a766b7979494df522939ed90b6a91e.gif

8504e7de54f941f546fef3f997d4c679.png

如果你有更好的方法,请告知我,谢谢!

R中绘制聚类的离散图

R中利用cluster简单的绘制常见聚类离散图 # 引入cluster库(clara.fanny) library(cluster) # 聚类散点图绘制 # 引入factoextra,cluster库 ...

在github中的READEME中添加图片或者动图

在github中reademe中添加动图或者图片 将你需要展示的图片放在这个项目中的某个文件夹中,然后再reademe中这样引入 ![maze](https://github.com/GainLoss ...

Ubuntu10.04中利用V4L2读取摄像头数据并保存成文件【转】

转自:http://blog.chinaunix.net/uid-29339876-id-4042245.html 利用V4L2读取UVC摄像头数据并保存成视频文件,主要参考http://linuxt ...

matlab中,在灰度解剖图上叠加阈值图,by by DR. Rajeev Raizada

1.参考 reference 1. tutorial主页:http://www.bcs.rochester.edu/people/raizada/fmri-matlab.htm. 2.speech_b ...

MATLAB中绘制图形的时候,坐标和标题倒置

1.如上图所示,直方图的坐标轴以及标题文字都颠倒了 原因: 在MATLAB显示的subplot函数中,图像与直方图这些不属于一类,所以在显示的时候会出现这种情况 解决办法:1>将图像与直方图分开 ...

Matlab中使用Java api画图图形并保存为jpeg格式

直接上代码: close all; import java.io.*; import java.awt.*; import java.awt.image.BufferedImage; import j ...

Android 使用pl.droidsonroids.gif.GifImageView在安卓中显示动图遇到的问题

在做一款聊天软件,其中聊天界面需要发送表情,而表情都是动图,在安卓中想要显示动图,就要借助第三方框架,我选的是pl.droidsonroids.gif.GifImageView. 使用方法如下:你在g ...

matlab中subplot 在平铺位置创建坐标区

来源:https://ww2.mathworks.cn/help/matlab/ref/subplot.html?searchHighlight=subplot&s_tid=doc_srcht ...

关于matlab中特殊字符, 上标和下标

'T=25\circC',(摄氏度) 下标用 _{下划线} 上标用^ (尖号) 希腊字母等特殊字符用 α \alpha β \beta γ \gamma θ \theta Θ \Theta Г \Ga ...

随机推荐

java”伪“批量上传

jsp页面代码

Window Server 2008 R2 TFS2010的安装和配置

1.打开Setup进行安装 2.下一步,然后功能全选 3.点击安装,便开始安装了 安装成功 配置 进行配置之后,选择高级,因为其他功能可能没那么多 到如下界面后,直接进行下一步就可以 下一步,设置TF ...

Windows Live Writer代码高亮插件对比

一.Paste ASVisual Studio Code 参考:http://www.cnblogs.com/mikelij/archive/2010/11/13/1876199.html 插件下载: ...

js控制tr 隐藏 显示

tr td 外面不要套div

排期确定结果:
  • 5
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值