使用Matlab将多个图形Figure文件合并
0. 原由
Matlab使用過程中,會(huì)遇到需要將多個(gè)圖形Figure文件合并成一個(gè)文件的需求,便于在一個(gè)坐標(biāo)軸內(nèi)對(duì)曲線進(jìn)行合并的顯示和比較。如下圖:分別使用P控制、PID控制、模糊PID控制、神經(jīng)網(wǎng)絡(luò)PID控制方法,得到了某系統(tǒng)的階躍響應(yīng)結(jié)果,希望將四種控制方法的階躍響應(yīng)結(jié)果合并到同一圖形Figure下。
希望合并后的結(jié)果:
1. 思路
Matlab提供了函數(shù)copyobj,可以復(fù)制圖形對(duì)象及其子級(jí),可以以此實(shí)現(xiàn)多個(gè)圖形Figure文件的合并。
copyobj(h,p) % 將圖形對(duì)象p復(fù)制到對(duì)象h中具體步驟為:
- 選定目標(biāo)坐標(biāo)軸(axes)對(duì)象h;
- 獲取圖形Figure中各個(gè)坐標(biāo)軸(axes)對(duì)象中的曲線(Line)對(duì)象句柄hl和圖例(Legend)對(duì)象句柄hg;
- 使用copyobj函數(shù)將曲線hl復(fù)制到目標(biāo)坐標(biāo)軸h中;
- 為曲線對(duì)象添加圖例;
- 將合并后的Figure圖形保存成.fig文件。
2. 函數(shù)
筆者使用Matlab軟件開發(fā)了函數(shù)CombFigs.m,實(shí)現(xiàn)多個(gè)圖形Figure文件的合并,簡(jiǎn)單易用,下面通過實(shí)例詳細(xì)演示。
function CombFigs(varargin) % CombFigs(varargin)將不同figures圖片合并到一個(gè)figure中 % 調(diào)用格式 % 極簡(jiǎn)方式: % CombFigs() 不帶任何輸入?yún)?shù),將當(dāng)前目錄下所有fig文件合并成一個(gè)fig文件 % 默認(rèn)合并后的fig文件名為 合并Figure文件.fig % 指定目標(biāo)fig文件名: % CombFigs(figname) figname為合并后的fig文件名,將當(dāng)前目錄下所有fig文件合并為figname文件 % 指定目標(biāo)fig文件名和要合并的文件名稱 % CombFigs(figname,figfiles) figname為合并后的fig文件名, % figfiles為待合并的fig文件,cell數(shù)組格式,將figfiles文件合并為figname文件3. 演示
3.1 三條相位不同的正弦信號(hào)合并
%% 測(cè)試1: 三條相位不同的正弦信號(hào)合并 % 生成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') % 極簡(jiǎn)模式調(diào)用,將當(dāng)前目錄下所有fig文件合并為合并Figure文件.fig CombFigs()合并前圖形:
合并后圖形:
3.2 形狀拼圖合并
%% 測(cè)試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') % 將當(dāng)前目錄下所有fig文件合并為合并Figure文件.fig CombFigs('組合圖形',{'圖形1.fig','圖形2.fig','圖形3.fig','圖形4.fig','圖形5.fig'}) legend off合并前圖形:
合并后圖形:
3.3 不同控制方法階躍響應(yīng)曲線合并
%% 測(cè)試3 不同控制方法階躍響應(yīng)曲線合并 % 將當(dāng)前目錄下四種控制方法階躍響應(yīng)結(jié)果fig文件合并為控制對(duì)比.fig CombFigs('控制對(duì)比',{'P控制.fig','PID控制.fig','模糊PID控制輸出.fig','神經(jīng)網(wǎng)絡(luò)PID控制.fig'})合并前圖形:
合并后圖形:
3.4 百花爭(zhēng)艷圖合并
%% 測(cè)試4 百花爭(zhēng)艷圖合并 % 將當(dāng)前目錄下枝干、花、蝴蝶、兔子、月亮等fig文件合并為百花爭(zhēng)艷圖.fig CombFigs('百花爭(zhēng)艷圖',{'0-枝干.fig','1-花.fig','2-兔子.fig','3-蝴蝶.fig','4-月亮.fig'})合并前圖形:
合并后圖形:
4. 源程序下載
有Matlab/Simulink方面的技術(shù)問題,歡迎發(fā)送郵件至944077462@qq.com討論。更多Matlab/Simulink原創(chuàng)資料,歡迎關(guān)注微信公眾號(hào):Matlab Fans
使用Matlab將多個(gè)圖形Figure文件合并
總結(jié)
以上是生活随笔為你收集整理的使用Matlab将多个图形Figure文件合并的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++编程笔记:使用WinHTTP实现H
- 下一篇: ie退出全屏快捷键_讲解win7电脑全屏