2012-11-07 167 views
6

这应该是一个小问题,但仍然无法找到一个解决方案。如何将两个图形文件合并为一个文件

假设我有2个matlab数字fig1.fig,fig2.fig我想要加载并显示在同一个绘图窗口中。

我该怎么办?

我的意思是,我很确定我可以使用一些低(er)级别的图形命令完成任务,该命令从一幅图像中提取内容并将它们放入第二个图像,但我不敢相信没有任何高(load fig2 on top of fig1)这样做...比较2个地块(不幸已经保存)是一个非常普遍的任务,我会说。

+1

这是一个常见的任务,但通常的做法是重新绘制数据(至少在我的经验中)。任何你无法重新生成数据的理由? – John

+1

'.fig'文件已经存在;它们由不同的代码生成,其结果我想比较。他们需要一段时间才能运行,而不是找出操纵图形的方法。 :( – Acorbe

+0

嗯,另一个窍门是将相关数据存储到文件中,并在稍后阅读。意识到这可能不适用于您的情况。 – John

回答

17

它不清楚您是否想从数字中提取数据并比较数据,或者如果您想将两个数字的图组合成一个数字。

这里是你如何将两个数字为一个(如果那是你想要做什么)..

首先加载数字:

fig1 = open('FigureFile1.fig'); 
fig2 = open('FigureFile2.fig'); 

获取轴从附图中的物体

ax1 = get(fig1, 'Children'); 
ax2 = get(fig2, 'Children'); 

现在将挂钩图形对象从ax2复制到ax1的循环不是neccesary如果你的人物只有一个轴

for i = 1 : numel(ax2) 
    ax2Children = get(ax2(i),'Children'); 
    copyobj(ax2Children, ax1(i)); 
end 

注意这个例子假设你的人物有轴相同的2-14,并且要复制从第一轴对象第一个图上的第一个轴与第二个图相对应。如果轴索引不排列,它可以让你找出合适的索引。

+0

谢谢,我在努力。 – Acorbe

+0

我想我是在笔记的情况下..两个人物之一有一个2x1的副剧情节。 – Acorbe

+0

精彩!!谢谢!有用! – Acorbe

9

slayton给出的答案很好。这里有另一个提示:如果你在两个独立的Matlab图窗口中打开两个图,不要忘记你可以点击复制适当的图。通过单击Matlab图形窗口中的箭头指针,然后单击绘制的线来完成此操作。复制(绘制线条,文本框等...)对象。然后,在其他Matlab图形窗口中同样选择轴并粘贴。

我给这个'愚蠢'的解决方案,因为它已被证明是有用的协作会议。在某人面前点击复制(比如你的顾问)可以准确地传达比较哪些曲线,并防止你在别人面前激发代码。

+0

这也不错。 – Acorbe

2

对于每个图,您还可以转到菜单中的文件生成代码。 然后将它们复制并粘贴到同一个mfile文件中,并在两者之间保留“,并更改与外观相关的详细信息。 然后运行新的m文件。

相关问题