2015-03-07 5 views
1

Когда в Matlab я использую openfig(filename);, чтобы открыть сохраненную фигуру, она всегда открывает новое окно. Все аргументы 'reuse' не загружают файл, если он уже открыт. Однако я хочу открыть файл в данную цифру и просто переписать его содержимое. Есть ли способ передать фигуру в openfig, или есть ли другая функция, которая выполнит это?Matlab openfig к существующему рисунку

Так в коде, что я хотел бы сделать что-то по следующим направлениям:

f = figure; 
openfig(filename, 'Figure',f); 

, а затем эта цифра будет отображаться на рисунке f, а не открыв второе окно фигуры.

+0

Какое поведение отличается от закрытия старой фигуры и открытия нового, чего вы ожидаете? – Daniel

+0

Меньше мерцания, в основном. Я просматриваю примерно 500 изображений и также должен масштабировать их до полного экрана. Наличие одного полноэкранного изображения, просто изменение его содержимого, было бы намного проще на моих глазах. – Paul

ответ

1

Я думаю, что вы можете организовать что-то близкое к тому, что вы хотите с помощью функции copyobj. Вот попытка с пристыкован фигурой:

% --- Create sample figure 
h = figure; 
ezplot('sin(x)'); 
set(gcf, 'Windowstyle', 'docked'); 

pause 

% --- Replace the axes 
clf 
g = openfig('test.fig', 'invisible'); 
copyobj(get(g, 'CurrentAxes'), h); 
delete(g); 

Что дает мне плавную замену осей, без мерцания рисунка.

Однако я не знаю, как это будет вести себя с полноэкранным рисунком, это, безусловно, зависит от выбранного вами метода. Проверьте также документ copyobj, он не копирует все, чтобы вы могли использовать опцию legacy.

+0

Я до сих пор не понимаю, почему Matlab может открывать png-файлы для переменной, а затем отображать переменную на любую фигуру, тогда как с файлами fig она должна обязательно создавать для нее новую фигуру. В любом случае ... спасибо за ваше решение. Он прекрасно выполняет свою работу. – Paul

Смежные вопросы