У меня было две идеи:
использовать функцию "Файл> Создать код ...".MATLAB создаст функцию, которая воссоздает фигуру с любой модификацией, которую вы сделали в интерактивном режиме.
вручную извлекает свойства, представляющие интерес для манипулируемых объектов, и применяет их снова при повторном запуске сценариев.Вы можете сохранить список дескрипторов для этих графических объектов или даже использовать 'Tag'
в сочетании с функцией FINDOBJ для определения местоположения таких объектов.
Я проиллюстрирую последнюю идею с помощьюпример:
Когда скрипт запускается впервые, мы даем пользователю возможность вносить изменения в рисунки в интерактивном режиме.После этого мы извлекаем свойство 'Position'
фигур и всех дочерних компонентов, содержащихся в них.Эти значения затем сохраняются в MAT-файл.
Теперь пользователь настраивает некоторые параметры и перезапускает скрипт.Проверяем наличие MAT-файла.Если он существует, мы загружаем сохраненные значения позиций и применяем их к фигурам и их объектам-потомкам, восстанавливая таким образом компоненты до их последнего сохраненного состояния.
Это решение является довольно упрощенным, поэтому, если изменения вносятся вскрипт, нарушающий иерархию графических дескрипторов, вам придется удалить MAT-файл и снова запустить скрипт.
%# close all figures
close all
%# your script which creates figures
figure, plot(rand(100,1))
figure
subplot(121), plot( cos(linspace(0,6*pi,100)) )
subplot(122), image, axis image, axis ij
%# check for MAT-file
if exist('script_prefs.mat','file')
%# load saved values
load script_prefs.mat
%# get opened figures, and find objects with a position property
fig = get(0, 'Children'); %# allchild(0)
obj = findobj(fig, '-property','position');
try
%# apply values to position property
set(fig, {'Position'},figPos);
set(obj, {'Position'},objPos);
catch
%# delete MAT-file
delete script_prefs.mat
end
else
%# get opened figures, and find objects with a position property
fig = get(0, 'Children');
obj = findobj(fig, '-property','position');
%# wait for the user to finish customizing
waitFig = figure('Menubar','none', 'Position',[200 200 200 40]);
h = uicontrol('Units','normalized', 'Position',[0 0 1 1], ...
'String','Done?', 'Callback','uiresume(gcbf)');
uiwait(waitFig);
close(waitFig);
%# get position property of figures and tagged objects
figPos = get(fig, 'Position');
objPos = get(obj, 'Position');
%# save values to file
save script_prefs.mat figPos objPos
end