使用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电脑全屏