Очевидно, мы не знаем, насколько «прикольны» ваши цифры, но следует отметить, что в таком случае самым чистым решением было бы модифицировать функцию 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
( примечание: это в основном то же самое решение, которое было дано в другом вопросе , но, поскольку вы упомянули о проблемах с адаптацией, я решил переформатировать его, чтобы лучше соответствовать вашей конкретной ситуации):
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 используется только для генерации позиции для листов осей.Вы можете избежать необходимости создавать, а затем удалять подзаговоры, указав позиции самостоятельно.