Ответ 1
Очевидно, мы не знаем, как "фанки" ваши цифры, но в этом случае следует отметить, что самым чистым решением было бы изменить функцию myFunkyFigure
таким образом, чтобы она принимала дополнительные необязательные аргументы, в частности дескриптор осей, в который можно разместить созданный сюжет. Тогда вы будете использовать его так:
hSub1 = subplot(2,1,1); %# Create a subplot
myFunkyFigure(dataSet1,hSub1); %# Add a funky plot to the subplot axes
hSub2 = subplot(2,1,2); %# Create a second subplot
myFunkyFigure(dataSet2,hSub2); %# Add a funky plot to the second subplot axes
Поведение по умолчанию myFunkyFigure
(т.е. никаких дополнительных аргументов) было бы создать его собственную фигуру и разместить там график.
Однако, чтобы ответить на вопрос, который вы задали, вот способ выполнить это, учитывая, что вы выводите дескрипторы оси (а не фигурные ручки) в вектор fig
( note:, это в основном то же самое решение, что и в другом вопросе, но, поскольку вы упоминаете, что не можете его адаптировать, я решил переформатировать его, чтобы лучше соответствовать вашей конкретной ситуации):
hFigure = figure(); %# Create a new figure
hTemp = subplot(2,1,1,'Parent',hFigure); %# Create a temporary subplot
newPos = get(hTemp,'Position'); %# Get its position
delete(hTemp); %# Delete the subplot
set(fig(1),'Parent',hFigure,'Position',newPos); %# Move axes to the new figure
%# and modify its position
hTemp = subplot(2,1,2,'Parent',hFigure); %# Make a new temporary subplot
%# ...repeat the above for fig(2)
Вышеупомянутое фактически переместит оси с старого рисунка на новый. Если вы хотите, чтобы объект осей отображался на обеих фигурах, вы можете вместо этого использовать функцию COPYOBJ:
hNew = copyobj(fig(1),hFigure); %# Copy fig(1) to hFigure, making a new handle
set(hNew,'Position',newPos); %# Modify its position
Также обратите внимание, что SUBPLOT используется здесь только для создания позиции для разбиения осей. Вы могли бы избежать необходимости создавать, а затем удалять подсети, указав сами позиции.