matlab两张图片合成一张_MATLAB|多个Figure图按子图合成一个Figure

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:30   1587   0

1. 问题描述

MATLAB第三方工具箱输出的图像,往往需要进一步处理,例如

mark

这两张图像,最好在MATLAB中合成到一个figure中显示,以便对比模态位移的差别。

2. 技术背景

MATLAB中的图像,实际上是一个对象集合,打开任意图像,输入gcf即显示当前图像的对象组成:

mark

其中与图像内容相关的子对象为

CurrentAxis

Children

每个坐标轴对象(CurrentAxis)又有自己的子对象:

mark

3. 解决方案

要将两个子图的图元重绘到新的figure,即需要将其中的坐标轴对象导出,复制到新的figure的子图中。关键函数为:

axChildren = get(ax(iloop),'Children');

copyobj(axChildren, gca);

4. 实施示例

4.1 打开需要重绘的两个figure

%% 子图读入

clc,clear,close all

fig(1) = open('fig1.fig'); % 打开fig文件

fig(2) = open('fig2.fig');

ax(1) = get(fig(1), 'CurrentAxes'); % 获取坐标轴对象

ax(2) = get(fig(2), 'CurrentAxes');

mark

4.2 复制坐标轴对象到新的figure

figure

for iloop = 1:2

subplot(1,2,iloop) % 子图循环

axChildren = get(ax(iloop),'Children'); % 获取axes所有子对象

copyobj(axChildren, gca); % 复制对象到子图的axes

ylim([0 20]),grid on % 图像参数设置

xlabel('normalized mode shape')

ylabel('radius [mm]')

title(str_title{iloop})

end

mark

5. 常见问题

需要注意的是,仅拷贝子图对象,可能会丢失一些图像定义,如legend等,与原图不完全相同,还需要一定的自定义设置。

mark

示例代码详见:

本文用时 30 m

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP