如何多次保存同一个图形?
How to save same figure many times?
我试图为 fgoalattain 的每次迭代保存一个文件。我每次都打印这个数字就好了。但是使用 savefig 函数将每次迭代保存为完全相同的名称,这会擦除以前的迭代数字。如何为每个生成一个唯一的已保存图形?
figure
%TEST diff 200, 100, 50 FOR TIMES
while diff > 200
iterations = iterations +1;
disp('running fgoalattain')
xz = fgoalattain(obj_Func,xz,goal,weight,[],[],[],[],zeros(x3,x3),ones(x3,x3),[],Options);
diff = sum(sum(abs(xz - a),2));
pcolor(xz)
drawnow
savefig('iterpic.fig');
end
简单:使用计数器和 sprintf
创建唯一的文件名
figure
%TEST diff 200, 100, 50 FOR TIMES
kk = 1; %//counter of files
while diff > 200
iterations = iterations +1;
disp('running fgoalattain')
xz = fgoalattain(obj_Func,xz,goal,weight,[],[],[],[],zeros(x3,x3),ones(x3,x3),[],Options);
diff = sum(sum(abs(xz - a),2));
pcolor(xz)
drawnow
kk = kk+1;
savefilename = sprintf('interpic%d.fig',kk); %//get filename
savefig(savefilename);
end
sprintf
根据指定的格式生成字符串,即本例中的 interpic%d.fig
。 %d
是调用变量并将其表示为整数的参数,位于逗号之后,在本例中为 kk
。
savefig 的参数是文件名,因为它不会改变,所以您每次都只是覆盖同一个文件。
试试这样的东西:
savefig(sprintf('interpic-%d.fig',iterations));
将迭代编号附加到文件名。
我试图为 fgoalattain 的每次迭代保存一个文件。我每次都打印这个数字就好了。但是使用 savefig 函数将每次迭代保存为完全相同的名称,这会擦除以前的迭代数字。如何为每个生成一个唯一的已保存图形?
figure
%TEST diff 200, 100, 50 FOR TIMES
while diff > 200
iterations = iterations +1;
disp('running fgoalattain')
xz = fgoalattain(obj_Func,xz,goal,weight,[],[],[],[],zeros(x3,x3),ones(x3,x3),[],Options);
diff = sum(sum(abs(xz - a),2));
pcolor(xz)
drawnow
savefig('iterpic.fig');
end
简单:使用计数器和 sprintf
figure
%TEST diff 200, 100, 50 FOR TIMES
kk = 1; %//counter of files
while diff > 200
iterations = iterations +1;
disp('running fgoalattain')
xz = fgoalattain(obj_Func,xz,goal,weight,[],[],[],[],zeros(x3,x3),ones(x3,x3),[],Options);
diff = sum(sum(abs(xz - a),2));
pcolor(xz)
drawnow
kk = kk+1;
savefilename = sprintf('interpic%d.fig',kk); %//get filename
savefig(savefilename);
end
sprintf
根据指定的格式生成字符串,即本例中的 interpic%d.fig
。 %d
是调用变量并将其表示为整数的参数,位于逗号之后,在本例中为 kk
。
savefig 的参数是文件名,因为它不会改变,所以您每次都只是覆盖同一个文件。
试试这样的东西:
savefig(sprintf('interpic-%d.fig',iterations));
将迭代编号附加到文件名。