Для этой задачи вы, вероятно, можете использовать встроенную функцию Matlab copyobj
, которая делает именно это (то есть первый вариант, упомянутый в вашем вопросе).
Следующий фрагмент кода демонстрируетего использование:
h1=figure;
a1=plot((1:100),rand(1,100),'r-');
hold on
plot((1:100),rand(1,100),'b+');
legend({'plot1';'plot2'});
h2=figure;
copyobj(get(h1,'children'),h2);
Надеюсь, что оно работает и в вашем случае.
ОБНОВЛЕНИЕ: Насколько я понимаю, ваше второе решение будет включать saveas
функция, которая, к сожалению, работает с окружением фигуры, а не с осями (как вы это испытали).Поэтому обходной путь, вероятно, будет включать копирование нужных осей на новую фигуру с помощью метода, описанного выше, и затем использовать saveas
.