1. 問(wèn)題描述
MATLAB第三方工具箱輸出的圖像权烧,往往需要進(jìn)一步處理翠肘,例如
這兩張圖像檐束,最好在MATLAB中合成到一個(gè)figure中顯示,以便對(duì)比模態(tài)位移的差別锯茄。
2. 技術(shù)背景
MATLAB中的圖像厢塘,實(shí)際上是一個(gè)對(duì)象集合茶没,打開(kāi)任意圖像,輸入gcf
即顯示當(dāng)前圖像的對(duì)象組成:
其中與圖像內(nèi)容相關(guān)的子對(duì)象為
- CurrentAxis
- Children
每個(gè)坐標(biāo)軸對(duì)象(CurrentAxis)又有自己的子對(duì)象:
3. 解決方案
要將兩個(gè)子圖的圖元重繪到新的figure晚碾,即需要將其中的坐標(biāo)軸對(duì)象導(dǎo)出抓半,復(fù)制到新的figure的子圖中。關(guān)鍵函數(shù)為:
- axChildren = get(ax(iloop),'Children');
- copyobj(axChildren, gca);
4. 實(shí)施示例
4.1 打開(kāi)需要重繪的兩個(gè)figure
%% 子圖讀入
clc,clear,close all
fig(1) = open('fig1.fig'); % 打開(kāi)fig文件
fig(2) = open('fig2.fig');
ax(1) = get(fig(1), 'CurrentAxes'); % 獲取坐標(biāo)軸對(duì)象
ax(2) = get(fig(2), 'CurrentAxes');
4.2 復(fù)制坐標(biāo)軸對(duì)象到新的figure
figure
for iloop = 1:2
subplot(1,2,iloop) % 子圖循環(huán)
axChildren = get(ax(iloop),'Children'); % 獲取axes所有子對(duì)象
copyobj(axChildren, gca); % 復(fù)制對(duì)象到子圖的axes
ylim([0 20]),grid on % 圖像參數(shù)設(shè)置
xlabel('normalized mode shape')
ylabel('radius [mm]')
title(str_title{iloop})
end
5. 常見(jiàn)問(wèn)題
需要注意的是格嘁,僅拷貝子圖對(duì)象笛求,可能會(huì)丟失一些圖像定義,如legend等糕簿,與原圖不完全相同探入,還需要一定的自定義設(shè)置。
示例代碼詳見(jiàn):
- https://git.coding.net/frank0449/matlab.git
- matlab /1612_figureSubplot /
本文用時(shí) 30 m