【MATLAB】用MATLAB绘制动图并保存gif格式

【MATLAB】用MATLAB绘制动图并保存gif格式

用MATLAB绘制动图并保存gif格式

参考链接

https://www.zhihu.com/question/303355108

MATLAB绘制动图

举个栗子,绘制200万张彩票内200张中奖彩票,买多少张会中奖的概率,从1开始算概率,动图实现。

直接上代码:

fig = figure;

h = animatedline('linewidth',1,'Color','b', 'Marker','*','markersize',3,'MarkerEdgeColor','r');

n1=200000;%2e5;%总共彩票张数

n2=200;%200;%中奖张数

num1=50;%横轴间隔1

n_mid=6000;

num2=500;%横轴间隔2

n_num=n1/num1;%横轴点数1

n_num1=n_mid/num1;%横轴点数1

n_num2=n_num1+(n1-n_mid)/num2;%横轴点数2

y0=zeros(n1,1);

y0(1)=1;

y=zeros(n_num2,1);

y(1)=0;

x=linspace(1,n_num2,n_num2);%

k=0;

for m=1:1:n_num

if m<=n_mid/num1

k=k+1;

for i=1:m*num1

y0(i+1)=y0(i)*(n1-n2-m+1)/(n1-m+1);

end

y(k)=1-y0(m*num1);

x(k)=m*num1;

elseif (m>n_mid/num1) && (mod((m*num1-n_mid),num2)==0)

k=k+1;

for i=1:m*num1

y0(i+1)=y0(i)*(n1-n2-m+1)/(n1-m+1);

end

y(k)=1-y0(m*num1);

x(k)=m*num1;

end

%temp=[temp(2) i];

%plotx=10*[temp(m-1) temp(m)];

%ploty=[p(m-1) p(m)];

%plot(plotx,ploty,'*','linewidth',1,'markersize',6)%'markersize',6

%hold on

%pause(0.05)

end

im = cell(1, length(x));

for j = 1:length(x)

addpoints(h, x(j), y(j));

xlim([0,n1*0.03]);

ylim([0,1]);

drawnow

get(gca,'xtick'); % 得到坐标的实际大小

set(gca,'xticklabel',get(gca,'xtick')); % 将x显示的字符替换为实际大小

% 注释下面两句话可以看到动态输出

frame = getframe(fig);

im{j} = frame2im(frame);

end

下面是保存gif图片代码:

% 下面是保存成 gif

filename = 'test2.gif';

title('中奖概率')

%xabel('抽的张数')

%ylabel('中奖概率')

for idx = 1:length(x)

% 制作gif文件,图像必须是index索引图像

[A, map] = rgb2ind(im{idx}, 256);

if idx == 1

imwrite(A, map, filename, 'gif', 'LoopCount', Inf, 'DelayTime', 0.002);%0.002

else

imwrite(A, map, filename, 'gif', 'WriteMode', 'append', 'DelayTime', 0.002);

end

end

最终结果:

相关推荐

花呗怎么借钱出来 花呗怎么申请借钱到微信
365bet备用在线

花呗怎么借钱出来 花呗怎么申请借钱到微信

📅 07-26 👁️ 7781
dnf寂静城在哪里在哪 dnf寂静城怎么去
正规的365网站平台

dnf寂静城在哪里在哪 dnf寂静城怎么去

📅 07-16 👁️ 4375
千人斩粤语9.0
48365大写

千人斩粤语9.0

📅 07-02 👁️ 5620