再问:如何合并多个fig曲线图形文件
由于经常进行多个曲线的对比,需要合并多个已生成的fig格式的曲线图形文件。不要用: plot多条曲线的方法,或是hold on进行复合
因为:1.已存在图形文件,plot 多条曲线就不行了。2.hold on 也是在生成图形文件时使用,但是图形文件已有了。
我刚学MATLAB 2个月左右,是一只小小菜鸟,请各位兄台帮帮忙!谢谢 请教各位教研室主任、教授及M友,我这个想法是不是在MATLAB里不能实现,是否有其他方法? 可以对各个图进行句柄操作findobj,然后copyobj到一张图应该可以吧?!
[ 本帖最后由 feifeifool 于 2006-8-4 12:47 编辑 ] 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写的有点繁琐,不知道有没有更好的方法。
关键看你处理的图形多不多,如果太多,这种方法就效率太低了。 非常有用,谢谢 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 编辑 ]
真心感谢!
谢谢大家对这个问题的关心和支持!我查了两天多的资料,没有解决这个问题,便放弃了合并的想法。
昨晚熬到凌晨2点,手工完成一些曲线的合成。
刚看到大家的回帖,感激又兴奋,一定要好好学习MATLAB!
有机会争取也为论坛做一些贡献。 谢谢feifeifool 主任、bainhome ,及关注此贴的M友们
回复 #5 qzyxm 的帖子
还是这个方法好! 没看明白怎么应用阿,我运行了这个程序是几个曲线的合成,烦请那位给解释一下阿,我是新手。谢谢 原帖由 微微 于 2006-8-14 16:21 发表没看明白怎么应用阿,我运行了这个程序是几个曲线的合成,烦请那位给解释一下阿,我是新手。谢谢
这个程序没看懂? 是阿,没怎么明白程序的意思啊,还请楼上给解释一下,程序里不是给出都是正弦曲线的合成,如果各个曲线的表达式不一样怎么办呢,不用plot 函数,怎么显示到同一个图里。或者是用一个程序,改变参数后分别得到的两个图像,怎么在一个坐标系下显示,谢谢 第一个问题是不是下面意思?
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';
分别表示三个不同的函数 第二个问题是否是下面的意思?
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选取的不同参数 非常感谢happy 教授,明白了。
页:
[1]
2