web-dev-qa-db-ja.com

2つのFigureファイルを1つのファイルにマージする方法

これは些細な解決策では問題になるはずですが、それでも私はそれを見つけることができませんでした。

同じプロットウィンドウにロードして表示したい2つのMATLABフィギュアfig1.figfig2.figがあるとします。

私は何をすべきか?

つまり、1つの画像からコンテンツを抽出して2番目の画像に配置する、低レベルのグラフィックコマンドを使用してタスクを実行できると確信していますが、高レベルの関数がないことは信じられません(load fig2 on top of fig1)これを行う... 2つのプロット(残念ながらすでに保存されている)を比較することは非常に一般的なタスクだと思います。

6
Acorbe

図からデータを抽出してデータを比較するのか、2つの図のプロットを1つの図に結合するのかは明確ではありません。

2つの図を1つに組み合わせる方法は次のとおりです(それが必要な場合)。

最初に図をロードします。

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

図からAxesオブジェクトを取得します

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

次に、ハングルグラフィックスオブジェクトをax2からax1にコピーします。 フィギュアに軸が1つしかない場合は、ループは必要ありません

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

この例では、図の軸の数が同じであり、2番目の図の最初の軸から最初の図の最初の軸にオブジェクトをコピーすることを前提としています。軸のインデックスが揃っていない場合は、適切なインデックスを作成するのはあなた次第です。

18
slayton

スレイトンが与えた答えは良いです。もう1つのヒントは次のとおりです。2つの別々のMatlabフィギュアウィンドウで2つのプロットを開いている場合は、適切なプロットをポイントアンドクリックでコピーできることを忘れないでください。これを行うには、MatlabのFigureウィンドウで矢印ポインターをクリックしてから、プロットされた線をクリックします。 (プロットされた線、テキストボックスなど)オブジェクトをコピーします。次に、他のMatlabFigureウィンドウで同様に軸を選択して貼り付けます。

この「ばかげた」ソリューションは、コラボレーション会議で役立つことが証明されているためです。誰か(アドバイザーなど)の前でポイントアンドクリックでコピーすると、比較されている曲線が正確に伝わり、他の人の前でコードを起動する必要がなくなります。

9
Sam

プロットごとに、メニューの[ファイル]の[コードの生成]に移動することもできます。次に、両方を同じmfileにコピーして貼り付けます。その間に「保留」を入れ、外観に関連する詳細を変更します。次に、新しいmファイルを実行します。

2
FSH