我使用Matlab在一个循环中制作了大约1000个视频。视频包含一个1000x1000像素的数字,里面有不断改变的情节,由
启动h=figure('units','pixels','Position',[0 0 1000 1000])
每个视频包含约20-200帧,每个图包含5个子图和文本框(here is an example of one frame)。
当一个数字的图形尺寸突然只有1000 * 999像素时,大约800个视频(在循环内)的一切正常。当这个错误发生时,我试图调整高度,但是这样做有效。无论是拖动窗口,还是使用代码:
set(gcf, 'Units', 'pixels','Position',[0 0 1000 1000])
但我可以调整宽度。有谁知道会导致这个问题的原因?
编辑:当我使用opengl software
时,everthing工作正常,但质量远不如此。
基本循环(我试图尽可能缩短):
for i=1:length(idx) %loop over video
%Create figure and title
fh=figure('units','pixels','Position',[0 0 1000 1000])
subQ=subplot_tight(3,2,[1,2])
p_Q=plot(Q_time_num(idx_Q(i,1):idx_Q(i,2)), Q(idx_Q(i,1):idx_Q(i,2)),...
Q_time_num(idx_Q(i,1):idx_Q(i,2)), Q_trunc(idx_Q(i,1):idx_Q(i,2)),'--')
an_tit=annotation('textbox',[0.48 0.89 0.1 0.1],'String',tit_string)
set(an_tit, 'horizontalAlignment', 'center')
for i_s = 1:numel(ind) %loop over each frame
for ii=1:4length(fieldnames(Data)) %loop over the 4 subplots
if i_s==1
sub_p(ii)=subplot_tight(3,2,ii+2)
h1(ii)=plot(bord(:,2),bord(:,1),'color','k','linewidth',2,'Parent',sub_p(ii));
c(ii)=colorbar;
title([infos{ii,3},' - [',infos{ii,2},']'],'Interpreter','none')
hold on;
p(ii)=scatter(bord(cc,2),bord(cc,1),'MarkerEdgeColor',[0 0 0],...
'MarkerFaceColor',[0 0 0],'LineWidth',2,'Parent',sub_p(ii));
hold off;
end
hold on
[C,h2(ii)]=contourf(longitude,latitude,rot90(flipud(temp)),'Parent',sub_p(ii)) ;
clabel(C,h2(ii))
set(sub_p(ii),'Position',A(ii+1,:));
set(gcf, 'color', 'white');
uistack(h1(ii),'up',3)
uistack(p(ii),'up',3)
end
moving_img %save figure as frame
delete(line_Q);delete(h2(:)); delete(text_an)
end
close all
end