MATLAB|多个Figure图按子图合成一个Figure

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 《裕语言》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 28,571评论 5 20
  • 写在之前 因为简书字数限制,完整版地址:https://www.zybuluo.com/hainingwyx/no...
    hainingwyx阅读 14,764评论 0 41
  • 原文:http://blog.csdn.net/eagleest/article/details/38734111...
    mogu酱阅读 11,442评论 1 25
  • 这两天在读斋藤孝的《学会学习 从认知自我到高效学习》,因为是计划中的任务,期间推掉一次宴会一次户外拓展。这本书的题...
    坐困孤城阅读 1,742评论 0 0
  • 曾经的一天 突然就好像丢失了自己 身旁没了你 令我窒息 大海边上的沙砾 被蹂躏的粉碎 阳光下没了阴影 就算杀了我又...
    皆非_lx阅读 1,396评论 2 2

友情链接更多精彩内容