myanchor 发表于 2006-8-3 15:11

再问:如何合并多个fig曲线图形文件

由于经常进行多个曲线的对比,需要合并多个已生成的fig格式的曲线图形文件。
不要用: plot多条曲线的方法,或是hold on进行复合
因为:1.已存在图形文件,plot 多条曲线就不行了。2.hold on 也是在生成图形文件时使用,但是图形文件已有了。
我刚学MATLAB 2个月左右,是一只小小菜鸟,请各位兄台帮帮忙!谢谢

myanchor 发表于 2006-8-3 23:34

请教各位教研室主任、教授及M友,我这个想法是不是在MATLAB里不能实现,是否有其他方法?

feifeifool 发表于 2006-8-4 12:26

可以对各个图进行句柄操作findobj,然后copyobj到一张图应该可以吧?!

[ 本帖最后由 feifeifool 于 2006-8-4 12:47 编辑 ]

feifeifool 发表于 2006-8-4 13:17

clc;clear;close all;
figure(1);x=;y=sin(x);plot(x,y);set(gcf,'name','f1');
figure(2);x=;y=10*sin(x);plot(x,y);set(gcf,'name','f2');
figure(3);x=;y=5*sin(x);plot(x,y);set(gcf,'name','f3');
%绘制图1、2、3,为了查找句柄设置图的名字为f1、f2、f3;
h1=findobj('name','f1');
h11=get(get(h1,'children'),'children');
h2=findobj('name','f2');
h22=get(get(h2,'children'),'children');
h3=findobj('name','f3');
h33=get(get(h3,'children'),'children');%查找三张图的轴的子句柄
figure;axes;建立新图!
newhandle=copyobj(,gca);
===========================================
前面finobj写的有点繁琐,不知道有没有更好的方法。
关键看你处理的图形多不多,如果太多,这种方法就效率太低了。

qzyxm 发表于 2006-8-4 14:33

非常有用,谢谢

bainhome 发表于 2006-8-4 14:50

my way:
function NewFigMerge
close all;
clc
for i=1:5
    x=linspace(0,2*pi);
    y=sin(i*x);
    plot(x,y);
    str=['h',num2str(i),'.fig'];
    hgsave(str)
    close(gcf)
end
h1=[];
for i=1:5
    str=['h',num2str(i),'.fig'];
    h(i)=hgload(str,struct('visible','off'));
    h1=;
end
hFig=figure;
hAxes=axes;
newh=copyobj(h1,hAxes);

[ 本帖最后由 bainhome 于 2006-8-4 15:09 编辑 ]

myanchor 发表于 2006-8-4 19:01

真心感谢!

谢谢大家对这个问题的关心和支持!
我查了两天多的资料,没有解决这个问题,便放弃了合并的想法。
昨晚熬到凌晨2点,手工完成一些曲线的合成。
刚看到大家的回帖,感激又兴奋,一定要好好学习MATLAB!
有机会争取也为论坛做一些贡献。

myanchor 发表于 2006-8-4 19:05

谢谢feifeifool 主任、bainhome ,及关注此贴的M友们

feifeifool 发表于 2006-8-4 20:13

回复 #5 qzyxm 的帖子

还是这个方法好!

微微 发表于 2006-8-14 16:21

没看明白怎么应用阿,我运行了这个程序是几个曲线的合成,烦请那位给解释一下阿,我是新手。谢谢

yejet 发表于 2006-8-14 21:39

原帖由 微微 于 2006-8-14 16:21 发表
没看明白怎么应用阿,我运行了这个程序是几个曲线的合成,烦请那位给解释一下阿,我是新手。谢谢

这个程序没看懂?

微微 发表于 2006-8-15 20:14

是阿,没怎么明白程序的意思啊,还请楼上给解释一下,程序里不是给出都是正弦曲线的合成,如果各个曲线的表达式不一样怎么办呢,不用plot 函数,怎么显示到同一个图里。或者是用一个程序,改变参数后分别得到的两个图像,怎么在一个坐标系下显示,谢谢

happy 发表于 2006-8-16 09:43

第一个问题是不是下面意思?

function NewFigMerge
close all;
clc

ff{1}='sin(x)';
ff{2}='x+1';
ff{3}='x*5';

for i=1:3
    x=linspace(0,2*pi);
    g=inline(ff{i});
    y=g(x);
    plot(x,y);
    str=['h',num2str(i),'.fig'];
    hgsave(str)
    close(gcf)
end
h1=[];
for i=1:3
    str=['h',num2str(i),'.fig'];
    h(i)=hgload(str,struct('visible','off'));
    h1=;
end
hFig=figure;
hAxes=axes;
newh=copyobj(h1,hAxes);

其中:
ff{1}='sin(x)';
ff{2}='x+1';
ff{3}='x*5';
分别表示三个不同的函数

happy 发表于 2006-8-16 09:46

第二个问题是否是下面的意思?

function NewFigMerge
close all;
clc

n=;

for i=1:5
    x=linspace(0,2*pi);
    y=sin(n(i)*x);
    plot(x,y);
    str=['h',num2str(i),'.fig'];
    hgsave(str)
    close(gcf)
end
h1=[];
for i=1:5
    str=['h',num2str(i),'.fig'];
    h(i)=hgload(str,struct('visible','off'));
    h1=;
end
hFig=figure;
hAxes=axes;
newh=copyobj(h1,hAxes);

其中:
n=;

表示对于函数sin(nt)中的n选取的不同参数

微微 发表于 2006-8-16 10:08

非常感谢happy 教授,明白了。
页: [1] 2
查看完整版本: 再问:如何合并多个fig曲线图形文件