使用Matlab将多个图形Figure文件合并
生活随笔
收集整理的这篇文章主要介绍了
使用Matlab将多个图形Figure文件合并
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
0. 原由
Matlab使用过程中,会遇到需要将多个图形Figure文件合并成一个文件的需求,便于在一个坐标轴内对曲线进行合并的显示和比较。如下图:分别使用P控制、PID控制、模糊PID控制、神经网络PID控制方法,得到了某系统的阶跃响应结果,希望将四种控制方法的阶跃响应结果合并到同一图形Figure下。
希望合并后的结果:
1. 思路
Matlab提供了函数copyobj,可以复制图形对象及其子级,可以以此实现多个图形Figure文件的合并。
copyobj(h,p) % 将图形对象p复制到对象h中具体步骤为:
- 选定目标坐标轴(axes)对象h;
- 获取图形Figure中各个坐标轴(axes)对象中的曲线(Line)对象句柄hl和图例(Legend)对象句柄hg;
- 使用copyobj函数将曲线hl复制到目标坐标轴h中;
- 为曲线对象添加图例;
- 将合并后的Figure图形保存成.fig文件。
2. 函数
笔者使用Matlab软件开发了函数CombFigs.m,实现多个图形Figure文件的合并,简单易用,下面通过实例详细演示。
function CombFigs(varargin) % CombFigs(varargin)将不同figures图片合并到一个figure中 % 调用格式 % 极简方式: % CombFigs() 不带任何输入参数,将当前目录下所有fig文件合并成一个fig文件 % 默认合并后的fig文件名为 合并Figure文件.fig % 指定目标fig文件名: % CombFigs(figname) figname为合并后的fig文件名,将当前目录下所有fig文件合并为figname文件 % 指定目标fig文件名和要合并的文件名称 % CombFigs(figname,figfiles) figname为合并后的fig文件名, % figfiles为待合并的fig文件,cell数组格式,将figfiles文件合并为figname文件3. 演示
3.1 三条相位不同的正弦信号合并
%% 测试1: 三条相位不同的正弦信号合并 % 生成fig文件 t = linspace(0,4*pi,100); y1 = sin(t); y2 = 1.2*sin(t+pi/3); y3 = 0.9*sin(t+2*pi/3); hf1 = figure; plot(t,y1,'b') hf2 = figure; plot(t,y2,'r--') hf3 = figure; plot(t,y3,'k-.') savefig(hf1,'正弦曲线1.fig') savefig(hf2,'正弦曲线2.fig') savefig(hf3,'正弦曲线3.fig') % 极简模式调用,将当前目录下所有fig文件合并为合并Figure文件.fig CombFigs()合并前图形:
合并后图形:
3.2 形状拼图合并
%% 测试2 % 生成fig文件 x1=[0 1 1];y1=[3 3 2]; x2=[1 2 2 1];y2=[3 3 2 2]; x3=[2 3 3 2];y3=[3 3 2 2]; x4=[0 2 0];y4=[3 1 1]; x5=[1 3 3];y5=[2 2 0]; x6=[0 2 3 0];y6=[1 1 0 0]; hf1 = figure; fill(x1,y1,'y'); hf2 = figure; fill(x2,y2,'m'); hold on fill(x3,y3,'c'); hf3 = figure; fill(x4,y4,'r'); hf4 = figure; fill(x5,y5,'b'); hf5 = figure; fill(x6,y6,'g'); savefig(hf1,'图形1.fig') savefig(hf2,'图形2.fig') savefig(hf3,'图形3.fig') savefig(hf4,'图形4.fig') savefig(hf5,'图形5.fig') % 将当前目录下所有fig文件合并为合并Figure文件.fig CombFigs('组合图形',{'图形1.fig','图形2.fig','图形3.fig','图形4.fig','图形5.fig'}) legend off合并前图形:
合并后图形:
3.3 不同控制方法阶跃响应曲线合并
%% 测试3 不同控制方法阶跃响应曲线合并 % 将当前目录下四种控制方法阶跃响应结果fig文件合并为控制对比.fig CombFigs('控制对比',{'P控制.fig','PID控制.fig','模糊PID控制输出.fig','神经网络PID控制.fig'})合并前图形:
合并后图形:
3.4 百花争艳图合并
%% 测试4 百花争艳图合并 % 将当前目录下枝干、花、蝴蝶、兔子、月亮等fig文件合并为百花争艳图.fig CombFigs('百花争艳图',{'0-枝干.fig','1-花.fig','2-兔子.fig','3-蝴蝶.fig','4-月亮.fig'})合并前图形:
合并后图形:
4. 源程序下载
有Matlab/Simulink方面的技术问题,欢迎发送邮件至944077462@qq.com讨论。更多Matlab/Simulink原创资料,欢迎关注微信公众号:Matlab Fans
使用Matlab将多个图形Figure文件合并
总结
以上是生活随笔为你收集整理的使用Matlab将多个图形Figure文件合并的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: C++编程笔记:使用WinHTTP实现H
- 下一篇: ie退出全屏快捷键_讲解win7电脑全屏