MATLAB技巧:生成好看的gif图‌

之前做了个matlab制作gif的视频,现在把代码写一下,便于大家复制。

大概就是这种效果:

二维正态函数

生成gif图部分:

%By HDTT%

f_num=1;%帧数索引

%画图部分%

for rho=0:0.02:0.9%选取的动态参数

    normal_2d(0,0,rho);%自定义画图函数。要包含能画出图的函数%

%加标注%

    xlabel x;ylabel y;zlabel z;

    title([num2str((rho))]);

    

    F=getframe(gcf);%截取帧

    I=frame2im(F);%从单个影片帧 F 返回真彩色 (RGB) 图像。

    

    [I,map]=rgb2ind(I,256);%使用具有256种量化颜色的最小方差量化法并加入抖动

                            %将 RGB 图像转换为索引图像I,关联颜色图为map。

    

    if f_num == 1%如果不存在该图片,则创建

        imwrite(I,map,'normal2d.gif','gif', 'Loopcount',inf,'DelayTime',0.1);

    else%如果已经存在该图片,则添加

        imwrite(I,map,'normal2d.gif','gif','WriteMode','append','DelayTime',0.1);

    end

    f_num=f_num+1;%帧数索引+1

end 

内置的二维正态函数部分:

function [ p ] = normal_2d( mu_x,mu_y, rho )

close all;

mu=[mu_x,mu_y];% 均值向量

Sigma=[1 rho;rho 1];% 协方差矩阵

[X,Y]=meshgrid(-3:0.1:3,-3:0.1:3);%在XOY面上,产生网格数据

p=mvnpdf([X(:) Y(:)],mu,Sigma);%求取联合概率密度,相当于Z轴

p=reshape(p,size(X));%将Z值对应到相应的坐标上

figure

set(gcf,'Position',get(gcf,'Position').*[1 1 1.3 1])

subplot(2,3,[1 2 4 5])

surf(X,Y,p),axis tight,title('二维正态分布图')

zlim([0 0.4])

subplot(2,3,3)

surf(X,Y,p),view(2),axis tight,title('在XOY面上的投影')

subplot(2,3,6)

surf(X,Y,p),view([0 0]),axis tight,title('在XOZ面上的投影')

最后再附上生成视频的代码:

以及一些画图的小trick:

你知道怎么把这三张图像下图一样排布吗?

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空