6

这应该是一个简单的解决方案的问题,但我仍然无法找到一个。

假设我有 2 个 matlab 图形fig1.figfig2.fig我想在同一个绘图窗口中加载并显示它们。

我应该怎么办?

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

4

3 回答 3

18

不清楚是要从图中提取数据并比较数据,还是要将两个图的图合并为一个图。

这是您将两个数字合二为一的方法(如果那是您想要做的)..

首先加载数字:

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

从图中获取坐标区对象

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

现在将 hangle 图形对象从 复制ax2ax1如果您的图形只有一个轴,则不需要循环

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

注意此示例假定您的图形具有相同的轴数,并且您希望将对象从第二个图形的第一个轴复制到第一个图形的第一个轴。如果轴索引未对齐,则由您决定正确的索引。

于 2012-11-07T18:54:02.793 回答
9

斯莱顿给出的答案很好。这是另一个提示:如果您在两个单独的 Matlab 图形窗口中打开了两个绘图,请不要忘记您可以点击复制正确的绘图。通过单击 Matlab 图形窗口中的箭头指针,然后单击绘制的线来执行此操作。复制(绘制线、文本框等)对象。然后,同样在另一个 Matlab 图形窗口中选择轴并粘贴。

我给出了这个“愚蠢”的解决方案,因为它已被证明在协作会议中很有用。在某人(例如您的顾问)面前点击复制可以准确传达正在比较的曲线,并且它可以防止您不得不在其他人面前启动代码。

于 2012-11-07T19:11:52.093 回答
2

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

于 2014-01-01T21:40:13.807 回答