之前做了个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:
你知道怎么把这三张图像下图一样排布吗?
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks ,Hyperworks, Protel,CAXA,OpenWorks LandMark,MATLAB,Enovia,Winchill,TeamCenter,MathCAD,Ansys, Abaqus,ls-dyna, Fluent, MSC,Bentley,License,UG,ug,catia,Dassault Systèmes,AutoDesk,Altair,autocad,PTC,SolidWorks,Ansys,Siemens PLM Software,Paradigm,Mathworks,Borland,AVEVA,ESRI,hP,Solibri,Progman,Leica,Cadence,IBM,SIMULIA,Citrix,Sybase,Schlumberger,MSC Products...