解決問題:已經畫好了多個figure,在不重復添加畫圖程序時,將多個圖合為一個圖。
通常我們會將各個圖單獨畫出來看效果,但是寫文章過程中,經常為了排版等問題,需要將幾個圖分別以子圖的形式合為一個圖,這時候使用subplot,然后將各個圖重新在子圖中畫出,但是這種方法,我們需要將這些的畫圖程序重新寫一遍或者復制一遍,在這里我們使用一個創建子對象的方法實現,不需要再添加畫圖程序。
MATLAB中的圖像,實際上是一個對象集合,打開任意圖像,輸入gcf就顯示當前圖像的對象組成:
其中與圖像內容相關的子對象為:Children和CurrentAxes。
每個坐標軸對象(CurrentAxis)又有自己的子對象:
解決方法:
如果將兩個圖做為子圖重繪到新的figure,即需要將其中的坐標軸對象導出,復制到新的figure的子圖中。
程序如下:
clear; clc; close all; t = 0:0.001:10; y1 = sin(t); y2 = cos(t); figure(1); plot(t,y1); figure(2); plot(t,y2); fig(1) = get(figure(1), 'CurrentAxes'); fig(2) = get(figure(2), 'CurrentAxes'); figure(3); subplot(2,1,1); axChildren = get(fig(1),'Children'); copyobj(axChildren, gca); subplot(2,1,2); axChildren = get(fig(2),'Children'); copyobj(axChildren, gca);
程序運行結果:
figure 1:
figure 2:
figure 3: